我有几个关于向HDFS提交作业和Hadoop:中的YARN架构的问题
因此,在Hadoop生态系统中,每个集群都有一个NameNode,它可以包含任意数量的存储数据的数据节点。当您向Hadoop提交作业时,NameNode上的作业跟踪器将选择每个作业,并将其分配给数据节点上文件所在的任务跟踪器。
所以我的问题是YARN的组件如何在HDFS中协同工作:?
因此,YARN由节点管理器和资源管理器组成。在这两个组件中:NodeManager是否在每个DataNode上运行,ResourceManager是否在每一个集群的每个NameNode上运行?因此,当任务跟踪器(在每个DataNode中)从作业跟踪器(在NameNode中)分配任务时,特定数据节点中的NodeManager将创建一个容器,该容器将从NameNode中的ResourceManager请求资源。因此,只有当数据节点中的任务跟踪器从NameNode中的作业跟踪器获得作业时,该资源管理器和节点管理器才会发挥作用,在NameNode中,NodeManager将向ResourceManager请求要执行的作业的资源。这是正确的吗?
您部分正确。YARN的出现是为了避免Jobtracker的负担,Jobtracker同时进行调度和监控。所以有了YARN,你就没有任何工作跟踪器或任务跟踪器了。作业跟踪器完成的作业现在由资源管理器完成,资源管理器有两个主要组件Scheduler(将资源分配给应用程序)和ApplicationsManager(接受作业提交并在出现任何故障时重新启动ApplicationMaster)。现在,每个应用程序都有一个ApplicationMaster,它从运行应用程序的调度器协商容器(作业将在哪里运行)。
Nodemanager在每个从属节点/数据节点上运行。资源管理器可能安装在名称节点所在的位置,也可能不安装。对于一个大型集群,我们通常需要将主机分开,这样负载就不会转移到一台机器上。