Yarn(Yet Another Resource Negotiator)产生背景
Hadoop1.x时:
MapReduce:Master/Slave架构,一个JobTracker带多个TaskTracker
JobTracker:负责资源管理和作业调度
TaskTracker:定期向JT汇报节点的健康状况,资源使用情况,作业执行情况;
接收来自JT的命令:启动任务/杀死任务
存在问题:单点故障,节点压力大不易扩展,不支持其他框架
资源利用率低和运维成本高
好处:不同计算框架可以共享同一个HDFS集群上的数据,享受整体资源调度,与其他计算框架共享集群资源,按照资源需要分配,进而提高集群资源利用率。yarn的设计减少了JobTracker的资源消耗,减少了hadoop1.0中发生单点故障的风险。
Yarn架构:
ResourceManager:
整个集群同一时间提供服务的RM只有一个,负责集群资源统一管理和调度。
处理客户端请求:提交/杀死一个作业
监控NM,一旦某个NM挂了,那么NM上运行的任务需要告诉我们的AM
启动并监控Application Master
监控NodeManager
NodeManager:
整个集群中有多个,负责自己本身节点资源管理和使用
定时向RM汇报节点的资源使用情况
接收并处理来自RM的各种命令:启动Container
处理来自AM命令:启动容器
ApplicationMaster:
每个应用程序对应一个,负责应用程序管理
为应用程序向RM申请资源(core,memory),分配给内部task
需要与NM通信:启动/停止task
task和AM是运行在container
负责数据切分
监控任务的执行及容错
Container:
封装了CPU,Memory等资源的一个容器
是一个任务运行环境的抽象
Client:
提交作业
查询作业的运行进度
杀死作业
Yarn执行流程:
Yarn环境搭建:
yarn-site.xml
mapred-site.xml
start-yarn.sh
jps/http:master:8088
提交mapreduce作业到yarn执行:
/home/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar