资源调度框架YARN

一.产生背景

  Hadoop1.0的时候是没有YARN,MapReduce1.X存在的问题:单点故障&节点压力大不易扩展

  JobTracker:负责资源管理和作业调度
  TaskTracker:定期向JobTracker汇报本节点的健康状况、资源使用情况以及作业执行情况;

  接收来自JobTracker的命令,例如启动任务或结束任务等。

  

  这种架构的缺点也很明显

  

  上图可以看到,Hadoop集群在忙的时候Spark就比较闲,Spark集群比较忙的时候Hadoop集群就比较闲,而MPI集群则是整体并不是很忙。这样就无法高效的利用资源,因为这些不同的集群无法互相使用资源。

  而YARN就可以令这些不同的框架运行在同一个集群上,并为它们调度资源。

  XXX on YARN:与其他计算框架共享集群资源,按资源需要分配,进而提高集群资源的利用率。

  XXX:Spark/MapReduce/Storm/Flink

 二.YARN架构

  

  1 ResourceMananger:RM

    整个集群提供服务的RM只有一个(生产中有两个,一个主,一个备),负责集群资源的统一管理和调度。

    处理客户端的请求:提交一个作业、杀死一个作业。

    监控NM,一旦某个NM挂了,那么该NM上运行的任务需要告诉AM如何进行处理。

  2 NodeManager:NM

    整个集群中有多个,负责自己本身节点资源管理和使用。

    定时向RM汇报本节点的资源使用情况。

    接收并处理来自RM的各种命令:启动Container等。

    处理来自AM的命令。

    单个节点的资源管理。

  3 ApplicationMaster:AM

    每一个应用程序对应一个:MR、Spark,负责应用程序的管理。

    为每个应用程序向RM申请资源(core、memory),分配给内部task。

    需要与NM通信:启动/停止task,task是运行在Container里面,AM也是运行在Container里面。

  4 Container

    封装了CPU、Memory等资源的一个容器

    是一个任务运行环境的抽象。

  5 Client

    提交作业。

    查询作业的运行进度。

    杀死作业。

三.环境配置  

  1 yarn-site.xml

    <property>

      <name>yarn.nodemanager.aux-services</name>

      <value>mapreduce_shuffle</value>

    </property>

  2 mapred-site.xml

    <property>

      <name>mapreduce.framework.name</name>

      <value>yarn</value>

    </property>

  3 启动YARN相关的进程

    sbin/start-yarn.sh

  4 验证

    jps

      ResourceManager

      NodeManager

    http://192.168.56.102:8088/

  5 停止YARN相关的进程

    sbin/stop-yarn.sh

猜你喜欢

转载自www.cnblogs.com/cracker13/p/10082101.html