文章: Arun Murthy谈Apache YARN
Apache Hadoop YARN是一种新的Hadoop资源管理器,前不久被提升为高层次的Hadoop子项目。InfoQ有幸在Hortonworks与YARN的创始人和架构师Arun Murthy进行了讨论。
相关厂商内容
黑客马拉松•杭州 12月15-16日-Hacking Different,名额有限,请速报名
《JavaScript语言精粹》作者Douglas Crockford确认参会
QCon北京Node.js专场:异步非阻塞,单线程,事件驱动,如何在企业应用落地发挥成效?
个性化推荐系统仅是大企业专利?如何正确实施,大幅提升企业生产力?尽在QCon推荐系统专题
相关赞助商
GitHub研发团队成员Corey Donoho QCon分享Github架构设计与团队合作, 详情请点击!
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整合的有:
InfoQ:对Hadoop生态系统来说,Apache Hadoop YARN有什么意义呢?
Arun:Hadoop社区在很多方面都体现出, YARN对Hadoop的开放所起到的作用超越了MapReduce,我们也有信心为那些想基于YARN做项目的其他社区提供支持。
YARN以前和MapReduce很像,完成了资源管理、集群管理、容错、调度等繁重的工作,能让目标社区只专注于应用的细节,包括MPI、Apache Giraph、Apache Hama、Spark等在内的这些目标社区都看到了其中的价值,正在与YARN进行集成。此外,YARN会为目标社区开放整个Hadoop社区,允许他们访问已经存储在HDFS里的数据,对Hadoop和其他社区来说,这会是个双赢的局面。
关于受访者
注:文章图片来源于 这里。
查看英文原文: Interview with Arun Murthy on Apache YARN