Apache Hadoop YARN(Yet Another Resource Negotiator)是Hadoop中的资源管理系统,负责有效管理和调度集群的计算资源。YARN的工作机制在Hadoop 2.x版本中引入,克服早期Hadoop 1.x中MapReduce模型的局限性,特别是单一JobTracker的性能瓶颈。以下是对YARN工作机制的详细解析: 1. 应用程序提交:当需要执行MapReduce作业(例如wc.jar)时,客户端向ResourceManager(RM)请求一个Application。RM作为YARN架构的中心协调者,负责全局资源的分配和管理。 2. 资源路径返回:RM响应客户端请求,返回应用程序所需的资源路径,例如JAR文件和配置文件,客户端将其上传到HDFS(Hadoop分布式文件系统)。 3. 资源提交:客户端将所有必要的资源提交到HDFS,确保集群中所有节点可以访问这些资源。这一步骤保证了执行作业所需的数据可用性。 4. 申请MRAppMaster:提交完成后,客户端通过RM申请运行一个MRAppMaster。MRAppMaster作为MapReduce作业的控制器,负责作业的调度和监控。 5. 任务调度:RM为MRAppMaster分配一个Container,Container是YARN中的资源抽象,包括CPU、内存等。MRAppMaster在分配的Container中启动,并与RM交互,请求Task的执行资源。 6. 任务分配:MRAppMaster根据作业配置,将任务分为多个MapTask和ReduceTask,并将它们放入调度队列。 7-11. MapTask执行:MRAppMaster向RM请求MapTask运行所需的Container。RM选择适当的NodeManager(NM)分配Container,NM负责在本地启动容器并下载作业资源。然后,YARNChild进程在Container中执行MapTask。 12-13. ReduceTask执行:所有MapTask完成后,MRAppMaster向RM请求运行ReduceTask所需的Container。RM再次选择合适的NM分配Container,NM启动容器并下载ReduceTask所需的资源。然后,YARNChild进程在Container中执行ReduceTask。