写点什么

Arun Murthy 谈 Apache YARN

  • 2012-12-17
  • 本文字数:3739 字

    阅读完需:约 12 分钟

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

2012-12-17 07:324672
用户头像

发布了 151 篇内容, 共 65.8 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

测试开发 | 人工智能的未来发展:科技新时代的奇迹之旅

测吧(北京)科技有限公司

测试

用AI为AI PC打造最强内核,英特尔是怎么做到的?

E科讯

产品经理该不该设计数据库表?

菜根老谭

KubeWharf:云原生操作系统引领大规模分布式应用的新时代

熬夜磕代码、

你需要的圣诞祝福模板都在这里了!过不过圣诞都能用!

九凌网络

【FAQ】运动健康服务云侧数据常见问题及解答

HarmonyOS SDK

BMF 开箱体验 开源赛道 1:高效视频处理

Echo_Wish

Python 视频处理 开源赛道1 BMF 高效视频处理

E往无前 | 腾讯云大数据ES日志轻接入和免运维最佳实践

腾讯云大数据

ES

【写作训练营打卡|10】内容创作方式

文心一言 VS 讯飞星火 VS chatgpt (160)-- 算法导论12.4 2题

福大大架构师每日一题

福大大架构师每日一题

大模型实践 | 为慧眼智能可观测平台插上ChatInsight的翅膀

网易数帆

可观测性 网易 大模型 AIGC ChatInsight

Google 沙盒效应是什么?网站如何避免谷歌沙盒!

九凌网络

支持GPU虚拟化的云桌面厂家有哪些?

青椒云云电脑

云桌面 云桌面厂家

一位福友的2023年外贸总结

九凌网络

产品破局思考:一个思维,一种策略

菜根老谭

大模型之提示工程的使用与总结 主赛道:技术人的 2023 总结

Echo_Wish

技术 年度总结 大模型 2023 提示工程

软件测试/测试管理圆桌讨论会 | 解锁测试管理的核心问题,提升您的管理实力!

霍格沃兹测试开发学社

我们为什么要标准定价?如何定价?

菜根老谭

产品经理 产品标准化

每日一题:LeetCode-394. 字符串解码

Geek_4z9ami

Go 算法 递归 LeetCode 字符串

深入解读ReAct框架

Bob Lin

AI Python3 openai GPT-4 #LangChain

测试开发 | 数字化创新在文化保护中的崭新探索

测吧(北京)科技有限公司

测试

软件测试/测试开发/人工智能 | 测试管理核心问题,提升管理实力!

测试人

人工智能 软件测试 测试开发

独家好书丨《智算时代的容器技术演进与实践》免费下载

阿里巴巴云原生

阿里云 云原生 容器服务

MegEngine 优化 dataloader 使用体验!data monitor 帮助更好定位性能瓶颈

MegEngineBot

性能优化 Data 开源框架

华为云多活高可用服务MAS荣获“2023年香港星光奖“

华为云PaaS服务小智

云计算 华为云

Arun Murthy谈Apache YARN_开源_Boris Lublinsky_InfoQ精选文章