在hadoop2.0以前版本,资源管理和作业调度都由mapreduce完成,负载过重,性能瓶颈严重,角色不清,从2.0版引入Yarn概念,将这些只能重MR中独立出来分别用ResourceManager和ApplicationMaster进程来负责。
Yarn: 提供MapReduce、Spark程序运行,并对集群中各类资源进行管理的容器。
hadoop2.X中的Yarn 主要包括ResourceManager,ApplicationMaster和Container等。
Resourcemanager 主要职责:
处理客户端请求
启动或监控ApplicationMaster,
监控NodeManager,
资源的分配与调度
ApplicationMaster主要职责(简单理解为当执行:hadoop jar hao.jar 时,会生成一个 applicattionmaster进程用来表示当前提交的任务程序,运行结束后,自动消失)
管理MR(spark)运行程序实例
为运行实例申请资源
监控和调度运行的任务及容错
Nodemanager主要职责
管理所在机器的资源
响应来自resourcemanager,applicaionMaster的请求
Conainer主要职责
任务分发到每个nodemanager上,Yarn会为每个任务分配一个所要利用资源的一个抽象对象:称为container ,如:分配多大内存,几个核等。是对任务运行资源及环境的抽象。
配置Yarn集群安装配置:
1> 配置yarn-site.xml文件,指定resourceManger机器节点;
命令:vi /opt/mysoft/hadoop/etc/hadoop/yarn-site.xml
添加如下内容:
yarn.nodemanager.resource.memory-mb
1540
yarn.nodemanager.resource.cpu-vcores
1
yarn.resourcemanager.hostname
qiku
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.vmem-check-enabled
false yarn.nodemanager.remote-app-log-dir ,开发阶段,建议设置为false,默认值为:false-->
yarn.log-aggregation.enabled
true
2> 修改mapred-site.xml文件,指定mapreduce程序跑在Yarn上;
修改文件名:mv mapred-site.xml.template mapred-site.xml
命令:vi /opt/mysoft/hadoop/etc/hadoop/mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
hadoop:10020
mapreduce.jobhistory.webapp.address
hadoop:19888
mapreduce.jobtracher.http.address
hadoop:50030
3> 在master机器上手动启动yarn服务
命令:yarn-daemon.sh start resourcemanager
在各个nodemanager上执行:
命令:yarn-daemon.sh start nodemanager
4> 脚本自动启动Yarn
命令:start-yarn.sh
(这个脚本会读取slavles文件通过SSH逐一开启nodemanager)
5> 开启任务跟踪服务
命令:mr-jobhistory-daemon.sh start historyserver
6> 通过web UI 验证是否配置成功
该服务的具体web访问端口配置在:mapred-site.xml文件中:
http://192.168.248.100:8088
http://192.168.248.100:19888
7> 把配置好的yarn-site.xml文件和mapred-site.xml文件复制到集群的各个节点机器上。
命令:scp /opt/mysoft/hadoop/etc/hadoop/yarn-site.xml hadoop1:$PWD
命令:scp /opt/mysoft/hadoop/etc/hadoop/mapred-site.xml hadoop1:$PWD
8> 重启集群服务
命令:stop-all.sh
命令:start-all.sh
Yarn集群与HDFS的关系:
1> Yarn集群是独立于HDFS的,所以可以在不启动HDFS集群的情况下直接启动Yarn集群;但往往MapReduce程序读取HDFS数据,所以往往也可开起HDFS集群;
2> Yarn和HDFS是Hadoop框架的两个重要组成部分。
生产环境中Yarn集群配置注意事项:
1: MarpReduce程序提交到Yarn 上的nodeManager节点执行计算,往往需要读取datanode里的数据,本着数据就地原则,所以在配置nodeManager节点上也配置dataNode节点,只有数据不在本地时,才考虑远端读取其它dataNode;
2: 自动化启动Yarn集群脚本,也要用到slalves文件中配置的节点信息来启动所有nodeManager节点