说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Hadoop YARN的发展史与详细解析

HTML文档下载 WORD文档下载 PDF文档下载
Apache Hadoop于2005年推出,提供了核心的MapReduce处理引擎来支持大规模数据工作负载的分布式处理。7年后的今天,Hadoop正在经历着一次彻底检查,不仅支持MapReduce,还支持其他分布式处理模型。

【编者按】成熟、通用让Hadoop深得大数据玩家喜爱,即使是在YARN出现之前,在流处理框架林立下,Hadoop仍然被众多机构广泛运用在离线处理之上。借鉴于Mesos,MapReduce获得新生,YARN提供了更加优秀的资源管理器,让Storm等流处理框架同样可以运行在Hadoop集群之上;但是别忘记,Hadoop有着远比Mesos成熟的社区。从兴起到唱衰再到兴起,这头搬运大数据的大象已更加成熟、稳重,同时我们也相信,在未来container等属性加入后,Hadoop生态系统必将发扬光大。

以下为文章内容

带有 MapReduce 的 Apache Hadoop 是分布式数据处理的骨干力量。借助其独特的横向扩展物理集群架构和由 Google 最初开发的精细处理框架,Hadoop 在大数据处理的全新领域迎来了爆炸式增长。Hadoop 还开发了一个丰富多样的应用程序生态系统,包括 Apache Pig(一种强大的脚本语言)和 Apache Hive(一个具有类似 SQL 界面的数据仓库解决方案)。

不幸的是,这个生态系统构建于一种编程模式之上,无法解决大数据中的所有问题。MapReduce 提供了一种特定的编程模型,尽管已通过 Pig 和 Hive 等工具得到了简化,但它不是大数据的灵丹妙药。我们首先介绍一下 MapReduce 2.0 (MRv2) — 或 Yet Another Resource Negotiator (YARN) — 并快速回顾一下 YARN 之前的 Hadoop 架构。

Hadoop 和 MRv1 简单介绍

Hadoop 集群可从单一节点(其中所有 Hadoop 实体都在同一个节点上运行)扩展到数千个节点(其中的功能分散在各个节点之间,以增加并行处理活动)。图 1 演示了一个 Hadoop 集群的高级组件。


图 1. Hadoop 集群架构的简单演示

一个 Hadoop 集群可分解为两个抽象实体:MapReduce 引擎和分布式文件系统。MapReduce 引擎能够在整个集群上执行 Map 和 Reduce 任务并报告结果,其中分布式文件系统提供了一种存储模式,可跨节点复制数据以进行处理。Hadoop 分布式文件系统 (HDFS) 通过定义来支持大型文件(其中每个文件通常为 64 MB 的倍数)。

当一个客户端向一个 Hadoop 集群发出一个请求时,此请求由 JobTracker 管理。JobTracker 与 NameNode 联合将工作分发到离它所处理的数据尽可能近的位置。NameNode 是文件系统的主系统,提供元数据服务来执行数据分发和复制。JobTracker 将 Map 和 Reduce 任务安排到一个或多个 TaskTracker 上的可用插槽中。TaskTracker 与 DataNode(分布式文件系统)一起对来自 DataNode 的数据执行 Map 和 Reduce 任务。当 Map 和 Reduce 任务完成时,TaskTracker 会告知 JobTracker,后者确定所有任务何时完成并最终告知客户作业已完成。

从 图 1 中可以看到,MRv1 实现了一个相对简单的集群管理器来执行 MapReduce 处理。MRv1 提供了一种分层的集群管理模式,其中大数据作业以单个 Map 和 Reduce 任务的形式渗入一个集群,并最后聚合成作业来报告给用户。但这种简单性有一些隐秘,不过也不是很隐秘的问题。

MRv1 的缺陷

apReduce 的第一个版本既有优点也有缺点。MRv1 是目前使用的标准的大数据处理系统。但是,这种架构存在不足,主要表现在大型集群上。当集群包含的节点超过 4,000 个时(其中每个节点可能是多核的),就会表现出一定的不可预测性。其中一个最大的问题是级联故障,由于要尝试复制数据和重载活动的节点,所以一个故障会通过网络泛洪形式导致整个集群严重恶化。

但 MRv1 的最大问题是多租户。随着集群规模的增加,一种可取的方式是为这些集群采用各种不同的模型。MRv1 的节点专用于 Hadoop,所以可以改变它们的用途以用于其他应用程序和工作负载。当大数据和 Hadoop 成为云部署中一个更重要的使用模型时,这种能力也会增强,因为它允许在服务器上对 Hadoop 进行物理化,而无需虚拟化且不会增加管理、计算和输入/输出开销。

我们现在看看 YARN 的新架构,看看它如何支持 MRv2 和其他使用不同处理模型的应用程序。


YARN (MRv2) 简介

为了实现一个 Hadoop 集群的集群共享、可伸缩性和可靠性。设计人员采用了一种分层的集群框架方法。具体来讲,特定于 MapReduce 的功能已替换为一组新的守护程序,将该框架向新的处理模型开放。

回想一下,由于限制了扩展以及网络开销所导致的某些故障模式,MRv1 JobTracker 和 TaskTracker 方法曾是一个重要的缺陷。这些守护程序也是 MapReduce 处理模型所独有的。为了消除这一限制,JobTracker 和 TaskTracker 已从 YARN 中删除,取而代之的是一组对应用程序不可知的新守护程序。


图 2. YARN 的新架构

YARN 分层结构的本质是 ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager 将各个资源部分(计算、内存、带宽等)精心安排给基础 NodeManager(YARN 的每节点代理)。ResourceManager 还与 ApplicationMaster 一起分配资源,与 NodeManager 一起启动和监视它们的基础应用程序。在此上下文中,ApplicationMaster 承担了以前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色。

ApplicationMaster 管理一个在 YARN 内运行的应用程序的每个实例。ApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。请注意,尽管目前的资源更加传统(CPU 核心、内存),但未来会带来基于手头任务的新资源类型(比如图形处理单元或专用处理设备)。从 YARN 角度讲,ApplicationMaster 是用户代码,因此存在潜在的安全问题。YARN 假设 ApplicationMaster 存在错误或者甚至是恶意的,因此将它们当作无特权的代码对待。

NodeManager 管理一个 YARN 集群中的每个节点。NodeManager 提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。MRv1 通过插槽管理 Map 和 Reduce 任务的执行,而 NodeManager 管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。YARN 继续使用 HDFS 层。它的主要 NameNode 用于元数据服务,而 DataNode 用于分散在一个集群中的复制存储服务。

要使用一个 YARN 集群,首先需要来自包含一个应用程序的客户的请求。ResourceManager 协商一个容器的必要资源,启动一个 ApplicationMaster 来表示已提交的应用程序。通过使用一个资源请求协议,ApplicationMaster 协商每个节点上供应用程序使用的资源容器。执行应用程序时,ApplicationMaster 监视容器直到完成。当应用程序完成时,ApplicationMaster 从 ResourceManager 注销其容器,执行周期就完成了。

通过这些讨论,应该明确的一点是,旧的 Hadoop 架构受到了 JobTracker 的高度约束,JobTracker 负责整个集群的资源管理和作业调度。新的 YARN 架构打破了这种模型,允许一个新 ResourceManager 管理跨应用程序的资源使用,ApplicationMaster 负责管理作业的执行。这一更改消除了一处瓶颈,还改善了将 Hadoop 集群扩展到比以前大得多的配置的能力。此外,不同于传统的 MapReduce,YARN 允许使用 Message Passing Interface 等标准通信模式,同时执行各种不同的编程模型,包括图形处理、迭代式处理、机器学习和一般集群计算。


您需要知道的事

随着 YARN 的出现,您不再受到更简单的 MapReduce 开发模式约束,而是可以创建更复杂的分布式应用程序。实际上,您可以将 MapReduce 模型视为 YARN 架构可运行的一些应用程序中的其中一个,只是为自定义开发公开了基础框架的更多功能。这种能力非常强大,因为 YARN 的使用模型几乎没有限制,不再需要与一个集群上可能存在的其他更复杂的分布式应用程序框架相隔离,就像 MRv1 一样。甚至可以说,随着 YARN 变得更加健全,它有能力取代其他一些分布式处理框架,从而完全消除了专用于其他框架的资源开销,同时还简化了整个系统。

为了演示 YARN 相对于 MRv1 的效率提升,可考虑蛮力测试旧版本的 LAN Manager Hash 的并行问题,这是旧版 Windows® 用于密码散列运算的典型方法。在此场景中,MapReduce 方法没有多大意义,因为 Mapping/Reducing 阶段涉及到太多开销。相反,更合理的方法是抽象化作业分配,以便每个容器拥有密码搜索空间的一部分,在其之上进行枚举,并通知您是否找到了正确的密码。这里的重点是,密码将通过一个函数来动态确定(这确实有点棘手),而不需要将所有可能性映射到一个数据结构中,这就使得 MapReduce 风格显得不必要且不实用。

归结而言,MRv1 框架下的问题仅是需要一个关联数组,而且这些问题有专门朝大数据操作方向演变的倾向。但是,问题一定不会永远仅局限于此范式中,因为您现在可以更为简单地将它们抽象化,编写自定义客户端、应用程序主程序,以及符合任何您想要的设计的应用程序。


开发 YARN 应用程序

使用 YARN 提供的强大的新功能和在 Hadoop 之上构建自定义应用程序框架的能力,您还会面临新的复杂性。为 YARN 构建应用程序,比在 YARN 之前的 Hadoop 之上构建传统 MapReduce 应用程序要复杂得多,因为您需要开发一个 ApplicationMaster,这就是在客户端请求到达时启动的 ResourceManager。ApplicationMaster 有多种需求,包括实现一些需要的协议来与 ResourceManager 通信(用于请求资源)和 NodeManager(用于分配容器)。对于现有的 MapReduce 用户,MapReduce ApplicationMaster 可最大限度地减少所需的任何新工作,从而使部署 MapReduce 作业所需的工作量与 YARN 之前的 Hadoop 类似。

在许多情况下,YARN 中一个应用程序的生命周期类似于 MRv1 应用程序。YARN 在一个集群中分配许多资源,执行处理,公开用于监视应用程序进度的接触点,且最终在应用程序完成时释放资源并执行一般清理。这个生命周期的一种样板实现可在一个名为 Kitten 的项目中获得(参见 参考资料)。Kitten 是一组工具和代码,可简化 YARN 中的应用程序开发,从而使您能够将精力集中在应用程序的逻辑上,并在最初忽略协商和处理 YARN 集群中各种实体的局限性的细节。但是,如果希望更深入地研究,Kitten 提供了一组服务,可用于处理与其他集群实体(比如 ResourceManager)的交互。Kitten 提供了自己的 ApplicationMaster,很适用,但仅作为一个示例提供。Kitten 大量使用了 Lua 脚本作为其配置服务。


下一步计划

尽管 Hadoop 继续在大数据市场中发展,但它已开始了一场演变,以解决有待定义的大规模数据工作负载。YARN 仍然在积极发展且可能不适合生产环境,但 YARN 相对传统的 MapReduce 而言提供了重要优势。它允许开发 MapReduce 之外的新分布式应用程序,允许它们彼此同时共存于同一个集群中。YARN 构建于当前 Hadoop 集群的现有元素之上,但也改进了 JobTracker 等元素,可以提高可伸缩性和增强许多不同应用程序共享集群的能力。YARN 很快会来到您近旁的 Hadoop 集群中,带来它的全新功能和新复杂性。


参考资料

学习

  • 有关 Hadoop 及其生态系统中其他元素的最新新闻,请查阅  Apache Hadoop 项目站点。除了 Hadoop,您还将了解到 Hadoop 是如何(借助 YARN 等新技术)横向扩展以及(借助 Pig、Hive 等众多新技术)纵向升级的。
  • 随着 YARN 不断成熟,您会了解到使用 YARN 模型编写应用程序的早期方法。一个有用的参考资料是  编写 YARN 应用程序。您将在这篇参考资料中发现 YARN 引入的一些新复杂性,以及对于在一种 YARN 部署中用于实体间通信的各种协议的讨论。
  • 使用 Apache 的  Distributed Shell Source。
  • 查看来自  Big Data University 的关于众多主题的免费课程,包括 Hadoop 基础和文本分析精要,以及 SQL Access for Hadoop 和实时流计算。
  • Apache Hadoop 0.23 中的 MRv2,这是对一个 JARN 集群的重要技术细节的不错介绍。
  • Kitten: For Developers Who Like Playing with YARN 提供了对 YARN 应用程序开发的 Hitten 抽象的有用介绍。
  • 在  developerWorks 大数据内容专区 中了解有关大数据的更多信息。查找技术文档、指南文章、教育、下载、产品信息等。

原文链接: 将 Hadoop YARN 发扬广大 (责编/仲浩)

    用VB开发多通道仪表数据采集程序 用VB实现关闭所有数据库对象 用VB实现类电子表格的数据录入 VB用代码创建数据库,表,字段 VB用类来编写数据库程序 优化OLE的调用频率-VB资料 语言选择引起的查询错误 -VB资料 远程数据库的访问-VB资料 运用ADO进行数据库表数据互导 -VB资料 在 VB5.0中编辑数据库和电子表格 在Access 2000中用ADO-VB资料 在Access数据库中实现密码管理的另一种方式 -VB资料 在VB6.0中使ACCESS数据库在网络使用中保持同步 在VB中更改SQL Server数据库结构 在VB中兼容非ACCESS数据库的技巧 在VB中引用dbf及索引文件 在VB中运行Microsoft Access报表的好方法 在VB中直接用ODBC API访问数据库 在数据库应用中, 经常要动态生成 Select 语句,典型的情况:-VB资料 在运行时修改DataEnvironment的连接字符串-VB资料 在抓取資料庫之資料前先計算資料總筆數 -VB资料 增加 MsFlexGrid 的编辑功能-VB资料 真正删除数据库的记录 -VB资料 用VB制作屏幕保护程序 VB多媒体程序设计 VB设计动画时钟 VB游戏写作技巧(1)秀图篇 VB游戏写作技巧(2)网络篇 VB中播放WAV文件 VB中播放三维动画编程一例 Visual Basic 5.0多媒体创作技巧 哪儿有免费的jsp空间并且有数据库支持的?谢谢 客户机的WinSock控件采用TCP协议,如何使用预设的固定的端口? sos!Help me! 有谁知道怎样用Capwnd控件(用于捕获视频的控件)?? 请帮我看看,谢了 请问如何控制imagecombo控件的下拉高度呢? 能告诉我什么是回调函数吗?注册的系统回调函数中引入的参数能在别的地方得到吗? 在RicheEdit里的字体颜色都是黑色,能变成其他颜色吗? 请问在视中如何使主框架的某个菜单项变为不可用(代码如下,错在什么地方,如何改?)! 请教VFP中GRID的显示和取值问题 请教一些有关用ROSE进行UML设计的问题 高薪寻找合作者:医院信息管理系统 求救!!!!为什么必须多按reset键才可以启动?? 請教: WideString如何存入數據庫image字段? 如何判断一个字符串是数字串?要源码(无内容) 登陆某些网站后浏览器的默认主页不能更改,怎么办???谢谢 请教简单的API函数的问题 ! 简单问题,怎么样得到下拉列表的选项?????最好有简单的原码 主  题:高薪寻找合作者:医院信息管理系统 上海机械电脑有限公司??? 小弟刚刚开始自学pb有好多问题想请教各位老大 HW待遇到底咋样??? 谁在CB里面用过游标? 关于网络协议软件的开发问题,编译成什么形式? 我是个新手,请教Linux下面C编程,该怎么入手,该看些什么样的书?来则有分!!!! 高分求源代码!又谁做过票据打印的软件!帮忙给点源代码! 如何执行insert 语句效率最高 数据窗口相同记录的判断??? 关于网络协议问题 求救,怎么判断试用版的试用天数? 关于IE的问题,help~~~ 请各位老大帮忙啊 请问如何串行化一个COLORREF变量,急---谢谢! 急,急,急,数据库更新的问题 win98下的DrawText api函数与Win200Server下的有什么不用呢? 评选水园“十大杰出青年”,请大家踊跃推荐(自荐)参评! 这个(Oracle)存储过程错在那?很简单,各位大虾看一下,一定给分!!谢谢啦!!!!! 好久不来了,有个问题请高手指点! 怎样设置SQL2000的某一字段为自动类型 熟悉GDI函数的朋友请进 如何屏蔽源代码 哪位大侠行行好,把我的密码屏蔽掉,只要不需输密码,分数一定不会少。 如何用PB制作DLL,请各位大师请教! 如何得到地址薄群組的具体用戶列表? 这里有谁用过mame编译器mingw,能否说说它的用法。先谢~~,up有分 有关win2000 server下病毒的问题 有點困惑,...... 哪里能找到最全的delphi自带的函数? 谁有CuteFtp Pro的注册码? 机器进不去系统,打开电源就听到一声响,就死在那里了,再开电源还是一样,怎么回事? 生活离不开阳光? 人类在开发各种能源的同时,引发了哪些环境问题?你认为该如何解决? 磨砂手机套怎么清洗可以用清水清洗么.或者可以用眼镜布弄湿来清洗么 人类生活离不开生物的多样性,举例说明人类与生物的关系.要求动,植物各举例三个. 如何加快环氧树脂AB胶的固化时间?固化时间如何控制? 人类开发能源引发了哪些环境问题,如何解决 三坐标测量位置度应注意什么?轮廓度应怎么踩点? 环氧树脂胶为何出现假固化现象? 什么胶水能粘得住泡沫啊?玻璃胶会腐蚀泡沫么?现在做航模呢 可是大大小小的装饰城都问了 都没有泡沫胶 一问就说 是发泡胶不啊?玻璃胶是硅酸的不知道会不会腐蚀泡沫.想一下什么胶水在 用三坐标如何测量附图的面轮廓度. 使用杠杆千分表测量轴与圆柱同轴度时出现大的误差,先将测杆中心轴装在工件轴上,再将杠杆千分表(使用长测针)夹在测杆上进行测量.杠杆千分表夹在测杆上不同位置进行测量,测量误差很 如何去除玻璃上透明胶撕掉的痕迹? 轮廓度测量方法? 千分尺能测量什么?卡尺与千分尺的功能有何区别? 请问我厨房水池的管和水池中间的缝隙要用什么,原来的损坏了一半了,是用玻璃胶还是泡沫胶?如果使用是不是要等到水池干了以后再封上? 水晶AB胶和水晶滴胶区别在哪里? 用千分尺怎样刚好就量到的就是外圆直径 有什么方法 请问厨房水池和下水管之间缝隙用什么胶?玻璃胶还是泡沫胶?(如图)用的时候是不是要等水池干了再用上 三坐标测量轮廓度时公差怎么分?如轮廓度为0.064mm,是±0.032mm这样分吗? 怎么举例说明人离不开地球再说说如果没有这一切,我们会怎么样?我上课要用! 怎样把5mmPVC板(1.22*2.44m)固定在玻璃上?用玻璃胶加泡沫胶能行吗 50分 水晶滴胶可不可以用AB胶代替没有水晶滴胶,能不能用AB胶代替 什么情况下会影响千分尺测量? 有什么不导电的金属?如题求教 如果没有的话一些较稳定的固体物质也可以的 生物生存离不开周围的() 量铜丝的千分尺怎么使用,怎么使用千分尺测量出铜丝的粗细? 什么金属不导电 生物生存离不开周围的什么?a.动物,植物   b.微生物   c.环境  d.气候条件 人类的生存和发展离不开( )和( ) 不导电的金属? 生物生存离不开什么要从(动植物) (环境) (气候条件).中选一个. 为什么木头不导电? 如何清除玻璃上的胶痕好用有实用, 而且不留檫痕,,表面 光泽 生物的生活离不开什么和什么 为什么木头桌子导电桌子上是电脑 桌子是干的 木头的 用手腕轻轻的放在桌子上会有电 干木头为什么会导电 企业文化建设为什么要注重环境保护和可持续发展 机械设计中同时标注平行度和平面度时,平行度应该大于平面度吗 湿木头是如何导电的单独用水是不能导电的,为什么湿了水后,就可以导电了 金属为什么导电他与塑料有何不同.有不导电的吗 平面度标注的意思 地球是我们唯一的家园摊位人类生存与发展提供了什么什么和什么,我们的生活离不开地球 手机上的触摸屏玻璃是导电玻璃吗是什么型号的导电玻璃呢,知道的请帮忙回答, 做磁路用的AB胶用哪种化学药水能够清洗 玻璃胶、泡沫胶弄到衣服上了,怎样才能弄掉呀 玻璃导电吗? 手上的环氧树脂AB胶水用什么洗最好?除了酒精和丙酮,还有没有可以用来清洗的?最好方便点的 且不伤手的.【弟弟每天都要接触环氧胶水 每天都要清洗 有没有什么护手霜好一点】 碳为什么能导电?在电解铝的阳极炭块, 碳是非金属材料,非金属的结构,我想知道碳导电的机理是什么?除了碳还有什么非金属能导电? 什么是导电玻璃,起什么作用?导电玻璃和一般的玻璃有什么区别? 螺旋测微器如何测量?如题:如何用螺旋测微器测量?如何读数? 干木头为什麽不会导电? 酷派5910橡胶手机套怎么洗才洗的干净? 千分尺测量问题请问我如果要测试的是大约一张纸那么薄的金属片..24张金属片..最最薄的可能只有复写纸那么薄,厚的也不过一毫米..千分尺能搞定吗?金属片厚度都不同.不是叠放.是单独测量. 西安哪里有卖海绵橡胶或者泡沫橡胶的? 导电玻璃是怎样导电的?哪能买得到? 举例说明我们的生活离不开光? 在手不碰到水的情况下带水的木头筷子导电吗? 如何清洗手机套 有没有什么植物或生物生存不需要阳光?如果有,请把那种生物介绍尽量详细一点,感激不尽! 人类的能源主要有哪些.这些能源的开发利用前景如何.对环境影响如何 玻璃可以导电吗?
    备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn