我正在努力了解新API的实际用途,通过互联网阅读,我发现了对我正在处理的相同问题的不同答案。
我想知道的问题的答案是:
1)哪个MRv2/YARN守护进程负责启动应用程序容器和监控应用程序资源使用情况
2)MRv2/YARN旨在解决哪两个问题
我会通过指定搜索中的资源和实际数据,努力让这个帖子对其他读者具有教育意义和建设性,所以我希望在我可以提问并缩短帖子的时候,看起来不会提供太多信息。
对于第一个问题,阅读文档,我可以找到3个主要的资源:
来自Hadoop文档:
ApplicationMaster<-->;NodeManager启动容器。与NodeManager,通过使用NMClientSync对象,处理容器事件由NMClientSync.CallbackHandler
ApplicationMaster与YARN集群通信,并处理应用程序执行。它以异步方式执行操作时尚在应用程序启动期间ApplicationMaster是:
a) 与资源管理器沟通以协商和分配未来集装箱资源和
b) 在容器分配之后,与YARN NodeManager(NMs)通信以启动应用程序容器在他们身上。
来自Hortonworks文档
ApplicationMaster实际上是特定于框架的库,并负责协商资源管理器中的资源,并使用NodeManager以执行和监视容器及其资源消耗。它有责任协商适当的资源来自ResourceManager的容器,跟踪它们的状态和监测进展。
来自Cloudera文档:
MRv2守护进程-
ResourceManager—每个集群一个—启动ApplicationMasters,在从属节点上分配资源
ApplicationMaster–每个作业一个–请求资源,管理单个映射和减少任务
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,以便整个系统可以扩展更引人注目的是。在测试中,我们已经成功地模拟了由现代硬件组成的10000个节点集群问题
和:
将所有应用程序框架特定的代码移动到ApplicationMaster对系统进行了概括,因此我们现在可以支持MapReduce、MPI和Graph Processing等多个框架。
但我也认为它处理了这样一个事实,即NameNode是一个单点故障,在新版本中,通过高可用性模式有备用NameNode(我可能混淆了新旧API的功能,MRv1和MRv2的功能,这可能是我的问题的原因):
Hadoop2.0.0之前,NameNode是单点故障(SPOF)。每个集群都有一个NameNode,如果该机器或进程变得不可用,集群作为一个整体在NameNode重新启动或在一台单独的机器上长大。
因此,如果您必须从3个问题中选择2个,那么MRv2/YARN设计解决的两个问题是哪一个?
-JobTracker 面临的资源压力
-能够运行MapReduce以外的框架,如MPI。
-NameNode中的单点故障。
提前谢谢!D
哪个MRv2/YARN守护进程负责启动应用程序容器和监控应用程序资源使用情况。
ResourceManager(RM)负责为特定作业启动ApplicationMaster(AM)一次,AM已启动,AM负责协商、分配和监控作业资源(容器)。
我建议您阅读Hadoop最终指南Ch6中的MapReduce作业剖析,以深入解释如何在MR1和MR2中分配作业资源。
MRv2/YARN旨在解决哪两个问题?
YARN试图将MR1中JobTracker的功能(这是扩展的瓶颈)分离为自己的抽象:
- 群集资源管理-资源管理器
- 应用程序生命周期管理-特定应用程序/作业的应用程序主程序
因此,如果您必须从3个问题中选择2个,那么MRv2/YARN要解决的两个问题是哪一个?
-JobTracker 面临的资源压力
-能够运行MapReduce以外的框架,如MPI。
-NameNode中的单点故障。
从你的3个答案中选择2个,我会选择1和2。
根据clouderahttp://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为映射任务启动容器。
ApplicationMaster容器是由ResourceManager启动的。
只是为了澄清以上内容"ApplicationMaster容器由ResourceManager启动"表示--ResourceManager指示NodeManager启动应用程序主容器ApplicationMaster Container的实际启动也是由NodeManager完成的。