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