我知道hadoop群集中只有资源管理器。从我的理解来看,也应该只有一个应用程序大师来进行集群。是对的吗?以下是我对MapReduce工作如何在纱线中运行的理解。如果我的理解不正确,请更正。
纱线上的步骤执行顺序:
- 客户将作业提交给资源管理器(RM)。RM在主节点上运行。整个集群中只有一个RM来管理资源。资源管理器是一个守护程序。
- rm将转到hdfs thru name node。
- RM旋转应用程序主(AM)。AM将通过名称节点到达HDFS。它将创建一个映射器矩阵。这是映射阶段。就像如果在名称节点5或6上可用块1。
- 基于映射器矩阵信息,AM向单个节点管理器(NM)发送请求,以便为每个块运行特定任务。NM在从属节点上运行。
- 每个NM向RM发送请求以获取容器。一个容器通过受约束的资源集(内存,CPU等)执行特定应用程序的过程。
- mapper任务在容器中运行,并将心跳发送给应用程序主。我也将心跳送给RM。
- 完成了所有过程后,AM启动了另一个用于还原任务的矩阵。
- 所有还原器任务完成后,将结果发送到RM。
- rm让客户知道结果并杀死AM。应用程序主会被卡住。这就是为什么它将心跳发送给Resource Manager
非常感谢nath
其他步骤看起来不错。
- rm旋转应用程序主 (am)。AM将通过名称节点到达HDFS。它将创建一个映射器矩阵。这是映射阶段。就像如果在名称节点5或6上可用块1。
在这里进行轻微校正。AM只能在任何给定的容器内执行。因此,首先,RM在某个节点上请求一个节点管理器以启动一个容器,然后只有AM才能在该cotainer内部启动,而不是以前。因此,将有一个专用于AM的容器。