1 / 32

基于 hadoop 的数据仓库技术

基于 hadoop 的数据仓库技术. 目录. Hadoop 简介 HDFS (Hadoop Distributed File System) MapReduce Hive. 本文的内容主要来自三篇 hadoop 领域的核心论文 1 、 Hive—A Petabyte Scale Data Warehouse Using Hadoop 2 、 MapReduce and Parallel DBMSs:Friends or Foes

Download Presentation

基于 hadoop 的数据仓库技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 基于hadoop的数据仓库技术

  2. 目录 • Hadoop简介 • HDFS (Hadoop Distributed File System) • MapReduce • Hive 本文的内容主要来自三篇hadoop领域的核心论文 1、Hive—A Petabyte Scale Data Warehouse Using Hadoop 2、MapReduce and Parallel DBMSs:Friends or Foes 3、Cheetah:A High Performance,Custom Data Warehouse on Top of MapReduce

  3. 历史 • 2002-2004: Apache Nutch • 2004-2006: • Google 发表 GFS 和 MapReduce相关论文 • Apache 在Nutch中实现HDFS和MapReduce • 2006-2008: • Hadoop 项目从Nutch中分离 • 2008年7月,Hadoop赢得Terabyte Sort Benchmark

  4. Doug Cutting Hadoop项目负责人

  5. Hadoop简介 • Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。

  6. Hadoop简介 • Hadoop是 Apache 的一个开源软件项目,由Doug Cutting在2004年开始开发。 • Hadoop是一个海量数据存储和计算的分布式系统,它由若干个成员组成,主要包括:HDFS、MapReduce、HBase、Hive、Pig 和 ZooKeeper, 其中HDFS是Google的GFS开源版本, HBase 是Google的 BigTable开源版本,ZooKeeper是Google的Chubby开源版本。 • Hadoop在大量的公司中被使用和研究

  7. Hadoop的体系架构 Hadoop由以下几个部件组成: Hadoop Common: The common utilities that support the other Hadoop subprojects. Avro: A data serialization system that provides dynamic integration with scripting languages. Chukwa: A data collection system for managing large distributed systems. HBase: A scalable, distributed database that supports structured data storage for large tables. HDFS: A distributed file system that provides high throughput access to application data. Hive: A data warehouse infrastructure that provides data summarization and ad hoc querying. MapReduce: A software framework for distributed processing of large data sets on compute clusters. Pig: A high-level data-flow language and execution framework for parallel computation. ZooKeeper: A high-performance coordination service for distributed applications.

  8. Hadoop的体系架构

  9. Hadoop--HDFS • HDFS的结构按照GFS设计 • A GFS cluster consists of a single master and multiple • chunkservers and is accessed by multiple clients

  10. HDFS • Fault-tolerant, 容错性 • Run on commodity hardware,在通用的机器上运行 • Scalable 可扩缩的 1个namenode 多个datanodes http://hadoop.apache.org/hdfs/docs/current/hdfs_design.html http://labs.google.com/papers/gfs.html

  11. HDFS • NameNode • 存贮HDFS的元数据(metadata) • 管理文件系统的命名空间(namespace) • 创建、删除、移动、重命名文件和文件夹 • 接收从DataNode来的Heartbeat 和 Blockreport • DataNode • 存贮数据块 • 执行从Namenode来的文件操作命令 • 定时向NameNode发送Heartbeat和Blockreport 11 11

  12. Heartbeat和Blockreport Datanode 1 Namenode Metadata: <1,(1,2)> <2,(2,3) > <3,(1,3)> 1 1,3 3 1,2 Datanode 2 1 2 2,3 Datanode 3 2 3

  13. Data Flow • File Read 13 13 13

  14. Data Flow • File Write 14 14 14

  15. MapReduce的原理 • 编程模型(program model),软件包 • Map • 把要处理的数据组合成一个个的<key, value>对(pair) • Reduce • 把具有相同key的pair聚集在一起,计算一个新的value,从而得到一个新的<key, value>并输出。

  16. MapReduce的原理

  17. Mapreduce 控制 一个Jobtracker 多个tasktrackers 数据流

  18. MapReduce • Jobtraker (Master) • 接收任务(job)的提交 • 提供任务的监控(monitoring)和控制(control) • 把job划分成多个tasks,交给Tasktracker执行,并管理这些tasks的执行 • Tasktracker (Worker) • 管理单个task的map任务和reduce任务的执行

  19. Word count: file0: hello world file1: hello mapreduce file2: bye bye file0 <“hello”, 1> <“world”, 1> <0, “hello world”> Input files file1 <“hello”, 1> <“mpareduce”, 1> <0, “hello mapreduce”> <“hello”, 2> <“world”, 1> <“mapreduce”, 1> <“bye”, 2> file2 <“bye”, 2> <0, “bye bye”> files <line offset, line content> <word, count> <word, count> files

  20. 目录 • Hadoop简介 • HDFS (Hadoop Distributed File System) • MapReduce • Hive • Hadoop的企业级应用

  21. What is HIVE • 数据仓库业务具有多样性、多变性和逻辑复杂性,传统的Parallel DBMSs只能使用SQL语句,语言表达力不够应付现有的类似google,facebook等的数据仓库需求(若使用UDF或UDA自己定义aggregate,则失去了其强大的优化功能),而自己定制的maper和reducer的代码较为低层比较繁琐且重用性也不好,所以就有了Hive,提供一个类SQL的编程接口,简单又不失灵活性,且基于map-reduce.

  22. What is HIVE • (论文翻译)hive是一个基于hadoop的数据仓库。使用hadoop-hdfs作为数据存储层;提供类似SQL的语言(HQL),通过hadoop-mapreduce完成数据计算;通过HQL语言提供使用者部分传统RDBMS一样的表格查询特性和分布式存储计算特性。 • (百科)hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

  23. HIVE架构 1、 操作界面:CLI,Web,Thrift 2、 driver:hive系统将用户操作转化为mapreduce计算的模块(重点) 3、 hadoop:hdfs+mapreduce 4、 metastore:存储元数据

  24. HIVE结合HBase

  25. reduce阶段写入HBase的方式

  26. map-only job写入HBase的方式

  27. HIVE的实现 • hive的元数据存储在传统的RDBMS中,现在为mysql中。采用JDO (JPOX)。 • 原因:访问这些Metadata,我们想要“很低的延时”,而存在hdfs中是无法满足。(元数据对hive是相当重要的,因此一般要求有备份机制 ) • 使用:元数据都是在HQL语句编译的时候 ,就被生成一个xml文件(包含此次编译所有需要的元数据信息)存储在hdfs中,然后运行mapreduce时传递给mapper和reducer。(减少后期访问)

  28. HIVE查询的优化过程 • GraphWalker遍历(walk)DAG中所有的Node,并检查一个Rule是否满足,在满足的条件下回出发一个对应的Processor。Dispatcher则维护Rule到Processor的映射,并进行Rule的匹配工作。

  29. HIVE查询的简单优化步骤 • 1、 列裁剪(Column pruning):只有需要用到的列 才进行输出 • 2、 谓词下推(Predicate pushdown ):尽早进行数据过滤 ,减少后续处理的数据量 • 3、 分区裁剪(Partition pruning):只读取满足分区条件的文件 • 4、 map-join:对于join中一些小文件,可以在map阶段进行join操作 • 5、 join-reordering:将在reducer中进行join操作时的小table放入内存 ,而大table通过stream方式读取 • 6、 Group-by优化: 进行局部聚合进行优化(包括hash-based和sort-based),对于skew的key(key的row num和size在reduce时非常不均)可以进行两次map-reduce的方式优化 说明:基本上用于优化的提示(hint)都是一些配置项,map-join除外,需要具体在HQL直接指定。

  30. HIVE的physical plan的生成 • 根据上一步优化的结果,分解成一些map/reduce操作,并将最终结果(即一些plan的xml文件)写入到hdfs。 • 以论文的例子加以说明 • A. Thusoo, J.S. Sarma, N. Jain, Z. Shao, P. Chakka, N. Zhang, S. Antony, and H. Liu, “Hive – A Petabyte Scale Data Warehouse Using Hadoop,” Architecture.

  31. HIVE的physical plan的生成

  32. The End Thank you k

More Related