2016-03-27 70 views
2

我有一对夫妇的关于作业提交到HDFS和Hadoop的纱线结构问题:纱和Hadoop

所以在Hadoop的生态系统,你必须为每个集群一个NameNode的,可以包含任意数量的存储数据的节点你的数据。将作业提交给Hadoop时,NameNode上的作业跟踪器将选择每个作业并将其分配给数据节点上存在该文件的任务跟踪器。

所以我的问题是YARN的组件如何在HDFS中一起工作:?

所以YARN由NodeManager和资源管理器组成。在这两个组件之外:NodeManager是否在每个DataNode上运行,并且ResourceManager在每个集群的每个NameNode上运行?因此,当任务跟踪器(在每个DataNode中)从作业跟踪器(在NameNode中)分配任务时,特定数据节点中的NodeManager将创建一个容器,该容器将从NameNode中的ResourceManager请求资源。因此,只有当数据节点中的任务跟踪器从NameNode中的作业跟踪器获取作业时,此资源管理器和节点管理器才会发挥作用,其中NodeManager将向ResourceManager请求要执行作业的资源。它是否正确?

回答

3

你是部分正确的。 YARN被带入了图片,以避免Jobtracker负担调度和监控的负担。所以对于YARN,您没有任何Job跟踪器或任务跟踪器。 Job tracker完成的工作现在由资源管理器完成,资源管理器包含两个主要组件:Scheduler(为应用程序分配资源)和ApplicationsManager(接受作业提交并在出现任何故障时重新启动ApplicationMaster)。现在,每个应用程序都有一个ApplicationMaster,它可以在调度程序中协商运行应用程序的容器(运行作业的位置)。

Nodemanager在每个从节点/数据节点上运行。资源管理器可能/可能不会安装在namenode存在的位置。对于大型集群,我们通常需要将主设备分开,以便负载不会转到单台设备上。

+1

你好Vignesh,这很清楚!因此,如果没有JobTracker或TaskTracker,ResourceManager会处理所有作业“分发”并与每个DataNode上的NodeManager进行通信,以查看它是否可以在该DataNode上分配资源和容器以运行“任务”。那么现在,当客户端向HDFS提交作业时,它首先会与ResourceManager或NameNode进行通信?由于首先需要确定NameNode只能使用其元数据访问HDFS上的文件的位置? – LP45

+1

不需要它,它不需要Namenode帮助。请记住,输入拆分的计算由客户端的Job或JobSubmitter完成,现在拆分被放置在HDFS中(因此RM不需要元数据),这在资源管理器接收到提交应用程序的请求之前完成。 –

+0

这意味着当向HDFS提交作业(从HDFS读取)时,您将与NameNode进行交互以找出您想要保留的文件在哪个DataNode上? – LP45