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 及其以后的发展方向:
到目前为止,Hadoop 在层数的限制上很与众不同,尤其和应用服务器相比。正因为“薄”,Hadoop 才执行得非常快。那增加一层(容器)会不会减慢 Hadoop 的执行速度?
Hadoop 和 MapReduce 最强大的特性之一是它们很简单,分离了应用开发人员和框架支持之间的关注点。我在看 YARN API 的例子时,发现它们非常简单,但要求很好地理解一些系统组件。你担心不担心这种复杂性会让 YARN 不那么吸引人?
目前,为了更好地利用集群,Hadoop 实现推出了很多自定义的输入格式实现。YARN 对这种灵活性有限制么?
你打算给 C++ Mapper/Reducer 实现提供直接支持么?现在的 API 都以 Java 为中心,对重要的 C++ 计算来说,这迫使每个人都要使用 JNI,而这并不是最方便的方法。
我了解到,YARN 还处于测试状态。什么时候能投入生产环境使用呢?
除了内存,你还打算引入哪些资源呢?什么时候引入?
除了 MapReduce,你还打算把哪些框架加入 YARN?具体来说,有没有为 Apache Hama 添加应用管理器的计划?
对 Hadoop 生态系统来说,Apache Hadoop YARN 有什么意义呢?
关于受访者
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