可以使用相同的代码用于hadoop和yarn

时间:2014-04-02 20:07:59

标签: hadoop yarn

我一直在考虑这个问题。我一直试图通过运行基本的单词计数示例来比较hadoop 1与yarn的性能。我仍然不确定如何使用相同的.jar文件在两个框架上执行。据我所知,yarn有一组不同的api用于设置与资源管理器的连接,创建应用程序主机等。   因此,如果我开发一个应用程序(.jar),它是否可以在两个框架上运行而无需更改代码?   对于特定应用,区分hadoop与纱线的有用参数是什么?

2 个答案:

答案 0 :(得分:2)

好的,我们在这里澄清一些条款。

Hadoop 是一个伞状系统,包含分布式存储和处理所需的各种组件。我相信当你说 hadoop 1 时你正在寻找的术语是 MapReduce v1(MRv1)

MRv1 是Hadoop的一个组件,包括作业跟踪器和任务跟踪器。它只依赖于HDFS。

YARN 是Hadoop的一个组件,它抽象出MRv1的资源管理部分。

MRv2 是重写为在YARN之上运行的mapreduce应用程序。

因此,当您询问 hadoop 1 是否可与 YARN 互换时,您实际上可能会询问 MRv1 是否可与互换强> MRv2 即可。答案通常是肯定的。 Hadoop系统知道如何在两个mapreduce平台上运行相同的mapreduce应用程序。

答案 1 :(得分:0)

添加到登山者的答案:

Hadoop v1 vs v2

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完全向后兼容 ---是一个应用程序(.jar),可以在两个框架上运行而无需更改代码。

MapReduce之前已集成在Hadoop Core中 - 唯一与HDFS中的数据交互的API。现在在Hadoop v2中它作为一个单独的应用程序运行,Hadoop v2允许其他应用程序编程框架 - 例如MPI ---来处理HDFS数据。

Hadoop 1.0 vs 2.0