问题

在一个项目上,使用了CDP7.1.7集群,通过Hue执行Oozie workflow报错,新创建一个简单的shell调用执行也报错,查看报错信息,找到Invalid label resource request, cluster do not contain , label yoe_appln错误信息。

排查

根据报错信息,Yarn RM返回无法找到对应label,CDP7.1.7的Yarn默认调度策略是容器调度器,其支持标签,所以查看Yarn集群的标签信息:

yarn cluster --list-node-labels

发现没有任何标签,但是查看Yarn的队列信息,root.yoe_appln默认的标签是yoe_appln。所以问题应该是该用户提交任务到root.yoe_appln队列里,而root.yoe_appln队列的默认标签是yoe_appln,集群不存在这个标签,导致报错。

解决方案

看情况应该是标签丢失了,那重新添加这个标签:

yarn rmadmin -addToClusterNodeLabels "yoe_appln(exclusive=false)"
yarn cluster --list-node-labels

添加完后,集群有了这个标签了,但是还没有将标签分配到NM节点,这个时候队列是没有资源可使用的,根据需要将NM节点打上标签:

# 查看所有节点
yarn node -list

# 查看节点具体信息
yarn node -status node1

# 打标签,注意这个命令是替换全部的,所以需要把节点所有的标签都写上
yarn rmadmin -replaceLabelsOnNode "node1,yoe_appln node2,yoe_appln"

打完标签后,重新在Hue上执行Oozie workflow,运行成功。