Hadoop2x和它的yarn成员解析Word下载.docx
- 文档编号:8615380
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:17
- 大小:1.41MB
Hadoop2x和它的yarn成员解析Word下载.docx
《Hadoop2x和它的yarn成员解析Word下载.docx》由会员分享,可在线阅读,更多相关《Hadoop2x和它的yarn成员解析Word下载.docx(17页珍藏版)》请在冰点文库上搜索。
指导教师(职称):
陈可讲师
评阅教师:
陈可
完成日期:
2014年05月01日
南阳理工学院
NanyangInstituteofTechnology
基于云平台的Hadoop2.x系列和它的Yarn成员解析
软件工程田康博
[摘要]Hadoop原本来自于谷歌一款名为MapReduce的编程模型包。
谷歌的MapReduce框架可以把一个应用程序分解为许多并行计算指令,跨大量的计算节点运行非常巨大的数据集。
使用该框架的一个典型例子就是在网络数据上运行的搜索算法。
Hadoop最初只与网页索引有关,迅速发展成为分析大数据的领先平台。
Hadoop目前的版本有两个系列,即Hadoop1.x和Hadoop2.x系列。
其中在Hadoop2.x系列里面,新增了一个Yarn模块,主要负责Hadoop的资源调度。
[关键词]Hadoop2.x;
Yarn;
Ubuntu;
Hadoop分布存储环境
SoftwareengineeringTianKangbo
Abstract:
HadooporiginallycamefromaGoogleMapReduceprogrammingmodelpackage.Google'
sMapReduceframeworkcanbeusedtodecomposeanapplicationintomanyparallelcomputinginstructions,crossalargenumberofcomputingnodesrunningaverylargedataset.Atypicalexampleofusingthisframeworkisthesearchalgorithmrunningonthenetworkdata.Hadoopinitiallyonlyrelatedtothewebpageindex,therapiddevelopmentofaleadingplatformforanalysisoflargedata.Hadoopcurrentversionofthetwoseries,thatis,Hadoop1.xandHadoop2.xseries.WhichintheHadoop2.xseriesinside,anewYarnmodule,mainlyresponsiblefortheHadoopresourcescheduling.
Keywords:
Hadoop2.x;
Yarn;
Ubuntu;
Hadoopdistributedstorageenvironment
目录
1绪论1
1.1关于hadoop1
1.2本章小结1
2Hadoop的简介1
2.1Hadoop的发展历程和特点2
2.2本章小结.2
3Hadoop2.x的解读3
3.1Hadoop2.x的四大模块3
3.2用Eclipse连接Hadoop实例解析5
3.3Hadoop2.x的其他成员模块介绍6
3.4Hadoop的优缺点7
3.5本章小结7
4Yarn成员7
4.1Yarn的介绍7
4.2Yarn的模块功能8
4.3Hadoop2.x的hdfs+yarn框架9
4.4Yarn的架构解析10
4.5本章小结14
结束语15
参考文献16
致谢17
1绪论
1.1关于Hadoop
随着科技发展,服务业的兴起,越来越多的数据产生了。
服务业兴盛的时代,每个人的信息都几乎是裸露的,否则商家凭什么提供给你高效率的服务,于是每分每秒,从我们身上所散发出来的信息都在被收集捕捉着。
那么这么多的信息要怎样对他进行较高效率的处理呢?
不可能是传统的几台服务器和存储,那是远远不够的。
网络上有一句话:
谁说大象不能跳舞?
我们对于传统的认知,大象的笨重体态是舞不了的,不过抽象来看,如果可以将某种笨重而庞大的事物变得灵活起来,不就恰似使得大象舞动起来了吗?
不错,对于大量数据的处理,催生了Hadoop,他就是能够处理海量数据的一种工具。
它的logo呢是一只黄色的大象,他是apache公司的一种开源的分布式平台,在此,本文不讨论或者论述Hadoop是系统还是软件问题,我姑且把他称为一种工具。
一种能够将大象培训成舞者的工具。
Hadoop的设计是针对海量数据的,所以它的延迟性也就较高,对于非常小的数据,并不适合,对于客户需要交互的低延迟性的也不能满足。
Hadoop本身具有很高的冗余性。
有所得到就会有所牺牲,因为Hadoop是安装在廉价的普通集群上的,一些机器很容易就有问题或是宕机了,Hadoop为了的保证数据的安全性,存储时每份数据都会默认进行分割,每相同的一块都会进行三份复制,这就相当于牺牲了相当大量的硬盘进行存储。
Hadoop自从研发以来有两个系列的发展,Hadoop1.x和Hadoop2.x系列,目前为止Hadoop2.x更加流行,它是基于Hadoop1.x系列的完善和优化版本,相比于1.x的版本,Hadoop2.x版本的系统架构则更加合理和完善,具有更多的成员组件,尤其是HadoopYarn的体系架构,使Hadoop2.x系列明显优于Hadoop1.x系列,本文会在Hadoop的章节介绍后更为细致的介绍HadoopYarn的功能以及它的工作成员和细节。
那么,我们就正式开始介绍Hadoop2.x系列里他的得力成员Yarn。
1.2本章小结
本章主要介绍Hadoop的主要发展前景,和生活的需要服务,以及功能的前言简介,和Hadoop的Yarn成员的介绍。
我们通过这个简单的介绍可以基本知道Hadoop给生活带来的改变,对服务业带来的效率。
以及作为学生的我们应该对Hadoop的进行钻研学习。
跟进科技的发展脚步,不被社会发展所困惑,与时俱进。
2.Hadoop的简介
Hadoop的成功的发展并不是一蹴而就的。
它也是有小到大的成长历程,本节将对Hadoop的发展历程和特点,Hadoop的思想分类进行介绍。
2.1Hadoop的发展历程和特点
(1)Hadoop的起源
ApacheHadoop起源:
Hadoop刚开始的形态只是Apachelucene(高性能全文检索工具包),然后发展到Apachenutch(开源的web搜索引擎),因为谷歌发表了三大论文MapReduce,GFS,BigTable,最后就有一些Hadoop爱好者联合开发成了apacheHadoop(大规模数据处理)。
(2)Hadoop的用途
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用来处理海量数据的一种工具。
它的存储是分布式存储,是一个集群的概念,负责存储的模块是HDFS。
它对数据的分析是分布式并行的离线计算框架,负责数据分析的模块主要有MapReduce。
(3)Hadoop的特点以及思想
Hadoop具有高性能的扩容能力,相对普通服务器而言它的扩容成本比较低,对大数据的处理效率高,它的可靠性也比较高。
其中HDFS+MapReduce的框架思想就是尽可能的移动计算到数据端,而不是移动数据到计算端,这样可以节省大量的资源。
因为它的节点组成是普通的计算机,所以对于硬件的故障也是一种常态。
(4)HDFS思想
对于HDFS的存储的思想特点,就是文件的单次写入,可以多次读取。
文件的副本分片保存。
HDFS的存储是面向大文件的存储,客户端读取访问时,是流式的顺序读取。
(5)Hadoop的分类
Hadoop还是比较清晰的,总体来说有Hadoop1.x系列和Hadoop2.x系列的内核:
Hadoop1.0的内核有HadoopCommon,HadoopDistributedFileSystem,HadoopMapReduce。
Hadoop2.x的内核有HadoopCommon,HadoopDistributedFileSystem,HadoopMapReduce,HadoopYarn。
2.2本章小结
本章主要介绍了Hadoop的一些基本常识,从Hadoop的来源,到用途和特点,再到他的内部存储模式和分类。
Hadoop1.x系列的框架里的HadoopCommon里面放置一些其他类共享的一些类和框架等,因为现在的主流是Hadoop2.x系列。
那么Hadoop2.x系列相对比Hadoop1.X系列只有Yarn模块是一个新增的成员,其他三个模块的功能基本都是类似的。
在Hadoop中,每个模块都是相互联合的,他们相互配合构成了一块相当庞大的体系架构。
3.Hadoop2.x的解读
Hadoop有四个大的模块,它们分别是HadoopCommon,HDFS,HadoopYarn,HadoopMapReduce。
本节将对这四个模块进行解析。
如图3-1是Hadoop2.x的生态组成,本章将从此入手对Hadoop进行解析。
图3-1Hadoop2.x的生态组成
3.1Hadoop2.x项目的四大模块
(1)HadoopCommon
HadoopCommon是为了支持其他模块的一些公共类,和框架的一个模块。
(2)HDFS(HadoopDistributedFileSystem)
图3-2HDFS架构图
HDFS提供高吞吐量的访问能力,用来存储数据。
具有高容错性,高伸缩性的优点,允许用户将Hadoop部署在廉价的硬件上,构建分布式系统。
如图3-2是HDFS的存储动作,HDFS具有横向扩展性,布置单节点的Hadoop时候,最小模型是一台master主机和两台slaver节点。
如果要扩展datenode节点,只需要在准备好的虚拟机上面拷贝一份Hadoop文件,然后导入master的公钥,最后修改一下配置文件(slaver文件,里面加入节点名字。
在/etc/hosts文件里加入主机名和要求节点的ip)。
(3)HadoopYarn云的操作系统
HadoopYarn给部署在Yarn上的应用,分配资源,管理资源。
以及任务调度即job和application调度。
Yarn的架构图如图3-3(MapReduce跑在Yarn系统上)。
(4)HadoopMapreduce
图3-3MapReduce系统架构图
如图3-3是介绍基于yarn系统的并行的处理大数据的框架,Mapreduce担当并行的计算分析任务。
允许用户在不了解分布式系统底层细节的情况下开发并行,分布式的应用程序。
Map和reduce,map是映射,reduce是规约。
我用自己的理解方式说,Map就是一种映射计算,让我们知道数据块的位置属性等,简单说来,一个映射函数就是对一些独立元素组成的概念上的列表,Reduce就是一种各种数据块分别求和的方式。
Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。
以wordcount为例,在map阶段,map函数在每个单词后面加上一个1,在reduce阶段,reduce函数将相同单词后面的1都加起来。
其中Hadoop框架实现过程中的排序,分配等如图3-4,这些也可以通过自定义的函数来控制。
MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;
每个节点会周期性的返回它所完成的工作和最新的状态。
如果一个节点保持沉默超过一个预设的时间间隔,主节点记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。
图3-4MapReduce思想原理图
3.2用Eclipse连接Hadoop实例解析
图3-5eclipse连接Hadoop
这种方式比较清晰,能够更为直观地了解MapReduce的工作。
图3-5是一张eclipse连接Hadoop的实例图,我们可以看到一些嵌套的文件夹,那是实验存储的一些东西。
首先,用eclipse连接上自己的Hadoop这里需要一个名字Hadoop-eclipse-plugin-2.6.0.jar的插件对应自己的Hadoop版本自己下载。
然后将插件放置到eclipse\plugins文件夹下。
打开eclipse新建一个Map/Reduceproject,
打开windows---->
preferences,点击HadoopMap/Reduce,将本地的Hadoop目录添加上去。
然后启动Hadoop,在eclipse下方会出现一个黄色的小象标志,右击配置它,配置内容视情况而定,可以XX参考。
Map/ReduceMaster设置Host和Port对应的是你hadoop安装目录下conf下mapred-site.xml文件设置的host和port,右边的DFSMaster对应的是core-site.xml.如果core-site.xml下只有localhost而没有端口号,默认的就是8020.设置好后finish。
最后就能在eclipse里面浏览并操作HDFS了。
我们在刚才的Map/Reduce工程里新建一个class。
我们可以在hadoop文件夹里找到WordCount.java这个源码。
在建立的WordCount.java上面右键,Runas->
runconfigurations,在左边的javaapplication右键New,配置arguments文件路径就是自己的output在hadoop上的路径。
要确保HDFS中不存在output目录,否则会抛出异常。
最后runashadoop,就可以自动生成一些文件,统计好数据的文件在count下的part-r-00000里面,正如上图那样。
Wordcount可以轻松统计大量的数据集,并给它们进行排序。
3.3Hadoop2.x的其他成员模块介绍
(1)Zookeeper担任三种角色,领导者,学习者,客户端,主要是一种协调Hadoop的机制。
它的领导者角色负责投票的发起和决议,更新系统状态。
它的学习者角色里有跟随者和观察者角色,跟随者用于接收客户端的请求并向客户端返回结点,在选过程中负责参与投票,观察者可以接受客户端的连接,将写请求转发给领导者,但观察者不参与投票,只同步领导者状态,目的是扩展系统,提高读取速度。
(2)Hbase结构化分布式非关系数据库,BigTable的开源实现。
(3)Hive是建立在Hadoop上的数据仓库基础构架。
它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
Hive是一种底层封装了Hadoop的数据仓库处理工具,使用类SQL的HiveQL语言实现数据查询,所有Hive的数据都存储在Hadoop兼容的文件系统(例如,AmazonS3、HDFS)中。
Hive在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS中Hive设定的目录下。
(4)Sqoop将关系型数据库中的数据与HDFS(HDFS文件,HBase中表,Hive表)上的数据进行相互的导入和导出。
是数据库ETL工具,提取,转换,加载。
从数据库中获取数据,并经过一系列的数据清理和筛选。
将合格的数据进行转换成为一定的格式数据进行存储。
将格式化的数据存储到HDFS文件系统上,以供计算框架进行数据分析和挖掘。
格式化数据:
TSV格式:
每行数据的每列之间以制表符\t进行分割。
CSV格式:
每行数据的每列之间以制表符‘,逗号’进行分割。
(5)Flume收集日志工具,收集各个应用系统和框架的日志,将其放到HDFS分布式文件系统的相应制定的目录下。
3.4Hadoop的优缺点
(1)优点
1)高可靠性:
Hadoop按位存储和处理数据的能力值得人们信赖;
2)高扩展性:
Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
3)高效性:
Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
4)高容错性:
Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
(2)缺点
1)不适合低延迟数据访问,Hadoop本身的机制原因,他的延迟性较高。
无法高效存储大量小文件,因为Hadoop的块存储中,每一块大小是128MB,也就是说对于小文件是积极浪费的。
2)不支持多用户写入及任意修改文件。
文件一旦写入,要么对文件进行补块解释,要么删除,重新写入。
3.5本章小结
Hadoop2.x里面的成员各司其职,相互配合组成了相当成熟的体系架构,对大数据进行计算分析。
在外部,用eclipse对Hadoop进行连接和对接,更加直观的查看Hadoop存储文件,也可以使用浏览器进行访问。
其中WordCount实例是最简单的MapReduce的利用实例,我们应该进行了解和掌握。
Hadoop的存储单元HDFS犹如一个分布式硬盘,HBase又能够方便的处理数据库存储文件等等。
4.Yarn成员
对于整个Hadoop的架构,控制整个框架的资源调度非常重要,接下来本章节会介绍一下Yarn,即云的操作系统。
4.1Yarn的介绍
YARN的基本思想是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。
这里的应用程序是指传统的MapReduce作业或作业的DAG(有向无环图)。
Yarn分层结构的本质是ResourceManager。
这个实体控制整个集群并管理应用程序向基础计算资源的分配。
ResourceManager将各个资源部分精心安排给基础NodeManager。
ResourceManager还与ApplicationMaster一起分配资源,与NodeManager一起启动和监视它们的基础应用程序。
在此,Application-Master承担了以前的TaskTracker的一些角色,ResourceManager承担了Job-Tracker的角色。
ApplicationMaster管理一个在Yarn内运行的每个应用程序Applicati-onMaster负责协调来自ResourceManager的资源,并通过Node-Manager监视容器的执行和资源使用(CPU、内存等的资源分配)。
请注意,尽管目前的资源更加传统(CPU核心、内存),但未来会带来基于手头任务的新资源类型(比如图形处理单元或专用处理设备)。
从YARN角度讲,ApplicationMaster是用户代码,因此存在潜在的安全问题。
NodeManager管理一个Yarn集群中的每个节点。
NodeManager提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。
MRv1通过插槽管理Map和Reduce任务的执行,而NodeManager管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。
YARN继续使用HDFS层。
它的主要NameNode用于元数据服务,而DataNode用于分散在一个集群中的复制存储服务。
如果要使用一个Yarn集群,首先需要来自包含一个应用程序的客户的请求。
ResourceManager协商一个容器的必要资源,启动一个ApplicationMaster来表示已提交的应用程序。
通过使用一个资源请求协议,ApplicationMaster协商每个节点上供应用程序使用的资源容器。
执行应用程序时,ApplicationMaster监视容器直到完成。
当应用程序完成时,ApplicationMasterResourceManager注销其容器,执行周期就完成了。
4.2Yarn的模块功能
(1)ResourceManager
1)处理客户端的请求。
2)启动和监控ApplicationMaster。
3)监控NodeManager。
4)资源分配与调度。
(2)NodeManager
1)单个节点上的资源管理。
2)处理来自ResourceManager的命令。
3)处理来自ApplicationMaster的命令。
(3)ApplicationMaster
1)数据的切分,在1.x系列里每个切块大小是64M,在2.x系列里是128M。
2)为应用程序申请资源,并分配给内部任务。
3)任务的监控和容错。
(4)Container
1)对任务运行环境的抽象,封装了cpu,内存等多维资源以及环境变量,启动命令等任务运行相关的信息。
4.3Hadoop2.x的Hdfs+Yarn的框架
我们知道MRv1存在的主要问题是:
在运行时,JobTracker既负责资源管理又负责任务调度,这导致了它的扩展性、资源利用率低等问题。
MRv1是围绕着MapReduce进行,并没有过多地考虑以后出现的其它数据处理方式。
按着图4-1左的设计思路,我们每开发一种数据处理方式(例如spark),都要重复实现相应的集群资源管理和数据处理。
因此,Yarn就很自然的被开发出来了。
YarnMR
-v1的最大改进就是将资源管理与任务调度分离,使得各种数据处理方式能共享资源管理。
图4-1Hadoop1.0和2.0
Yarn是一种统一资源管理方式,是从MRv1中的JobTracker分离出来的。
这样的好处显而易见:
资源共享,扩展性好等。
MRv1与Yarn的主要区别:
在MRv1中,由JobTracker负责资源管理和作业控制,而Yarn中,JobTracker被分为两部分:
ResourceManager(RM)和Applica-tionMaster(AM),如图4-2:
图4-2Yarn的架构图
从图4-2中,我们可以清晰的看到,对于MRv1无论是资源管理里还是任务调度都是有JobTracker来完成得。
这导致了,JobTracker负荷太大不便于管理和扩展而对于Yarn,我们看可以清晰地看到资源管理和任务调度被分为了两个部分:
RM和AM。
总体来说,Yarn相当于一套操作系统
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop2x yarn 成员 解析
![提示](https://static.bingdoc.com/images/bang_tan.gif)