大数据技术Hadoop生态系统的详细介绍.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《大数据技术Hadoop生态系统的详细介绍.pdf》由会员分享,可在线阅读,更多相关《大数据技术Hadoop生态系统的详细介绍.pdf(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 Hadoop 生态系统的详细介绍 作者:夏威夷松鼠 1、Hadoop 生态系统概况 Hadoop 是一个能够对大量数据进行分布式处理的软件框架。具有可靠、高效、可伸缩的特点。Hadoop 的核心是 HDFS 和 MapReduce,hadoop2.0 还包括 YARN。下图为 hadoop 的生态系统:2、HDFS(Hadoop 分布式文件系统)源自于 Google 的 GFS 论文,发表于 2003 年 10 月,HDFS 是 GFS 克隆版。2 是 Hadoop 体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS 简化了文件的
2、一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。HDFS 这一部分主要有一下几个部分组成:(1)、Client:切分文件;访问 HDFS;与 NameNode 交互,获取文件位置信息;与 DataNode 交互,读取和写入数据。(2)、NameNode:Master 节点,在 hadoop1.X 中只有一个,管理 HDFS 的名称空间和数据块映射信息,配置副本策略,处理客户 端请求。对于大型的集群来讲,Hadoop1.x 存在两个最大的缺陷:1)对于大型的集群,namenode 的内存成为瓶颈,namenode 的扩展性的 问题;2)namenod
3、e 的单点故障问题。针对以上的两个缺陷,Hadoop2.x以后分别对这两个问题进行了解决。对于缺陷 1)提出了 Federation namenode 来解决,该方案主要是通过多个 namenode 来实现多个命名空间来实现 namenode 的横向扩张。从而减轻单个 namenode 内存 问题。针对缺陷 2),hadoop2.X 提出了实现两个 namenode 实现热备 HA 的方案来解决。其中一个是处于 standby 状态,一个处于 active 状态。3 (3)、DataNode:Slave 节点,存储实际的数据,汇报存储信息给 NameNode。(4)、Secondary Nam
4、eNode:辅助 NameNode,分担其工作量;定期合并 fsimage 和 edits,推送给 NameNode;紧急情况下,可辅助恢复NameNode,但 Secondary NameNode 并非 NameNode 的热备。目前,在硬盘不坏的情况,我们可以通过 secondarynamenode 来实现namenode 的恢复。3、Mapreduce(分布式计算框架)源自于 google 的 MapReduce 论文,发表于 2004 年 12 月,Hadoop MapReduce 是 google MapReduce 克隆版。MapReduce 是一种计算模型,用以进行大数据量的计算
5、。其中 Map 对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce 则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。MapReduce 这样的功能划分,非常适合在大量计算机组成的分布式并行 环境里进行数据处理。MapReduce 计算框架发展到现在有两个版本的 MapReduce 的 API,针对 MR1 主要组件有以下几个部分组成:4 (1)、JobTracker:Master 节点,只有一个,主要任务是资源的分配和作业的调度及监督管理,管理所有作业,作业/任务的监控、错误处理等;将任务分解成一系列任务,并分派给 TaskTracker。(2)、Task
6、Tracker:Slave 节点,运行 Map Task 和 Reduce Task;并与 JobTracker 交互,汇报任务状态。(3)、Map Task:解析每条数据记录,传递给用户编写的 map(),并执行,将输出结果写入本地磁盘。(4)、Reducer Task:从 Map Task 的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的 reduce 函数执行。在这个过程中,有一个 shuffle 过程,对于该过程是理解 MapReduce计算框架是关键。该过程包含 map 函数输出结果到 reduce 函数输入这一个中间过程中所有的操作,称之为 shuff
7、le 过程。在这个过程中,可以分为 map 端和 reduce 端。Map 端:1)输入数据进行分片之后,分片的大小跟原始的文件大小、文件块的大小有关。每一个分片对应的一个 map 任务。5 2)map 任务在执行的过程中,会将结果存放到内存当中,当内存占用达到一定的阈值(这个阈值是可以设置的)时,map 会将中间的结果写入到本地磁盘上,形成临时文件这个过程叫做溢写。3)map 在溢写的过程中,会根据指定 reduce 任务个数分别写到对应的分区当中,这就是 partition 过程。每一个分区对应的是一个reduce 任 务。并且在写的过程中,进行相应的排序。在溢写的过程中还可以设置 con
8、biner 过程,该过程跟 reduce 产生的结果应该是一致的,因此该过程应用存 在一定的限制,需要慎用。4)每一个map端最后都只存在一个临时文件作为reduce的输入,因此会对中间溢写到磁盘的多个临时文件进行合并 Merge 操作。最后形成一个内部分区的一个临时文件。Reduce 端:1)首先要实现数据本地化,需要将远程节点上的 map 输出复制到本地。2)Merge 过程,这个合并过程主要是对不同的节点上的 map 输出结果进行合并。3)不断的复制和合并之后,最终形成一个输入文件。Reduce 将最终的计算结果存放在 HDFS 上。6 针对 MR2 是新一代的 MR 的 API。其主要
9、是运行在 Yarn 的资源管理框架上。4、Yarn(资源管理框架)该框架是 hadoop2.x 以后对 hadoop1.x 之前 JobTracker 和 TaskTracker 模型的优化,而产生出来的,将 JobTracker 的资源分配和作业调度及监督分开。该框架主要有 ResourceManager,Applicationmatser,nodemanager。其主要工作过程如下:其 ResourceManager 主要负责所有的应用程序的资源分配,ApplicationMaster 主要负责每个作业的任务调度,也就是说每一个作业对应一个 ApplicationMaster。Nodema
10、nager 是接收 Resourcemanager 和 ApplicationMaster的命令来实现资源的分配执行体。ResourceManager 在接收到 client 的作业提交请求之后,会分配一个 Conbiner,这里需要说明一下的是 Resoucemanager 分配资源是以Conbiner 为单位分配的。第一个被分配的 Conbiner 会启动 Applicationmaster,它 主要负责作业的调度。Applicationmanager 启动之后则会直接跟 NodeManager 通信。在YARN 中,资源管理由ResourceManager 和NodeManager共同完
11、成,其中,ResourceManager 中的调度器负责 资源的分配,而 NodeManager 则负责资源的供给和隔离。ResourceManager 将某个 NodeManager 上资源分配给任务(这就是所 谓的“资源调度”)后,NodeManag7 er 需按照要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础的保证,这就是所谓的 资源隔离。在 Yarn 平台上可以运行多个计算框架,如:MR,Tez,Storm,Spark 等计算,框架。5、Sqoop(数据同步工具)Sqoop 是 SQL-to-Hadoop 的缩写,主要用于传统数据库和 Hadoop 之间传输
12、数据。数据的导入和导出本质上是 Mapreduce 程 序,充分利用了 MR 的并行化和容错性。其中主要利用的是 MP 中的 Map 任务来实现并行导入,导出。Sqoop 发展到现在已经出现了两个版本,一个是 sqoop1.x.x 系列,一个是 sqoop1.99.X 系列。对于 sqoop1 系列中,主要是通过命令行的方式来操作。sqoop1 import原理:从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有Map的Mapreduce作业,在 mapreduce 中有很多 map,每个 map 读一片数据,进而并行的完成数据的拷
13、贝。sqoop1 export 原理:获取导出表的 schema、meta 信息,和 Hadoop中的字段 match;多个 map only 作业同时运行,完成 hdfs 中数据导出到关系型数据库中。8 Sqoop1.99.x 是属于 sqoop2 的产品,该款产品目前功能还不是很完善,处于一个测试阶段,一般并不会应用于商业化产品当中。Sqoop 工具当中,目前我对它的认识是可能会存在一定的问题是因为当在导入导出的时候,map 任务失败了,此时 Applicationmaster 会重新调度另外一个任务来运行这个失败的任务。但是这可能会存在一个问题就是,在未失败前 Map 任务所导入的数据与
14、重 新调度 map 任务产生的结果会存在重复的现象。6、Mahout(数据挖掘算法库)Mahout 起源于 2008 年,最初是 Apache Lucent 的子项目,它在极短的时间内取得了长足的发展,现在是 Apache 的顶级项目。相对于传统的 MapReduce 编程方式来实现机器学习的算法 时,往往需要话费大量的开发时间,并且周期较长,而 Mahout 的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷 地创建智能应用程序。Mahout 现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout 还包含数
15、据的输入/输出工具、与其他存储系统(如数据库、MongoDB 或 Cassandra)集成等数据挖掘支持架构。mahout 的各个组件下面都会生成相应的 jar 包。此时我们需要明白一个问题:到底如何使用 mahout 呢?9 实际上,mahout 只是一个机器学习的算法库,在这个库当中是想了相应的机器学习的算法,如:推荐系统(包括基于用户和基于物品的推荐),聚 类和分类算法。并且这些算法有些实现了 MapReduce,spark 从而可以在 hadoop 平台上运行,在实际的开发过程中,只需要将相应的 jar 包即 可。7、Hbase(分布式列存数据库)源自 Google 的 Bigtabl
16、e 论文,发表于 2006 年 11 月,传统的关系型数据库是对面向行的数据库。HBase 是 Google Bigtable 克隆版,HBase 是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系数据库不同,HBase 采用了 BigTable 的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase 提供了对大规模 数据的随机、实时读写访问,同时,HBase 中保存的数据可以使用 MapReduce 来处理,它将数据存储和并行计算完美地结合在一起。Hbase 表的特点 1)、大:一个表可以有数十亿行,
17、上百万列;2)、无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;3)、面向列:面向列(族)的存储和权限控制,列(族)独立检索;10 4)、稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;5)、数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;6)、数据类型单一:Hbase 中的数据都是字符串,没有类型 Hbase 物理模型 每个 column family 存储在 HDFS 上的一个单独文件中,空值不会被保存。Key 和 Version number 在每个 column f
18、amily 中均有一份;HBase 为每个值维护了多级索引,即:,其物理存储:1、Table 中所有行都按照 row key 的字典序排列;2、Table 在行的方向上分割为多个 Region;3、Region 按大小分割的,每个表开始只有一个 region,随着数据增多,region 不断增大,当增大到一个阀值的时候,region 就会等分会两个新的 region,之后会有越来越多的 region;4、Region 是 Hbase 中分布式存储和负载均衡的最小单元,不同 Region 分布到不同 RegionServer 上。、11 5、Region虽然是分布式存储的最小单元,但并不是存储的
19、最小单元。Region 由一个或者多个 Store 组成,每个 store 保存一个 columns family;每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile 包含 HFile;memStore 存储在 内存中,StoreFile 存储在HDFS 上。8、Zookeeper(分布式协作服务)源自 Google 的 Chubby 论文,发表于 2006 年 11 月,Zookeeper 是 Chubby 克隆版,主要解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。Zookeeper 的主要实现两步:1)、选举 Leade
20、r 2)、同步数据。这个组件在实现 namenode 的 HA 高可用性的时候,需要用到。9、Pig(基于 Hadoop 的数据流系统)由 yahoo!开源,设计动机是提供一种基于 MapReduce 的 ad-hoc(计算在 query 时发生)数据分析工具 定义了一种数据流语言Pig Latin,将脚本转换为 MapReduce 任务在 Hadoop 上执行。通常用于进行离线分析。10、Hive(基于 Hadoop 的数据仓库)由 facebook 开源,最初用于解决海量结构化的日志数据统计问题。12 Hive 定义了一种类似 SQL 的查询语言(HQL),将 SQL 转化为 MapRed
21、uce 任务在 Hadoop 上执行。通常用于离线分析。11、Flume(日志收集工具)Cloudera 开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在 Flume 中定制数据发送方,从而支持收集各 种不同协议数据。同时,Flume 数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume 还具有能够将日志写往各种数据目标(可 定制)的能力。总的来说,Flume 是一个可扩展、适合复杂环境的海量日志收集系统。13 问题导读 1.Hadoop 生态圈介绍了哪
22、些组件,分别都是什么?2.大数据与 Hadoop 是什么关系?本章主要内容:理解大数据的挑战 了解 Hadoop 生态圈 了解 Hadoop 发行版 使用基于 Hadoop 的企业级应用 你可能听别人说过,我们生活在“大数据”的环境中。技术驱动着当今世界的发展,计算能力飞速增长,电子设备越来越普遍,因特网越来越容易接入,与此同时,比以往任何时候都多的数据正在被传输和收集。企 业正在以惊人的速度产生数据。仅 Facebook 每天就会收集 250 TB 的数据。Thompson Reuters News Analytics(汤普森路透社新闻分析)显示,现在数字数据的总量比 2009 年的 1ZB
23、(1ZB 等同于一百万 14 PB)多了两倍多,到 2015 年有可能将达到 7.9ZB,到 2020 年则有可能会达到 35ZB。其他调查机构甚至做出了更高的预测。随着企业产生并收集的数据量增多,他们开始认识到数据分析的重要性。但是,他们必须先有效地管理好自己拥有的大量信息。这会产生新的挑战:怎样才能存储大量的数据?怎样处理它们?怎样高效地分析它们?既然数据会增加,又如何构建一个可扩展的解决方案?不 仅研究人员和数据科学家要面对大数据的挑战。几年前,在Google+大会上,计算机书籍出版者 Tim OReilly 引用过 Alistair Croll 的话,“这些产生了大量的无明显规律数据的
24、公司,正在被那些产生了相对较少的有规律数据的新创公司取代”。简而言之,Croll 想要说,除 非你的企业“理解”你拥有的数据,否则你的企业无法与那些“理解”自身数据的公司抗衡。企业已经意识 到:大数据与商业竞争、态势感知、生产力、科学和创新等密切相关,分析这些大数据能够获得巨大的效益。因为商业竞争正在驱动大数据分析,所以大多数企业认 同 OReilly 和 Croll的观点。他们认为当今企业的生存依赖于存储、处理和分析大量信息的能力,依赖于是否掌控了接受大数据挑战的能力。如果你阅读这本书,你将会熟悉这些挑战,熟悉 Apache 的 Hadoop,并且知道Hadoop 可以解决哪些问题。本章主要
25、介绍大数据的前景和挑战,并且概述 Hadoop 及其组件生态圈。可以利用这些组件构建可扩展、分布式的数据分析解决方案。15 1.1 当大数据遇到 Hadoop 由于“人力资本”是一个无形的、对成功至关重要的因素,所以多数企业都认为他们的员工才是他们最有价值的财产。其实还有另外一个关键因素企业所拥有的“信息”。信息可信度、信息量和信息可访问性可以增强企业信息能力,从而使企业做出更好的决策。要理解企业产生的大量的数字信息是非常困难的。IBM 指出在过去仅仅两年的时间里产生了世界 90%的数据。企业正在 收集、处理和存储这些可能成为战略资源的数据。十年前,Michael Daconta,Leo Ob
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 技术 Hadoop 生态系统 详细 介绍
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内