大话Hadoop1.0、Hadoop2.0与Yarn平台



2016年12月14日21:37:29

Author:张明阳

博文链接:http://blog.csdn.net/a2011480169/article/details/53647012



近来这几天一直在忙于Hbase的实验,也没有太静下心来沉淀自己,今天打算写一篇关于Hadoop1.0、Hadoop2.0与Yarn的博文,从整体上把握三者之间的联系,博客内容如有问题,欢迎留言指正!OK,进入本文正题……

在开始接触Hadoop的时候,也许大家对于Hadoop是下面的一个概念:Hadoop由两部分组成,一是负责存储与管理文件的分布式文件系统HDFS、二是负责处理与计算的MapReduce的计算框架。即Hadoop通过HDFS既能够存储海量的数据,又能够通过MapReduce实现分布式的一个计算,用一句话来概括Hadoop就是:Hadoop是适合大数据的分布式存储与计算的一个平台。

在这里我们先看一下HDFS的体系结构:

HDFS的体系结构是一个主从式的结构,主节点NameNode只有一个,从节点DataNode有很多个,大家在这里面要注意:主节点NameNode与从节点DataNode实际上指的是不同的物理机器,即有一台机器上面跑的进程是NameNode,很多台机器上面跑的进程是DataNode ,也就是说服务器的角色是由其上面跑的进程的角色决定其是什么类型的服务器,不然大家都是一堆物理机器而已,对于这个概念大家务必要区分清楚。

接下来我们依次讨论HDFS中NameNode、SecondaryNameNode与DataNode在集群中的作用:

NameNode的作用:

1>NameNode管理着整个文件系统,负责接收用户的操作请求

2>NameNode管理着整个文件系统的目录结构,所谓目录结构类似于我们Windows操作系统的体系结构

3>NameNode管理着整个文件系统的元数据信息,所谓元数据信息指定是除了数据本身之外涉及到文件自身的相关信息

4>NameNode保管着文件与block块序列之间的对应关系以及block块与DataNode节点之间的对应关系

用一句话来概括我们的NameNode:NameNode在HDFS中是负责管理工作的。

DataNode的作用:

1>DataNode在HDFS中只做一件事情:存储数据,并且在HDFS中的文件是被切分成block块来进行存储的,这一点不同于我们的Windows,而在HDFS中之所以将文件切分成block块来进行存储,也是为了便于维护与管理。

大家要特别注意一下:在HDFS中,我们真实的数据是由DataNode来负责来存储的,但是数据具体被存储到了哪个DataNode节点等元数据信息则是由我们的NameNode来存储的

SecondaryNameNode的作用:

SecondaryNameNode在HDFS中只做一件事情:合并NameNode节点中的fsimage和edits,具体合并过程如下图所示:

首先,SecondaryNameNode从NameNode中通过网络拷贝一份fsimage与edits到自己进程的那一块,然后将fsimage与edits进行合并,生成新的fsimage,并将新生成的fsimage推送到NameNode节点中一份,并将NameNode中edits的内容进行清空。

大家在这里要注意:NameNode自己之所以不合并fsimage与edits,是为了更快的响应用户的操作请求

文章写到这里,我们就来思考一下,在Hadoop1.0中的HDFS到底有什么缺陷呢?我们可以总结出一下几点:

1>NameNode中的单点故障问题

2>因为NameNode含有我们用户存储文件的全部的元数据信息,当我们的NameNode无法在内存中加载全部元数据信息的时候,集群的寿命就到头了,我们将这条概括为NameNode的内存容量不足的问题

3>HDFS中的权限设计不够彻底,即HDFS的数据隔离性不是很好

4>如果HDFS大量存储小文件的话,会造成NameNode的内存压力骤增

上面的四点故障在Hadoop2.0中得到了相应的解决,至于如何解决的,我们过一会在谈,在此我们先看一看Hadoop1.0中的MapReduce。

MapReduce是Hadoop1.0中的分布式计算框架,包括两个阶段:Mapper阶段和Reducer阶段,用户只需要实现map函数和reduce函数即可实现分布式计算,非常简单,接下来我们看一看MapReduce的体系结构:

MapReduce的体系结构也是一个主从式的结构,主节点JobTracker只有一个,从节点TaskTracker有很多个,JobTracker与TaskTracker在MapReduce中的角色就像是项目经理与开发人员一样,JobTracker的具体职责如下:

1>JobTracker负责接收用户提交给的计算任务

2>将计算任务分配给我们的TaskTracker进行执行

3>跟踪监控TaskTracker的任务task的执行状况

当然TaskTracker的作用就是执行JobTracker分配给的计算任务task。

现在让我们想一想在Hadoop1.0中MapReduce的缺点:

1>MapReduce中的JobTracker职责过多,既需要分配资源,又需要跟踪监控每一个Job下的tasks的运行情况,这往往造成了内存以及资源的极大浪费

2>对于实时性作业和批处理作业,在Hadoop1.0中需要搭建不同的集群环境,每个集群环境运行不同的作业类型,这往往导致了集群的资源利用率并不高,在实际的业务当中,我们MapReduce处理的主要业务为有些延迟的批处理的作业,也就是说由于1.0中MapReduce的设计导致集群的资源利用率并不高。

好的,带着1.0中的HDFS的缺陷和MapReduce的缺陷我们进入到Hadoop2.0中,我们先谈2.0中的HDFS。

在Hadoop2.0中,针对HDFS1.0中NameNode的内存容量不足以及NameNode的单点故障问题,在2.0中分别作了以下的改进:

1>在1.0中,既然一个NameNode会导致内存容量不足,我们引入两个NameNode,组成HDFS联邦,这样NameNode存储的元数据信息就可以翻倍了,所谓HDFS联邦就是有多个HDFS集群同时工作,数据节点DataNode存储的数据是服务于两个HDFS文件系统的,体系结构如下图所示:

2>在2.0中,针对1.0中NameNode的单点故障问题,在2.0中引入了新的HA机制:即如果Active的NameNode节点挂掉,处于Standby的NameNode节点将替换掉它继续工作,下面的图示方便大家的理解:

在这里大家一定要注意:2.0中处于HDFS联邦的也是两个NameNode节点,处于HA的也是两个NameNode节点,但是联邦中的两个NameNode节点由于使用的是不同的命名空间(Name Space),因此两个NameNode节点存储的元数据信息并不相同,但是处于HA中的两个NameNode节点由于使用的相同的命名空间,因此两个NameNode节点存储的元数据信息是相同的

好的,介绍完2.0中的联邦和HA后,我们进入2.0中的MapReduce即2.0中的YARN,在Hadoop2.0中,Yarn平台是2.0的资源管理系统,体系结构如下图所示:

Yarn是Hadoop2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成两个独立的服务:一个是全局的资源管理器ResouceManager和每个应用程序特有的AppMaster。

在Yarn平台中,各个组件的详细功能如下:

1>ResouceManager是一个全局的资源管理器,负责整个系统的资源管理和分配,ResouceManager相当于Hadoop1.0中的JobTracker的部分职能:资源分配。

2>AppMaster负责管理单个应用程序,即负责一个Job生命周期内的所有工作,并在任务task运行失败时重新为任务申请资源进而重新启动相应的任务,AppMaster类似老的框架中的JobTracker的部分职能:任务分配与任务监控。

特别注意:每一个Job(而不是每一种)都有一个相应的APPMaster,APPMaster可以运行在除主节点ResouceManager节点以外的其它机器上,但是在Hadoop1.0中,JobTracker的位置是固定的。

3>NodeManager是每个节点上的资源和任务管理器,一方面:它会定时的向ResouceManager汇报本节点上的资源使用情况和各个Container的运行状态,另一方面:它会接受并处理来自AppMaster的container的启动、停止等各种请求。

讲到这里,和大家谈一谈用户的应用程序(以MapReduce程序为例)在Yarn平台上面的运行机制:

1>首先,用户的应用程序通过Yarn平台的客户端程序将我们的应用程序提交给我们的YARN平台

2>YARN平台的ResouceManager接受到我们客户端提交给的应用程序后,将应用程序交给某个NodeManager,并在其上面启动一个新的进程AppMaster

3>AppMaster首先为应用程序在ResouceManager中进行注册,这样用户可以通过ResouceManager查看应用程序的执行进度

4>注册完之后,APPMaster将通过Rpc协议向ResouceManager申请资源并领取相应的资源

5>获取到资源后,APPMaster便于对应的NodeManager节点进行通信,要求其启动相应的任务

6>各个任务在执行的过程中将通过RPC协议向APPMaster汇报自己的执行进度和执行状况,以便让APPMaster可以随时掌握各个任务的执行状况,进而在任务运行失败时可以重新启动相应的任务。

7>mapper任务和reducer任务执行完之后,AppMaster向ResouceManager节点注销并关闭自己,此时资源得到回收,应用程序执行完毕。

到最后,和大家总结一下YARN框架相比于老的MapReduce框架的4个优势:

1>在Hadoop1.0中,JobTracker的职责过多,既需要分配资源,又需要跟踪监控每一个job下的tasks的执行状况,这往往造成了内存以及资源的极大浪费,在Hadoop2.0中,YARN框架的设计大大减小了JobTracker(也就是现在的ResouceManager)的资源消耗,并且让跟踪监控每一个job下的tasks的执行状况由相应的APPMaster来负责,而在ResouceManager中有一个模块叫做ApplicationsMasters(注意不是ApplicationMaster),它只需要负责跟踪监控每一个ApplicationMaster的运行状况,如果AppMaster运行出现问题,它会在其它机器上重新启动这个进程。

2>在新的YARN平台中,APPMaster是一个可变更的部分,用户可以编写不同类型的应用程序,新的Yarn框架可以让更多类型的编程模型跑在Hadoop集群当中,YARN平台解决了各种不同类型的应用程序可以在同一个平台上面运行的问题。YARN平台的ResouceManager接收到我们客户端提交给的各种类型的应用程序后,各种类型的应用程序将会被YARN平台当做一个普通的应用程序来运行,即在一个YARN平台上面可以运行不同的作业类型。

3>在新的YARN平台中,对于资源的表示以内存为单位,比之前以剩余slot数目更加合理。

4>Container是Yarn为了将来做资源隔离而提出的一个新的框架。

OK,博文就写到这里了,如有问题,欢迎大家留言指正!

时间: 2024-10-06 22:46:51

大话Hadoop1.0、Hadoop2.0与Yarn平台的相关文章

HADOOP2.0(HDFS2)以及YARN设计的亮点

YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResouceManager负责对各个NodeManager上的资源进行统一管理和调度.当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManger申请资源,并要求NodeManager启动可以占用一定资源的任务. Hadoop2.0 YARN包含以下实体,可以看图: R

Hadoop2.0、YARN技术大数据视频教程

基于Hadoop2.0.YARN技术的大数据高阶应用实战(Hadoop2.0\YARN\MapReduce\数据挖掘\项目实战)课程分类:Hadoop适合人群:高级课时数量:81课时用到技术:基于协同过滤的推荐系统.基于HBase的爬虫调度库涉及项目:银行人民币查询系统.HBase编程实践及案例分析咨询qq:1840215592 课程内容简介本课程基于<基于Greenplum Hadoop分布式平台的大数据解决方案>Hadoop部分的基础课程来进行扩展延伸,主要内容分为以下四部分:一.对Had

hadoop2.0中yarn的运行原理

Yarn的简单介绍 我们知道在离线大数据处理领域中,hadoop是目前无可厚非的处理架构,到目前为止hadoop已经有三个大版本,每个版本下都有架构方面的调整. 在hadoop1.0中有一些弊端,比如hdfs元数据信息保存的单节点故障,并且任务计算框架只能使用mapreduce,而且造成了任务管理器的压力过大,因此在hadoop2.0中加入了yarn资源统一管理的机制,不仅解决了元数据单节点故障问题(双namenode)而且实现了元数据的实时热备(共享机制JournalNode),在hdfs和m

Hadoop2.0安装之YARN

YARN(Yet Another Resource Negotiator)是Hadoop2.0集群中负责资源管理和调度以及监控运行在它上面的各种应用,是hadoop2.0中的核心,它类似于一个分布式操作系统,通过它的api编写的应用可以跑在它上面,支持临时和常驻的应用,集群的资源可以得到最大限度的共享.资源是指CPU,内存,硬盘,带宽等可以量化的东西. Hadoop1.0和2.0架构对比 1.0的绝对核心是mapreduce,只能跑mapreduce的任务:2.0的绝对核心是YARN,除了可以跑

Hadoop2.0之YARN组件

官方文档:https://hadoop.apache.org/docs/stable/,目前官方已经是3.x,但yarn机制没有太大变化 一.简介 在Hadoop1.0中,没有yarn,所有的任务调度和资源管理都是MapReduce自己来做,所以在Hadoop1.0中,最核心的节点是JobTracker.在整个MapReduce集群中,JobTracker的性能基本决定了整个集群的性能.经过试验,发现在Hadoop1.0中,JobTracker所能管理的节点数量最多不要超过4000,一旦超过40

基于Hadoop2.0、YARN技术的大数据高阶应用实战(Hadoop2.0\YARN\Ma

Hadoop的前景 随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握Hadoop技术的开发人员并不多,直接导致了这几年hadoop技术的薪水远高于JavaEE及 Android程序员. Hadoop入门薪资已经达到了8K以上,工作1年可达到1.2W以上,具有2-3年工作经验的hadoop人才年薪可以达到30万—50万. 一般需要大数据处理的公司基本上都是大公司,所以学

Hadoop2.0/YARN深入浅出(Hadoop2.0、Spark、Storm和Tez)

随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握Hadoop技术的开发人员并不多,直接导致了这几年hadoop技术的薪水远高于JavaEE及 Android程序员. Hadoop入门薪资已经达到了 8K 以上,工作1年可达到 1.2W 以上,具有2-3年工作经验的hadoop人才年薪可以达到 30万—50万 . 一般需要大数据处理的公司基本上都是大公司,所以学习had

Hadoop2.0构成之YARN

YARN基本构成 Master/Slave组成,1个ResourceManager对应多个NodeManager: YARN由Client.ResourceManager.NodeManager.ApplicationMaster组成: Client向ResourceManager提交任务.杀死任务等: ApplicationMaster由对应的应用程序完成:每个应用程序对应一个ApplicationMaster,ApplicationMaster向ResourceManager申请资源用于在N

hadoop2.0 配置yarn成功

很久不写 BO-KE 了,来一篇吧,记住这个成功的一刻,把几个主要文件贴出来: core-site.xml: <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <config