MRv2 / YARN功能

时间:2015-01-13 01:26:22

标签: hadoop mrv2

我试图了解新API的实际目的,并通过互联网阅读,我找到了与我处理的相同问题的不同答案。

我想知道答案的问题是:

1)哪个MRv2 / YARN守护程序负责启动应用程序容器和监视应用程序资源使用情况。

2)MRv2 / YARN旨在解决哪两个问题?

我会尝试通过指定搜索中的资源和实际数据,使这个主题对其他读者具有教育意义和建设性,所以我希望看起来我提供的信息太多而不能提出问题并缩短我的帖子。

对于第一个问题,阅读文档,我可以找到3个主要资源:

来自Hadoop文档:

  

ApplicationMaster< - > NodeManager启动容器。与交流   NodeManagers通过使用NMClientAsync对象,处理容器事件   通过NMClientAsync.CallbackHandler

     

ApplicationMaster与YARN群集进行通信,并进行处理   应用执行。它以异步方式执行操作   时尚。在应用程序启动期间,主要任务是   ApplicationMaster是:

     

a)与ResourceManager通信以进行协商和分配   未来容器的资源,

     

b)分配容器后,   通信YARN NodeManagers(NM)以启动应用程序容器   在他们身上。

来自Hortonworks文档

  

ApplicationMaster实际上是一个实例   特定于框架的库并负责谈判   ResourceManager中的资源和使用NodeManager的资源   执行和监视容器及其资源消耗。   它有责任谈判适当的资源   来自ResourceManager的容器,跟踪它们的状态和   监测进展情况。

来自Cloudera文档:

  

MRv2守护进程 -

     

ResourceManager - 每个群集一个 - 启动ApplicationMasters,在从属节点上分配资源

     

ApplicationMaster - 每个作业一个 - 请求资源,管理单个Map和Reduce任务

     

NodeManager - 每个从属节点一个 - 管理各个从属节点上的资源

     

JobHistory - 每个群集一个 - 存档作业的指标和元数据

回到问题(哪些守护进程负责启动应用程序容器和监视应用程序资源使用情况)我问自己:

NodeManager 吗?是 ApplicationMaster 吗?

根据我的理解,ApplicationMaster是让NodeManager实际完成工作的人,所以就像问谁负责从地面抬起一个盒子,那些是谁做的实际解除控制身体的心灵并使他们完成提升......

我想这是一个棘手的问题,但只有一个答案。

对于第二个问题,在线阅读,我可以从许多资源中找到不同的答案,从而产生混淆,但我的主要来源是:

来自Cloudera文档:

  

MapReduce v2(“MRv2”) - 建立在YARN之上(然而"另一个资源NegoGator)

     

- 使用ResourceManager / NodeManager架构

     

- 增加集群的可扩展性

     

- 节点资源可用于任何类型的任务

     

- 提高群集利用率

     

- 支持非/ MR工作

回到问题(MRv2 / YARN旨在解决哪两个问题?),我知道MRv2做了一些改变,比如防止JobTracker上的资源压力(在MRv1中,集群中的最大节点数可能是4000左右) ,在MRv2中它是这个数字的2倍以上),而且我也知道它提供了运行MapReduce之外的框架的能力,比如MPI。

来自文档:

  

Application Master提供了许多功能   传统的ResourceManager使整个系统可以扩展   更显着。在测试中,我们已经成功模拟了   10,000个节点集群由现代硬件组成,没有显着性   问题。

  

将所有特定于应用程序框架的代码移入   ApplicationMaster概括了系统,以便我们现在可以支持   多个框架,如MapReduce,MPI和Graph Processing。

但是我也认为它处理的是NameNode是单点故障的事实,而在新版本中,通过高可用性模式有备用NameNode(我可能会混淆旧的vs的功能) 。新的API,具有MRv1与MRv2的功能,可能是我的问题的原因):

  

在Hadoop 2.0.0之前,NameNode是单点故障   HDFS群集中的(SPOF)。每个群集都有一个NameNode,如果   该机器或进程变得不可用,整个集群   在重新启动NameNode之前将无法使用   在一台单独的机器上长大。

那么,如果你必须选择3中的2个,哪个是2个作为MRv2 / YARN旨在解决的两个问题?

- JobTracker上的资源压力

- 运行MapReduce以外的框架的能力,例如MPI。

- NameNode中的单点故障。

提前谢谢! d

3 个答案:

答案 0 :(得分:5)

  

哪个MRv2 / YARN守护程序是负责启动应用程序容器和监视应用程序资源使用的守护程序。

资源管理器(RM)负责为特定作业启动ApplicationMaster(AM)一次,AM已经启动AM负责协商,分配和监视作业资源(容器)。

我建议您阅读Hadoop Definitive Guide Ch6中的 MapReduce作业剖析,深入解释如何在MR1和MR2中分配作业资源。

  

MRv2 / YARN旨在解决哪两个问题?

YARN尝试将MR1中的JobTracker功能(这是缩放的瓶颈)与自己的抽象分开:

  • 群集资源管理 - 资源管理器
  • 应用程序生命周期管理 - 特定应用程序/作业的应用程序主文件
  

那么,如果你必须选择3中的2个,哪个是2个作为MRv2 / YARN旨在解决的两个问题?

     

- JobTracker上的资源压力

     

- 运行MapReduce以外的框架的能力,例如MPI。

     

- NameNode中的单点故障。

从3个答案的2个中我会选择1和2。

答案 1 :(得分:1)

按照cloudera http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_mapreduce_to_yarn_migrate.html#concept_z1p_gmy_xl_unique_2

TaskTracker已被NodeManager取代,NodeManager是一种管理主机上资源和部署的YARN服务。 负责启动容器,每个容器都可以容纳地图或减少任务。

因此它的NodeManager为mapred任务启动容器。

ApplicationMaster容器由ResourceManager启动。

答案 2 :(得分:0)

只是为了澄清以上内容 " ApplicationMaster容器由ResourceManager启动,尽管"手段 - ResourceManager指示NodeManager启动Application Master Container。 ApplicationMaster Container的实际启动也由NodeManager 完成。