文档首页/ MapReduce服务 MRS/ 故障排除/ 集群管理类/ 开启Kerberos认证的MRS集群提交Flink作业报错
更新时间:2023-11-10 GMT+08:00

开启Kerberos认证的MRS集群提交Flink作业报错

用户问题

用户在开启Kerberos认证的MRS集群中提交Flink作业报错。

问题现象

用户提交Flink样例程序./flink run /opt/client/Flink/flink/examples/streaming/WordCount.jar时报错:unable to establish the security context。

原因分析

  1. MRS集群开启了Kerberos认证但是无法提交作业,所以首先检查权限配置问题,检查发现未正确配置“/opt/client/Flink/flink/conf/flink-conf.yaml”中的参数。
    图1 flink-conf.yaml配置
  2. 修改并刷新配置后,重新提交作业出现作业可以提交但报“log4j:ERROR setFile(null,true) call failed”的错误。
    图2 log4j报错
  3. 查看log4j发现用户将“log4j.properties”文件改成了“log4g-cli.properties”“log4j.properties”的名字是固定的不可随意修改)导致报错。
    图3 查看log4j
  4. 修改后可以正常提交作业。
    图4 提交作业正常

处理步骤

  1. 判断用户是在集群外还是集群内使用客户端提交作业。

    1. 若在集群内使用客户端,切换到omm用户提交作业。
    2. 若在集群外使用客户端,则要使用root用户提交作业。

  2. 检查“flink-conf.yaml”文件各参数是否配置正确。
  3. 对于开启Kerberos认证的集群配置项包括Kerberos的keytab、principal等。

    • 从KDC服务器上下载用户keytab,并将keytab放到Flink客户端所在主机的某个文件夹下(例如/home/flinkuser/keytab)。
    • 在“${FLINK_HOME}/conf/flink-conf.yaml”上配置:
      1. keytab路径(注意配置参数前面有空格):
        security.kerberos.login.keytab:  /home/flinkuser/keytab/uer.keytab
      2. principal名(即开发用户名):
        security.kerberos.login.principal:flinkuser

  4. 重新正确提交作业./flink run /opt/client/Flink/flink/examples/streaming/WordCount.jar,验证是否可以提交作业。

    • 若可以提交作业则说明权限认证没有问题,就可以去检查其他错误,本例中是修改了log4j.properties的名称,还原后可以正常提交作业。
    • 若提交作业失败,请提交工单进行处理。

参考信息

Flink使用请参考从零开始使用Flink