Hadoop生态之Yarn资源管理器配置与使用(五)

在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

添加如下内容:

<property>

<!--设置每个nodemanager分配内存,默认8192m,这里配置成1540M-->

<name>yarn.nodemanager.resource.memory-mb</name>

<value>1540</value>

</property>

<property>

<!--设置每个nodemanager所使用机器上的虚拟cpu核数-->

<name>yarn.nodemanager.resource.cpu-vcores</name>

<value>1</value>

</property>

<property>

<!--指定resourcemanager服务所在机器-->

<name>yarn.resourcemanager.hostname</name>

<value>qiku</value>

</property>

<property>

<!--在nodemanager开启支持跑mapReduce程序的服务*****这个必须的*******-->

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

<value>mapreduce_shuffle</value>

</property>

<property>

<!--是否检查虚拟内存是否溢出,若设置为true,当运行MR程序时,只要虚拟内存溢出,就报错,程序停止运行,所以设置为false-->

<name>yarn.nodemanager.vmem-check-enabled</name>

<value>false</value>

</property>

<!—是否将运行完的任务的日志及时上传到HDFS上以减轻nodemanager的负载若设置为true:还要指定对应的HDFS目录:yarn.nodemanager.remote-app-log-dir ,开发阶段,建议设置为false,默认值为:false-->

<property>

<name>yarn.log-aggregation.enabled</name>

<value>true</value>

</property>

</configuration>

2> 修改mapred-site.xml文件,指定mapreduce程序跑在Yarn上;

修改文件名:mv mapred-site.xml.template mapred-site.xml

命令:vi /opt/mysoft/hadoop/etc/hadoop/mapred-site.xml

<configuration>

<property>

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

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>hadoop:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>hadoop:19888</value>

</property>

<property>

<name>mapreduce.jobtracher.http.address</name>

<value>hadoop:50030</value>

</property>

</configuration>

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节点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ansap

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值