Hadoop之YARN的安装使用

1 篇文章 0 订阅

简介

YARN(Yet Another Resource Negotiator):通用的资源管理系统,提交任务到YARN进行统一的资源管理及调度


master: resource management:ResourceManager (RM)

job scheduling/monitoring:per-application ApplicationMaster (AM)

slave: NodeManager (NM)


RM:管理资源;客户端提交作业到RM,RM对应多个NM,RM是集群中对外提供的服务,同一时刻只有一个负责资源相关处理,客户端任务来了之后,先启动AM,然后监控AM。并且还监控NM

AM:执行运算的主体;运行在NodeManager里面的,去RM里面申请资源用于在NM上启动对应的task,每个应用程序对应一个AM,并且做数据的切分,为每个task向RM申请资源,并且和NM通信

NM:运行的程序;真正工作计算的节点,同时向RM发送心跳信息,任务执行情况;接受来自RM的请求,并且处理AM的命令

Container:对于任务的运行抽象,一个Container既可以运行AM 也可以运行具体的 map 和 reduce

2 为什么用YARN

集群资源的浪费,为整理所有集群资源,所以开始使用

3 YARN工作流程

在这里插入图片描述

1.client向yarn提交job,首先找ResourceManager分配资源
2.ResourceManager开启一个Container,在Container中运行一个Application manager
3.Application manager找一台nodemanager启动Application master,计算任务所需的计算
4.Application master向Application manager(Yarn)申请运行任务所需的资源
5.Resource scheduler将资源封装发给Application master
6.Application master将获取到的资源分配给各个nodemanager
7.各个nodemanager得到任务和资源开始执行map task
8.map task执行结束后,开始执行reduce task
9.map task和 reduce task将执行结果反馈给Application master
10.Application master将任务执行的结果反馈application manager

参考来自:https://www.cnblogs.com/gwyy/p/12205227.html

4 YARN配置

参照官网设置,设置单节点YARN操作,首先配置mapred-site.xml,增加如下配置,指定MapReduce的运行环境是YARN

进入etc/hadoop
然后修改mapred-site.xml.template文件名

mv mapred-site.xml.template mapred-site.xml

然后进入mapred-site.xml修改

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

然后设置yarn-site.xml,这里是固定写法

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

设置完成后执行

./sbin/start-yarn.sh

注意使用前保证HDFS服务正常启动,启动后使用JPS查看服务是否正常
在这里插入图片描述
服务启动成功后浏览器访问
ip:8080
例如我这里http://192.168.1.100:8088/
在这里插入图片描述

5 YARN使用

进入到hadoop目录下,进入share/hadoop/mapreduce

可以看到官方提供的测试的jar包
在这里插入图片描述
这里面以hadoop-mapreduce-examples-2.6.0-cdh5.16.1.jar为例

运行jar包
hadoop jar jar包名称 参数

计算π的值
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.15.1.jar pi 2 3

6、问题

Error: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in fetcher#4
	at org.apache.hadoop.mapreduce.task.reduce.Shuffle.run(Shuffle.java:134)
	at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:376)
	at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)
	at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.io.IOException: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
	at org.apache.hadoop.mapreduce.task.reduce.ShuffleSchedulerImpl.checkReducerHealth(ShuffleSchedulerImpl.java:392)
	at org.apache.hadoop.mapreduce.task.reduce.ShuffleSchedulerImpl.copyFailed(ShuffleSchedulerImpl.java:307)
	at org.apache.hadoop.mapreduce.task.reduce.Fetcher.copyFromHost(Fetcher.java:366)
	at org.apache.hadoop.mapreduce.task.reduce.Fetcher.run(Fetcher.java:198)

20/07/10 20:22:58 INFO mapreduce.Job:  map 0% reduce 0%
20/07/10 20:23:08 INFO mapreduce.Job:  map 50% reduce 0%
20/07/10 20:23:10 INFO mapreduce.Job:  map 100% reduce 0%
20/07/10 20:23:15 INFO mapreduce.Job:  map 100% reduce 100%
20/07/10 20:23:16 INFO mapreduce.Job: Job job_1594434206651_0002 failed with state FAILED due to: Task failed task_1594434206651_0002_r_000000
Job failed as tasks failed. failedMaps:0 failedReduces:1

解决办法

在hadoop安装目录下的etc目录下的hadoop文件中打开hdfs-site.xml文件;找到此文件的位置
在这里插入图片描述

然后在这个路径下找到此文件
在这里插入图片描述
将这个路径复制到hadoop的安装目录etc/hadoop/yarn-site.xml中

在这里插入图片描述

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/home/hadoop/app/tmp/nm-local-dir</value>
    </property>

</configuration>

配置好以后重重yarn及hadoop再运行./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.15.1.jar pi 2 3 命令就可以了

在这里插入图片描述

或者也可以是以下这种情况

不健康节点 磁盘空间被使用的90%,则会被列为不健康节点,被拒绝访问

异常:error in shuffle in fetcher

原因:执行任务 shuffle 时,内存不够,所以栈溢出

解决:
mapred-site.xml
将yarn的设置给删除掉,然后加下面的配置

<property>
    <name>mapreduce.reduce.shuffle.memory.limit.percent</name>
    <value>0.2</value>
</property>

从0.2一直到0.6调,默认是0.7
设置好重启即可了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值