文章: Arun Murthy谈Apache YARN

标签: 文章 arun murthy | 发表时间:2012-12-17 21:32 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

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

您可能也会喜欢

相关 [文章 arun murthy] 推荐:

文章: Arun Murthy谈Apache YARN

- - InfoQ cn
Apache Hadoop YARN是一种新的Hadoop资源管理器,前不久被提升为高层次的Hadoop子项目. InfoQ有幸在Hortonworks与YARN的创始人和架构师Arun Murthy进行了讨论. 黑客马拉松•杭州 12月15-16日-Hacking Different,名额有限,请速报名.

文章: HTML5之美

- - InfoQ cn
如今大热的HTML5到底美在哪里. HTML5到底能为实际的移动开发带来哪些改变. 来自阿里云云手机服务运营部的前端开发工程师 正邪 (廖健)分享了他眼中的HTML5之美,主要讲诉HTML5的常见原理并从CSS、JavaScript和框架三个方面做了细致讲解:. 白伟民:酷狗音乐的HTML5实践(百度开发者大会广州站 5月31日 免费报名).

技术文章的质量

- Kai Chen - 4G spaces
推友 @StarrySource 就微薄和推特的好坏问题写了一篇文章,正好和霍炬的文章同时发出来,推特上对这两篇文章叫好的人不少,其中还有一些直接就说 StarrySource 这篇比 virushuo 写得好. 文章好坏诚然是个很主观的事情,不过就仅从文章内容来说,就算有一千个读者一千个主观标准,我也想不出什么理由来说明 StarrySource 的这篇比 virushuo 写得好,因为客观上这两篇文章的差距会抵充掉主观上的一些好恶.

英文文章編輯checklist

- friedvan - 研究生2.0
相信我,如果你想要在學術圈混下去,想要將文章投稿到國際期刊,不管是什麼領域,英文寫作都是非常重要的. 有句話是這麼說的:好的writing讓你上天堂,不好的writing帶你住套房. 不喜歡這句的話,可以換成:好的writing給你publication,不好的writing給你rejection.

文章: Grails最佳实践

- - InfoQ cn
我在IntelliGrape工作,这是一家专门使用Groovy & Grails进行开发的公司. 本文是我们Grails项目遵循的最佳实践的基本清单,收集自邮件列表、Stack Overflow、博文, 播客和 IntelliGrape的内部讨论. 它们分为控制器、服务、Domain、视图、TagLib、测试和其他.

文章: 集成Lucene和HBase

- - InfoQ cn
在所有先进的应用程序中,不管是购物站点还是社交网络乃至风景名胜站点,搜索都扮演着关键的角色. Lucene搜索程序库事实上已经成为实现搜索引擎的标准. 苹果、IBM、Attlassian(Jira)、Wolfram以及很多大家喜欢的公司【1】都使用了这种技术. 因此,大家对任何能够提升Lucene的可伸缩性和性能的实现都很感兴趣.

文章: MVVM启示录

- - InfoQ cn
熟悉WPF或Silverlight的同学应该不会对MVVM模式感到陌生了,它把应用程序划分成视图、视图模型和模型三层,如图1所示:. 百度技术沙龙第二十五期:海量数据处理技术解析(4月7日 周六). 表面上,这个层次结构还蛮清楚的,但如果你细究每层应该包含什么,事情就没那么简单了. 视图应该是最容易理解的一个部分了,它通常是指用户可以看到的界面,一般都是通过XAML代码来实现的.

文章: XA事务处理

- - InfoQ cn
本文选自迷你书 《Java事务设计策略》的第五章,译者翟静. 百度技术沙龙第二十五期:海量数据处理技术解析(4月7日 周六). 为了说明X/Open XA接口在JTA事务管理中的重要性,以及它使用的时机,我们以前一章提到的一段固定收入交易的EJB代码为例:. 这段代码中,首先预置了一笔交易,而后执行交易,这两个操作更改了数据库中不同的表.

文章: MongoDB、Java及ORM

- - InfoQ cn
目前有很多互相竞争的NoSQL产品,它们使用的方式不尽相同,但都能很好地解决大数据问题. MongoDB就是其中一款非常不错的产品. MongoDB是面向文档、无Schema的存储解决方案,它用JSON风格的文档展现、查询、修改数据. MongoDB有很丰富的文档,安装和设置都很简单,而且易于扩展.

文章: Java SE1.6中的Synchronized

- - InfoQ cn
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗,而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程.