更快、更强——解析Hadoop新一代MapReduce框架Yarn

  对于业界的">大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,随着需求的发展,Yarn 框架浮出水面, @依然光荣复兴的 博客给我们做了很详细的介绍,读者通过本文中新旧 Hadoop MapReduce 框架的对比,更能深刻理解新的 yarn 框架的技术原理和设计思想。

  背景

  Yarn是一个分布式的资源管理系统,用以提高分布式的集群环境下的资源利用率,这些资源包括内存、IO、网络、磁盘等。其产生的原因是为了解决原MapReduce框架的不足。最初MapReduce的committer们还可以周期性的在已有的代码上进行修改,可是随着代码的增加以及原MapReduce框架设计的不足,在原MapReduce框架上进行修改变得越来越困难,所以MapReduce的committer们决定从架构上重新设计MapReduce,使下一代的MapReduce(MRv2/Yarn)框架具有更好的扩展性、可用性、可靠性、向后兼容性和更高的资源利用率以及能支持除了MapReduce计算框架外的更多的计算框架。

  原MapReduce框架的不足

  JobTracker是集群事务的集中处理点,存在单点故障

  JobTracker需要完成的任务太多,既要维护job的状态又要维护job的task的状态,造成过多的资源消耗

  在taskTracker端,用map/reduce task作为资源的表示过于简单,没有考虑到CPU、内存等资源情况,当把两个需要消耗大内存的task调度到一起,很容易出现OOM

  把资源强制划分为map/reduce slot,当只有map task时,reduce slot不能用;当只有reduce task时,map slot不能用,容易造成资源利用不足。

  Yarn架构

  Yarn/MRv2最基本的想法是将原JobTracker主要的资源管理和job调度/监视功能分开作为两个单独的守护进程。有一个全局的ResourceManager(RM)和每个Application有一个ApplicationMaster(AM),Application相当于map-reduce job或者DAG jobs。ResourceManager和NodeManager(NM)组成了基本的数据计算框架。ResourceManager协调集群的资源利用,任何client或者运行着的applicatitonMaster想要运行job或者task都得向RM申请一定的资源。ApplicatonMaster是一个框架特殊的库,对于MapReduce框架而言有它自己的AM实现,用户也可以实现自己的AM,在运行的时候,AM会与NM一起来启动和监视tasks。

  ResourceManager

  ResourceManager作为资源的协调者有两个主要的组件:Scheduler和ApplicationsManager(AsM)。

  Scheduler负责分配最少但满足application运行所需的资源量给Application。Scheduler只是基于资源的使用情况进行调度,并不负责监视/跟踪application的状态,当然也不会处理失败的task。RM使用resource container概念来管理集群的资源,resource container是资源的抽象,每个container包括一定的内存、IO、网络等资源,不过目前的实现只包括内存一种资源。

  ApplicationsManager负责处理client提交的job以及协商第一个container以供applicationMaster运行,并且在applicationMaster失败的时候会重新启动applicationMaster。下面阐述RM具体完成的一些功能。

  资源调度:Scheduler从所有运行着的application收到资源请求后构建一个全局的资源分配计划,然后根据application特殊的限制以及全局的一些限制条件分配资源。

  资源监视:Scheduler会周期性的接收来自NM的资源使用率的监控信息,另外applicationMaster可以从Scheduler得到属于它的已完成的container的状态信息。

  Application提交:

  client向AsM获得一个applicationIDclient将application定义以及需要的jar包

  client将application定义以及需要的jar包文件等上传到hdfs的指定目录,由yarn-site.xml的yarn.app.mapreduce.am.staging-dir指定

  client构造资源请求的对象以及application的提交上下文发送给AsM

  AsM接收application的提交上下文

  AsM根据application的信息向Scheduler协商一个Container供applicationMaster运行,然后启动applicationMaster

  向该container所属的NM发送launchContainer信息启动该container,也即启动applicationMaster、AsM向client提供运行着的AM的状态信息。

  AM的生命周期:AsM负责系统中所有AM的生命周期的管理。AsM负责AM的启动,当AM启动后,AM会周期性的向AsM发送heartbeat,默认是1s,AsM据此了解AM的存活情况,并且在AM失败时负责重启AM,若是一定时间过后(默认10分钟)没有收到AM的heartbeat,AsM就认为该AM失败了。

  关于ResourceManager的可用性目前还没有很好的实现,不过Cloudera公司的CDH4.4以后的版本实现了一个简单的高可用性,使用了Hadoop-common项目中HA部分的代码,采用了类似hdfs namenode高可用性的设计,给RM引入了active和standby状态,不过没有与journalnode相对应的角色,只是由zookeeper来负责维护RM的状态,这样的设计只是一个最简单的方案,避免了手动重启RM,离真正的生产可用还有一段距离。

  NodeManager

  NM主要负责启动RM分配给AM的container以及代表AM的container,并且会监视container的运行情况。在启动container的时候,NM会设置一些必要的环境变量以及将container运行所需的jar包、文件等从hdfs下载到本地,也就是所谓的资源本地化;当所有准备工作做好后,才会启动代表该container的脚本将程序启动起来。启动起来后,NM会周期性的监视该container运行占用的资源情况,若是超过了该container所声明的资源量,则会kill掉该container所代表的进程。

  另外,NM还提供了一个简单的服务以管理它所在机器的本地目录。Applications可以继续访问本地目录即使那台机器上已经没有了属于它的container在运行。例如,Map-Reduce应用程序使用这个服务存储map output并且shuffle它们给相应的reduce task。

  在NM上还可以扩展自己的服务,yarn提供了一个yarn.nodemanager.aux-services的配置项,通过该配置,用户可以自定义一些服务,例如Map-Reduce的shuffle功能就是采用这种方式实现的。

  NM在本地为每个运行着的application生成如下的目录结构:

  Container目录下的目录结构如下:

  在启动一个container的时候,NM就执行该container的default_container_executor.sh,该脚本内部会执行launch_container.sh。launch_container.sh会先设置一些环境变量,最后启动执行程序的命令。对于MapReduce而言,启动AM就执行org.apache.hadoop.mapreduce.v2.app.MRAppMaster;启动map/reduce task就执行org.apache.hadoop.mapred.YarnChild。

  ApplicationMaster

  ApplicationMaster是一个框架特殊的库,对于Map-Reduce计算模型而言有它自己的ApplicationMaster实现,对于其他的想要运行在yarn上的计算模型而言,必须得实现针对该计算模型的ApplicationMaster用以向RM申请资源运行task,比如运行在yarn上的spark框架也有对应的ApplicationMaster实现,归根结底,yarn是一个资源管理的框架,并不是一个计算框架,要想在yarn上运行应用程序,还得有特定的计算框架的实现。由于yarn是伴随着MRv2一起出现的,所以下面简要概述MRv2在yarn上的运行流程。

  MRv2运行流程:

  MR JobClient向resourceManager(AsM)提交一个job

  AsM向Scheduler请求一个供MR AM运行的container,然后启动它

  MR AM启动起来后向AsM注册

  MR JobClient向AsM获取到MR AM相关的信息,然后直接与MR AM进行通信

  MR AM计算splits并为所有的map构造资源请求

  MR AM做一些必要的MR OutputCommitter的准备工作

  MR AM向RM(Scheduler)发起资源请求,得到一组供map/reduce task运行的container,然后与NM一起对每一个container执行一些必要的任务,包括资源本地化等

  MR AM 监视运行着的task 直到完成,当task失败时,申请新的container运行失败的task

  当每个map/reduce task完成后,MR AM运行MR OutputCommitter的cleanup 代码,也就是进行一些收尾工作

  当所有的map/reduce完成后,MR AM运行OutputCommitter的必要的job commit或者abort APIs

  MR AM退出。

  在Yarn上写应用程序

  在yarn上写应用程序并不同于我们熟知的MapReduce应用程序,必须牢记yarn只是一个资源管理的框架,并不是一个计算框架,计算框架可以运行在yarn上。我们所能做的就是向RM申请container,然后配合NM一起来启动container。就像MRv2一样,jobclient请求用于MR AM运行的container,设置环境变量和启动命令,然后交由NM去启动MR AM,随后map/reduce task就由MR AM全权负责,当然task的启动也是由MR AM向RM申请container,然后配合NM一起来启动的。所以要想在yarn上运行非特定计算框架的程序,我们就得实现自己的client和applicationMaster。另外我们自定义的AM需要放在各个NM的classpath下,因为AM可能运行在任何NM所在的机器上。

时间: 2024-10-02 10:00:20

更快、更强——解析Hadoop新一代MapReduce框架Yarn的相关文章

Hadoop新MapReduce框架Yarn详解

Hadoop MapReduceV2(Yarn) 框架简介 原 Hadoop MapReduce 框架的问题 对于业界的大数据存储及分布式 处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,读者 可参考 Hadoop 官方简介.使用和学习过老 Hadoop 框架(0.20.0 及之前版本)的同仁应该很熟悉如下的原 MapReduce 框 架图: 图 1.Hadoop 原 MapReduce 架构 从上图中可以清楚的看出原 Map

Docker将会改变Hadoop,变的更快更容易

本文讲的是Docker将会改变Hadoop,变的更快更容易,[编者的话] 最近在San Jose,Clif开幕的hadoop峰会上会有关于Docker和Hadoop的话题讨论,越来越多的创业公司致力于使用Docker技术来简化hadoop应用开发部署的速度.目前有两个方向:1)使用Docker容纳Hadoop stack:2)通过YARN来部署基于Docker开发的容器化应用.  本周,hadoop峰会召开,其中着重讨论了新平台(例如docker)将会如何在hadoop环境下改变大数据分析行业.

与阿里云整个生态体系共同成长,更快更好的为房地产行业客户提供高价值的服务。

免费开通大数据服务:https://www.aliyun.com/product/odps "最早是新业务要做,但是买服务器来不及,管理员没到位,而且新业务的成本很高,是否能成功也是未知,因此明源决定采用阿里云,等资金和人到位再搬到自己内部.然而就是这种误打误撞,却让明源抓住了一个很好的机会走在了正确的轨道上."--副总裁童继龙 "阿里云数加的覆盖面很广,从存储.计算到上层应用,提供了一整套的解决方案,确实起到了马总说的普惠大数据.此外,数加也在不断的迭代,不停的有新产品出现

Yarn 更快更可靠的 CI 创建工具

本文讲的是Yarn 更快更可靠的 CI 创建工具, 你可能听说过 Yarn ,它剑指苍穹,要做成一个更快.更可靠的 npm 客户端.能够更快的在本地安装扩展包的确很棒,但是为了真正能够使用 Yarn 到淋漓尽致,你最好在持续继集成务器上使用它. 当配合一台持续集成服务器使用时,Yarn 能够减少因为各式各样的安装包的解析方式不同导致的随机 CI 错误. 由于安装缓慢和 CI 产生的随机错误会降低整个团队的开发效率,它们将会成倍地给你的团队拖后腿.随机错误的出现甚至比安装缓慢更令人沮丧,因为一旦出

活用大师和兔子 系统更快更安全_WindowsXP

Windows大师和超级兔子魔法设置是两款非常不错的软件!~菜鸟们应该灵活运用让系统更快 更好 更安全!~ 现在关于优化系统的文章实在是多如牛毛,我就介绍点实用的给菜鸟们吧!~高手可以止步. 其实很多优化软件都是基于修改注册表的方法来实现的!~ 大师也不例外 Windows大师: 运用"自动优化"和系统医生" 自动优化只需要运行一次既可 而系统医生 应该每周一次 关于上述优化都有文字说明 ~照做既可!开机优化 是个非常实用的东东! 它是通过 修改注册表HKEY_LOCAL_M

PCR反应中的强大新技术:让基因分析变得更快更便宜

雷锋网AIHealth栏目按:DNA在高温时可以发生变性解链,当温度降低后又可以复性成为双链.因此,通过温度变化控制DNA的变性和复性,加入设计引物,DNA聚合酶.dNTP就可以完成特定基因的体外复制,此即为PCR体外扩增DNA的原理. 范德堡大学的研究人员开发了一种PCR反应中扩增DNA链的新方法,据称这种技术可以让基因分析变得更快更便宜,研究人员称之为适应性PCR技术(adaptive PCR ),该技术的核心是通过左旋DNA调节和监控PCR反应过程. 左旋DNA 正常DNA是右旋双螺旋结构

怎么让win7运行更快更流畅

怎么让win7运行更快更流畅   首先只有先了解系统服务的一些相关知识,然后才能根据Windows7用户的各种不同需求提供有针对性Windows7系统服务清理方案,提高Windows7的运行速度. 什么是服务? 服务是系统用以执行指定系统功能的程序或进程,其功用是支持其他应用程序,一般在后台运行.与用户运行的程序相比,服务不会出现程序窗口或对话框,只有在任务管理器中才能观察到它们的身影. 如何修改服务的启动类型? 在Win7开始菜单的"搜索程序和文件"栏里输入"service

天翼4G到来后,大家可以体验到更快更好的网络

摘要: 12月10日,中国电信发布了天翼4G的广告形象,天翼4G微笑宝宝一时之间占据百余城市核心区域,将美好即将开始传递给大众,这种美好将带给我们更自由奔放的生活,更激情绽放的自我 12月10日,中国电信发布了"天翼4G"的广告形象,天翼4G微笑宝宝一时之间占据百余城市核心区域,将"美好即将开始"传递给大众,这种美好将带给我们更自由奔放的生活,更激情绽放的自我,这就是天翼4G"更快更好"的美好开始! 天翼4G到来后,大家可以体验到更快更好的网络,

酷派4G手机“更快更爽” 获两会记者青睐

"4G最大的 优点是快,作为终端(体验)来讲是爽."3月5日,宇龙酷派副总裁曹井升在"酷派4G跑两会"活动启动仪式上表示,相比2G.3G而言,4G手机在http://www.aliyun.com/zixun/aggregation/9270.html">使用体验上感觉完全不同,看视频的时候不卡壳了,还可以在线传视频.而这些优势,对于"抢新闻"的两会记者而言,将会发挥更多作用──利用酷派的4G终端不仅可以实现现场高清拍照,还可以视频