更新时间: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。
原因分析
- MRS集群开启了Kerberos认证但是无法提交作业,所以首先检查权限配置问题,检查发现未正确配置“/opt/client/Flink/flink/conf/flink-conf.yaml”中的参数。
图1 flink-conf.yaml配置
- 修改并刷新配置后,重新提交作业出现作业可以提交但报“log4j:ERROR setFile(null,true) call failed”的错误。
图2 log4j报错
- 查看log4j发现用户将“log4j.properties”文件改成了“log4g-cli.properties”(“log4j.properties”的名字是固定的不可随意修改)导致报错。
图3 查看log4j
- 修改后可以正常提交作业。
图4 提交作业正常
处理步骤
- 判断用户是在集群外还是集群内使用客户端提交作业。
- 若在集群内使用客户端,切换到omm用户提交作业。
- 若在集群外使用客户端,则要使用root用户提交作业。
- 检查“flink-conf.yaml”文件各参数是否配置正确。
- 对于开启Kerberos认证的集群配置项包括Kerberos的keytab、principal等。
- 从KDC服务器上下载用户keytab,并将keytab放到Flink客户端所在主机的某个文件夹下(例如/home/flinkuser/keytab)。
- 在“${FLINK_HOME}/conf/flink-conf.yaml”上配置:
- keytab路径(注意配置参数前面有空格):
security.kerberos.login.keytab: /home/flinkuser/keytab/uer.keytab
- principal名(即开发用户名):
security.kerberos.login.principal:flinkuser
- keytab路径(注意配置参数前面有空格):
- 重新正确提交作业./flink run /opt/client/Flink/flink/examples/streaming/WordCount.jar,验证是否可以提交作业。
- 若可以提交作业则说明权限认证没有问题,就可以去检查其他错误,本例中是修改了log4j.properties的名称,还原后可以正常提交作业。
- 若提交作业失败,请提交工单进行处理。
参考信息
Flink使用请参考从零开始使用Flink。
父主题: 集群管理类