在 Hadoop1 中 MapReduce 框架即负责集群的资源调度,还负责 MapReduce 程序的运行。由于这种架构资源调度和计算高度耦合,导致了一个 Hadoop 集群中只能跑 MapReduce 计算任务,无法跑其它的计算任务,维护成本很高。
在后面的 Hadoop2 中改成了 Yarn + MapReduce 架构,将资源的调度工作交给了 Yarn,MapReduce 只负责计算。这样就能保证 Hadoop 集群技能跑 MapReduce 计算任务,还能跑任何支持 Yarn 资源调度的计算任务,比如 Spark,Storm 等。
Yarn 的架构图如下:
一,Yarn 的组成
从图上可以看出 Yarn 是由两个部分组成:
1,资源管理器 (ResourceMananger)。负责整个集群的资源管理和分配;
2,节点管理器 (NodeManager)。基本上和 HDFS 的 DataNode 进程同时出现,负责具体服务器的资源和任务管理。
ResourceManager 又包含两个重要组件:
1,调度器。其实就是一个资源调度算法,根据应用程序提交的资源申请和当前集群的资源情况进行资源分配。Yarn 进行资源分配的单位是容器 (Container),每个容器包含一定量的内存,cpu 等计算资源。容器是由调度器分配,由 NodeManager 启动和管理,NodeManager 会监控每个节点的容器运行情况并向 ResourceManager 汇