【问题标题】:MapReduce 2 vs YARN applicationsMapReduce 2 与 YARN 应用程序
【发布时间】:2015-06-25 08:03:38
【问题描述】:

对于如何开发新的 MapReduce2 应用程序以使用 YARN 以及旧的应用程序会发生什么,我有点困惑。

我目前有 MapReduce1 应用程序,主要包括:

  • 配置要提交到集群的作业的驱动程序(以前的 JobTracker 和现在的 ResourceManager)。
  • 映射器 + 减速器

从一方面我看到,在 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 应用程序。

我的问题是:

  1. YARN 应用程序是否包括MapReduce 应用程序?
  2. 我是否应该像YARN 应用程序那样编写代码,忘记驱动程序 并创建 Yarn 客户端,ApplicationMasters 等等?
  3. 我仍然可以使用驱动程序 + 作业设置开发客户端类吗? MapReduce1(使用 MR2 库重新编译)作业是否由 YARN 管理 与 YARN 应用程序一样吗?
  4. MapReduce1 应用程序和 YARN 应用程序在 YARN 内部管理它们的方式方面有何区别?

提前致谢

【问题讨论】:

    标签: mapreduce hadoop-yarn hadoop2


    【解决方案1】:

    HADOOP 版本 1

    JobTracker负责资源管理---管理从节点---主要功能涉及

    • 跟踪资源消耗/可用性
    • 作业生命周期管理——调度作业的单个任务,跟踪进度,为任务提供容错能力。

    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 数据。

    【讨论】:

      【解决方案2】:

      请参阅YARN 架构和相关 SE 帖子上的 Apache 文档页面:

      Hadoop gen1 vs Hadoop gen2

      YARN 应用程序是否包括 MapReduce 应用程序?

      YARN 支持Mapreduce 应用程序。与 Hadoop 1.x 不同,它还运行 Spark 作业。

      我是否应该像编写 YARN 应用程序一样编写代码,忘记驱动程序并创建 Yarn 客户端、ApplicationMaster 等?

      是的。您应该忘记所有这些应用程序组件并编写您的应用程序。看看样本code

      我仍然可以使用驱动程序 + 作业设置来开发客户端类吗? ¿ MapReduce1(使用 MR2 库重新编译)作业是否由 YARN 以与 YARN 应用程序相同的方式管理?

      是的。你可以做。但是看看这个兼容性article

      在 YARN 内部管理它们的方式方面,MapReduce1 应用程序和 YARN 应用程序之间有什么区别?

      参考这篇 SE 帖子:

      What additional benefit does Yarn bring to the existing map reduce?

      【讨论】:

        【解决方案3】:

        YARN 只是一个集群管理器。

        • 首先必须为 YARN 开发应用程序(如果尚未实现)。 Here 是少数 YARN 支持的应用程序。如果您想在 YARN 上运行新应用程序,this 是指南。

        • 然后可以在 YARN 上运行相同的 MR/Spark/Hama 程序。

        【讨论】:

        • 也就是说,如果我想开发一个 MapReduce 应用程序,我必须编写 YarnClient 和 ApplicationMaster 类?我不能像往常一样写一个带有作业配置的驱动程序来向集群提交作业吗?在 MR1 中开发的应该在 YARN 中工作的 MR 应用程序会发生什么? YARN 内部管理它们的方式存在差异?
        • YARN 客户端和 AM 类已经为某些应用程序 [1] (wiki.apache.org/hadoop/PoweredByYarn) 开发,例如 MR、BSP、Hama 等。所以,你不需要。对于任何新类型,您都需要。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-18
        • 2020-05-15
        • 2019-03-16
        • 1970-01-01
        • 1970-01-01
        • 2015-01-12
        相关资源
        最近更新 更多