问题

在Yarn RM ui查看Application logs 报错:"is not authorized to view the logs"。

描述

在CDP7.1.7集群上,Cloudera采用Knox代理Yarn RM ui,使访问Yarn RM ui不再是匿名访问,提高了安全性。这样一来,owner只能看自己提交的Application日志,查看其他用户的日志会没有权限。

解决思路

1.该用户必须要有访问日志存放的路径权限。例如存放在hdfs的/tmp/logs上,那么需要/tmp/logs的读和可执行权限。

2.设置MapReduce ACL
访问CM > Yarn > Configuration,配置如下参数:

mapreduce.job.acl-view-job: *
mapreduce.cluster.acls.enabled: true

这样该用户就能访问其他用户的MR/Tez类型的Application日志。
但是Spark类型和Oozie类型的Application日志还无法进行访问,因为这两个类型需要另行设置。

3.设置Spark ACL
访问CM > Spark > Configuration,找到"Spark Client Advanced Configuration Snippet (Safety Valve) for spark-conf/spark-defaults.conf"选项,配置如下参数:

spark.acls.enable=true
spark.admin.acls=yarn,spark
spark.ui.view.acls=*

这样该用户就能访问其他用户的Spark类型的Application日志。
需要注意的是,如果跑Spark使用自定义的配置,不使用默认的spark-defaults.conf配置文件,那么需要添加这些参数。

4.设置Oozie ACL
Oozie的任务会读取Yarn级别里的"mapreduce.cluster.acls.enabled"参数,但是不会读取"mapreduce.job.acl-view-job"参数,所以需要在Oozie级别里单独配置"mapreduce.job.acl-view-job"参数
访问CM > Oozie > Configuration,找到"Oozie Server Advanced Configuration Snippet (Safety Valve) for action-conf/default.xml"选项,配置如下参数:

mapreduce.job.acl-view-job=*

这样该用户就能访问其他用户的Oozie类型的Application日志