【YARN】问题汇总(持续更新)

1、yarn ui 指标显示异常
按照配置参数yarn.nodemanager.resource.cpu-vcores是8。两台机器的话total vcores应该是16。
但是这里一直在变化。
在这里插入图片描述
在这里插入图片描述
然后发现这是个bug。
https://issues.apache.org/jira/browse/YARN-8443
当一个容器被分配到nodemanager的时候,如果不满足条件那么就会被reserve(冻结),直到达到标准才会分给那个容器。

Cluster metrics on the web UI will give wrong Total Vcores when there is reserved container for CapacityScheduler.
不影响使用,除非是采集metric指标的作业。。

2、任务已经启动,但是map阶段出现oom
在这里插入图片描述
调大mapreduce.map.memory.mb的内存

3、yarn.scheduler.capacity..user-limit-factor
这个参数的含义是允许单个用户最多可获取的队列资源的倍数。默认值为1,确保单个用户无论集群有多空闲,永远不会占用超过队列配置的资源,即yarn.scheduler.capacity..capacity的值,该参数是一个浮点值。按照这个理解,当把这个参数设置为超过1时,用户可以使用的资源将超过队列配置的资源,但应该不能超过队列配置的最大资源,否则最大资源的配置就没有意义了;如果这个参数的值小于1时,用户可以使用的资源将低于队列配置的资源。

<property>
    <name>yarn.scheduler.capacity.root.default.capacity</name>
    <value>1.0</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
    <value>2.0</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.default.state</name>
    <value>RUNNING</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.default.user-limit-factor</name>
    <value>1.0</value>
  </property>

这样设置的话提交作业无论需要申请多少资源都会卡在1.1%左右(即Absolute Used Capacity)。
如上如果把yarn.scheduler.capacity.root.default.user-limit-factor改成3也只能是使用到2.0。因为无法超过队列的最大资源量(yarn.scheduler.capacity.root.default.maximum-capacity)。
以上也是相对于内存维度上来说。vcore的似乎没有收到限制。

4、用户设置队列acl的提交权限,但是不生效
这个问题的话一定要设置root queue。不是root default queue。
可以参考https://blog.youkuaiyun.com/lin86182824/article/details/119142147?spm=1001.2014.3001.5501

5、curl http://:8088/cluster 显示401没权限
新版本hadoop.http.authentication.simple.anonymous.allowed这个值为false导致访问yarn页面的时候要加上?user.name=xxxxxx,否则没有权限。或者打开权限hadoop.http.authentication.simple.anonymous.allowed改为true,然后重启yarn

6、集群重启后2个rm全都standby
在这里插入图片描述
看报错信息是zk出现问题,但是使用zkCli.sh是没有问题的,开源资料查询需要调大
“-Djute.maxbuffer=10000000”
逐个重启zk。
然后重启yarn还是报错。
在这里插入图片描述
在这里插入图片描述
还是报错,只能手动去zk删除对应的任务znode状态。
deleteall /rmstore/ZKRMStateRoot/RMAppRoot/application_ 1595251161356_11443
问题应该是这样的:作业触发了 ResourceManager zk的异常,修复zk 问题以后重启RM 卡在了一个异常作业上1595251161356_11443,这个情况下,可以清理zk store快速恢复,但是有个异常,所以手动清理了异常作业的zk信息。大概思路和解决步骤就是这样。

7、spark on yarn 显示的vcore数量和参数提交的对不上

spark-submit \
--master yarn \
--deploy-mode cluster \
--class xxxx.xxx \
--driver-memory 3g \
--num-executors 9 \
--executor-memory 3g \
--executor-cores 10 \
/data/xx.jar \

申请executors数量9,每个executor-cores数量为10,那么申请的VCore Userd 至少为90+1。

<name>yarn.scheduler.capacity.resource-calculator</name>
<value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value>

改成 org.apache.hadoop.yarn.util.resource.DominantResourceCalculator后显示正常。
原因是yarn默认情况下,只根据内存调度资源,所以spark on yarn运行的时候,即使通过–executor-cores指定vcore个数为N,但是在yarn的资源管理页面上看到使用的vcore个数还是1。
考虑使用DominantResourceCalculator,该资源计算器在计算资源的时候会综合考虑cpu和内存的情况,来决定yarn最后的调度。
可以参考文档:http://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html

8、yarn查看日志报错:User [dr.who] is not authorized to view the logs
在这里插入图片描述
原因是开启了yarn acl的权限。关掉或者认证上就可以。

9、yarn假死状态,日志一直刷新以下信息:log aggregation have not finished yet
yarn的bug:https://issues.apache.org/jira/browse/YARN-4946
按照fixed的版本来看只需要替换掉对应版本的jar就可以。

 Max number of completed apps kept in state store met: maxCompletedAppsInStateStore = 10000, but not removing app application_1618886060273_3657 from state store as log aggregation have not finished yet

修复步骤是先处理standby RM,再处理active RM,RM节点替换步骤是:
(1)mv方式备份旧包
(2)mv $HADOOP_HOME/share/hadoop/yarn/hadoop-yarn-server-resourcemanager-3.2.1.jar <对应路径>
(3)重启RM

10、yarn ui打开看不到以前的作业
应该是有重启过。而且集群不是ha的。
yarn.resourcemanager.recovery.enabled这个参数应该是false。
详情可以参考https://hadoop.apache.org/docs/r3.1.2/hadoop-yarn/hadoop-yarn-site/ResourceManagerRestart.html

yarn.resourcemanager.store.class这个是状态写到哪儿的配置。有三种。可以详细看下文档。

11、hadoop3新环境 yarn运行任务报错

Application application_1657868640110_0009 failed 2 times due to AM Container for appattempt_1657868640110_0009_000002 exited with exitCode: 1
Failing this attempt.Diagnostics: [2022-07-15 16:10:22.961]Exception from container-launch.
Container id: container_e01_1657868640110_0009_02_000001
Exit code: 1
[2022-07-15 16:10:22.965]Container exited with a non-zero exit code 1. Error file: prelaunch.err.
Last 4096 bytes of prelaunch.err :
Last 4096 bytes of stderr :
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/util/Clock
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.util.Clock
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
[2022-07-15 16:10:22.966]Container exited with a non-zero exit code 1. Error file: prelaunch.err.
Last 4096 bytes of prelaunch.err :
Last 4096 bytes of stderr :
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/util/Clock
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.util.Clock
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
For more detailed output, check the application tracking page: http://shipei4:18088/cluster/app/application_1657868640110_0009 Then click on links to logs of each attempt.
. Failing the application.

环境问题,提交相关参数到mapred-site.xml

	    <property>
		    <name>yarn.app.mapreduce.am.env</name>
		    <value>HADOOP_MAPRED_HOME=/opt/dtstack/Hadoop/hadoop_pkg</value>
	    </property>
	    <property>
		    <name>mapreduce.map.env</name>
		    <value>HADOOP_MAPRED_HOME=/opt/dtstack/Hadoop/hadoop_pkg</value>
	    </property>
	    <property>
		    <name>mapreduce.reduce.env</name>
		    <value>HADOOP_MAPRED_HOME=/opt/dtstack/Hadoop/hadoop_pkg</value>
	    </property>
	    <property>
		    <name>yarn.application.classpath</name>
		    <value>/data/hadoop_base/etc/hadoop:/data/hadoop_base/share/hadoop/common/lib/*:/data/hadoop_base/share/hadoop/common/*:/data/hadoop_base/share/hadoop/hdfs:/data/hadoop_base/share/hadoop/hdfs/lib/*:/data/hadoop_base/share/hadoop/hdfs/*:/data/hadoop_base/share/hadoop/mapreduce/*:/data/hadoop_base/share/hadoop/yarn/lib/*:/data/hadoop_base/share/hadoop/yarn/*:/data/hadoop_base/contrib/capacity-scheduler/*.jar</value>
	    </property>

重启下namenode即可。
ps:虽然说hadoop3不支持mr,但是运行mr貌似还是没问题的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值