我对如何开发新的 MapReduce2 应用程序以使用 YARN 以及旧应用程序会发生什么感到有些困惑。
我目前有 MapReduce1 应用程序,主要包括:
一方面,我看到在 MapReduce1 中编码的应用程序与 MapReduce2/YARN 兼容,但有一些警告,只需使用新的 CDH5 库重新编译(我使用 Cloudera 发行版)。
但从另一方面,我看到有关以不同于 MapReduce 的方式编写 YARN 应用程序的信息(使用 YarnClient、ApplicationMaster 等):
http://hadoop.apache.org/docs/r2.7.0/hadoop-yarn/hadoop-yarn-site/WritingYarnApplications.html
但对我来说,YARN 只是架构以及集群如何管理您的 MR 应用程序。
我的问题是:
YARN
应用程序是否包括 MapReduce
应用程序? YARN
应用程序一样编写我的代码,忘记驱动程序并创建 Yarn 客户端、
ApplicationMasters
等等? MapReduce1
(使用 MR2 库重新编译)作业是否由 YARN
管理以与 YARN 应用程序相同的方式?
MapReduce1
应用程序和 YARN
应用程序在 YARN
内部管理它们的方式方面有什么区别? 提前致谢
最佳答案
HADOOP 版本 1
JobTracker负责资源管理---管理slave节点---主要功能涉及
Hadoop v1 的问题
JobTracker 负责所有产生的 MR 应用程序,它是单点故障——如果 JobTracker 宕机,集群中的所有应用程序都会被杀死。而且,如果集群有大量的应用程序,JobTracker 就会成为性能瓶颈,为了解决可扩展性和作业管理的问题,Hadoop v2 被发布了。
Hadoop v2
YARN 的基本思想是将 Job-Tracker 的两个主要职责——即资源管理和作业调度/监控——拆分为单独的守护进程:全局 ResourceManager 和每个应用程序的 ApplicationMaster (AM)。 ResourceManager 和每个节点的从属节点 NodeManager (NM) 形成了新的通用操作系统,用于以分布式方式管理应用程序。
为了与新的资源管理和调度进行交互,开发了一个 Hadoop YARN mapReduce 应用程序---MRv2 与 mapReduce 编程 API 无关
应用程序程序员将看不到 MRv1 和 MRv2 之间的区别,MRv2 完全向后兼容---是的 MR 应用程序(.jar),可以在两个框架上运行而无需更改代码。
Hadoop 2.x 已经包含了 MR Client 和 AppMaster 的代码,程序员只需要专注于他们的 MapReduce 应用程序。
MapReduce 以前集成在 Hadoop Core 中——唯一与 HDFS 中的数据交互的 API。现在在 Hadoop v2 中它作为一个单独的应用程序运行,Hadoop v2 允许其他应用程序编程框架——例如 MPI——来处理 HDFS 数据。
关于MapReduce 2 与 YARN 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31044575/