BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Arun Murthy谈Apache YARN

| 作者 Boris Lublinsky 关注 1 他的粉丝 ,译者 王丽娟 关注 0 他的粉丝 发布于 2012年12月18日. 估计阅读时间: 13 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Apache Hadoop YARN是一种新的Hadoop资源管理器,前不久被提升为高层次的Hadoop子项目。InfoQ有幸在Hortonworks与YARN的创始人和架构师Arun Murthy进行了讨论。

Hortonworks前不久宣布,Apache Hadoop YARN(Yet Another Resource Negotiator,另一种资源协调者)已经成为ASF(Apache软件基金会)Apache Hadoop的子项目。

“Apache Hadoop YARN和Hadoop Common(核心库)、Hadoop HDFS(存储)、Hadoop MapReduce(MapReduce实现)一样,成为了Apache软件基金会顶级项目Apache Hadoop的子项目。在此之前,YARN只是Hadoop MapReduce项目的一部分。”

YARN最初是为了修复MapReduce实现里的明显不足,并对可伸缩性(支持一万个节点和二十万个内核的集群)、可靠性和集群利用率进行了提升。

YARN实现这些需求的方式是,把Job Tracker的两个主要功能(资源管理和作业调度/监控)分成了两个独立的服务程序——全局的资源管理(RM)和针对每个应用的应用Master(AM),这样,一个应用要么是传统意义上的MapReduce任务,要么是任务的有向无环图(DAG)。

和Hadoop里的其他内容一样,YARN的资源管理和执行框架都是按主/从范例实现的——节点管理器(NM)运行、监控每个节点,并向资源管理器报告资源的可用性状态,和HDFS的架构相比,最终为系统里所有应用分配资源的是资源管理器。

特定应用的执行由应用Master控制,AM负责将一个应用分割成多个任务,并和资源管理器协调执行所需的资源。资源一旦分配好,应用Master就和节点管理器一起安排、执行、监控独立的应用任务。

YARN驱动使用“应用提交客户端(Application Submission Clien)”将一个“应用”提交给YARN资源管理器。借助“ClientRMProtocol”,客户端先获取一个新的“应用ID”,然后提交运行“应用”。应用提交的信息里,包含应用Master要启动的Unix进程信息。提交信息还描述了应用运行要使用的本地文件/jar,执行需要的实际命令,以及各种Unix环境设置等。可以在这里查看编写YARN驱动的详情。

需要注意的是,YARN并不会改变MapReduce编程模型,它只是应用开发人员使用的API。YARN提供了一种新的资源管理模型和实现,用来执行MapReduce任务。因此,在最简单的情况下,现有的MapReduce应用仍然能照原样运行(需要重新编译),YARN只不过能让开发人员更精确地指定执行参数。

另外,YARN可用来创建新的框架和除MapReduce之外的执行模型,可以同时利用Hadoop集群的计算能力和丰富的数据存储模型,来解决具体的新问题。这些新的框架还可以利用YARN的资源管理,提供新的应用管理器实现。此外,这种架构还允许多个应用管理器同时存在,共享同一个Hadoop集群和驻留在集群上的数据。

InfoQ有幸在Hortonworks和YARN的创始人和架构师Arun Murthy进行了讨论,谈论了YARN及其以后的发展方向:

InfoQ:到目前为止,Hadoop在层数的限制上很与众不同,尤其和应用服务器相比。正因为“薄”,Hadoop才执行得非常快。那增加一层(容器)会不会减慢Hadoop的执行速度?

Arun:我并不这么认为。YARN只是把不同的功能移到了不同的服务里(或者是服务程序)……比如全局的集群资源管理现在完全是ResourceManager的功能,这个功能和应用的生命周期管理明显不同,应用生命周期管理现在则属于ApplicationMaster的范畴。

因此,服务和责任变得更加简单,也更容易伸缩了。

事实上,对运行在YARN里的MapReduce应用来说,性能已经有了显著提升,而且还能进行更多进一步的优化。在这里可以查看详细信息。

InfoQ:Hadoop和MapReduce最强大的特性之一是它们很简单,分离了应用开发人员和框架支持之间的关注点。我在看YARN API的例子时,发现它们非常简单,但要求很好地理解一些系统组件。你担心不担心这种复杂性会让YARN不那么吸引人?

Arun:正如你所观察到的,我们非常尽力地让YARN系统本身(即资源管理器和节点管理器)保持简单。这显著提升了伸缩性和性能,我们模拟过一万个节点的集群。可以这么说,保持接口原生能让强大的技术社区写出高性能的应用。而且,YARN本身的目标对象略有不同,尤其是和MapReduce应用的目标对象相比。我们期望YARN能有更多像MapReduce和MPI一样的简单API,以便继续给最终用户提供简单的接口。

YARN为应用开发人员提供了一套简单、功能齐全的API,而MapReduce则为最终用户提供了简单的API。

InfoQ:目前,为了更好地利用集群,Hadoop实现推出了很多自定义的输入格式实现。YARN对这种灵活性有限制么?

Arun:YARN不会对MapReduce的执行造成任何影响。目前在MapReduce里实现的所有内容都能继续工作。

InfoQ:你打算给C++ Mapper/Reducer实现提供直接支持么?现在的API都以Java为中心,对重要的C++计算来说,这迫使每个人都要使用JNI,而这并不是最方便的方法。

Arun:我团队的路线图上还没明确的计划。反过来说,这倒是挺有趣的,不过早期已经有针对C++ MR API的实现了,像百度做的(请看这里这里)。

我觉得,如果我们能把较多的社区吸引到YARN上来,我们就会看到更多的人参与进来,就有希望看到其他的替选方案。这是YARN的关键目标之一,即允许基于YARN系统的创新,而不用核心的Hadoop社区自己去交付各种可能的创新……

InfoQ:我了解到,YARN还处于测试状态。什么时候能投入生产环境使用呢?

Arun:从我的角度来说,各种迹象都很乐观。我觉得在今年年底或明年年初,YARN和包含HDFS HA的hadoop-2.x就能达到生产级别了。时间马上就要临近了,这很令人兴奋!尤其是我自己花了近两年的时间开发,YARN才成型。

InfoQ:除了内存,你还打算引入哪些资源呢?什么时候引入?

Arun:很高兴你问这个问题!我已经给YARN做了一个补丁,添加了多资源的调度(如你所说,目前只是内存这一种资源)。

我很快就会提交!这个补丁允许调度内存和CPU。之后,我们会添加更多的资源……比如磁盘或网络I/O、GPU等。

InfoQ:除了MapReduce,你还打算把哪些框架加入YARN?具体来说,有没有为Apache Hama添加应用管理器的计划?

Arun:好几个开源项目都要移植到YARN,它们现在处于不同的阶段。关于Hama,我相信Hama社区已经在主干上完成必要的工作了,能让Hama在YARN中运行(HAMA-431),我们应该很快就能看到一次发布!

前面已经说过,YARN的目标是鼓励其他社区移植到YARN上,而不一定由我们自己去完成这些工作!

我相信,借YARN开放Apache Hadoop会驱动大数据Hadoop生态系统的进一步创新——YARN会特别有吸引力,因为它具备以下主要优势:

  • YARN是和HDFS共同设计、共同开发、发布的。它能为各种应用开放HDFS上的所有数据(数百PB)。
  • YARN是唯一的大规模、目标通用的资源管理框架,特别是它的主要目的是为MapReduce等大数据应用解决关键的数据拓扑问题。这能让应用更简单、更高效地处理TB和PB级别的数据。很高兴能针对这一点再谈谈。
  • 由于YARN是Hadoop进行处理的得力部分(HDFS负责存储,YARN负责处理),它会出现在很多数据中心里,无处不在,并吸引着开发人员,成为核心、开源的平台
  • YARN决定Hadoop的规模,也就是在成千上万个节点上高效工作——这是大数据的另一个关键需求。
  • YARN本身处理了非常棘手的问题,有资源管理(集群中的免费资源在哪里、我应该把资源分配给谁)、容错(哪些节点启动了,或者停止了等)和伸缩。这能让应用框架开发人员从细枝末节里解脱出来,只关注框架。本质上讲,这和MapReduce一样的,也就是说,MR是最终用户的简单目标,但对应用框架开发人员来说却是重复的内容。

在开源世界里,使用YARN的有:

实时处理:

能替换的MapReduce的编程范式里,正在和YARN整合的有:

YARN支撑的Hadoop Wiki

InfoQ:对Hadoop生态系统来说,Apache Hadoop YARN有什么意义呢?

Arun:Hadoop社区在很多方面都体现出, YARN对Hadoop的开放所起到的作用超越了MapReduce,我们也有信心为那些想基于YARN做项目的其他社区提供支持。

YARN以前和MapReduce很像,完成了资源管理、集群管理、容错、调度等繁重的工作,能让目标社区只专注于应用的细节,包括MPI、Apache Giraph、Apache Hama、Spark等在内的这些目标社区都看到了其中的价值,正在与YARN进行集成。此外,YARN会为目标社区开放整个Hadoop社区,允许他们访问已经存储在HDFS里的数据,对Hadoop和其他社区来说,这会是个双赢的局面。

关于受访者

Arun C. Murthy是Apache软件基金会Apache Hadoop的副总裁,Apache Hadoop PMC的主席,自2006年Hadoop项目成立以来,就成为了Hadoop的全职贡献者。他也是MapReduce项目的领头人,专注于构建新一代的MapReduce(YARN)。在联合创办Hortonworks以前,Arun曾在Yahoo!负责部署在四万两千多台服务器上的所有MapReduce代码和配置。实际就是在Yahoo!负责将Apache Hadoop的MapReduce作为一个服务运行。Arun的Twitter是@acmurthy,你可以follow他。
 

 

注:文章图片来源于这里

查看英文原文:Interview with Arun Murthy on Apache YARN

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT