
# 开启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"中的参数。
   图1flink-conf.yaml配置   
   ![](https://support.huaweicloud.com/trouble-mrs/zh-cn_image_0293452753.png "点击放大") 
2. 修改并刷新配置后，重新提交作业出现作业可以提交但报"log4j:ERROR setFile(null,true) call failed"的错误。
   图2log4j报错   
   ![](https://support.huaweicloud.com/trouble-mrs/zh-cn_image_0264281526.png "点击放大") 
3. 查看log4j发现用户将"log4j.properties"文件改成了"log4g-cli.properties"（"log4j.properties"的名字是固定的不可随意修改）导致报错。
   图3查看log4j   
   ![](https://support.huaweicloud.com/trouble-mrs/zh-cn_image_0264281780.png "点击放大") 
4. 修改后可以正常提交作业。
   图4提交作业正常   
   ![](https://support.huaweicloud.com/trouble-mrs/zh-cn_image_0264281883.png "点击放大") 
 
#### 处理步骤
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/user.keytab
        ```
        
     
     2. principal名(即开发用户名)：
        ```
        security.kerberos.login.principal:flinkuser
        ```
        
      
   
   
   
   
4. 重新正确提交作业**./flink run /opt/client/Flink/flink/examples/streaming/WordCount.jar** ，验证是否可以提交作业。
   
   - 若可以提交作业则说明权限认证没有问题，就可以去检查其他错误，本例中是修改了log4j.properties的名称，还原后可以正常提交作业。
   
   - 若提交作业失败，请提交工单进行处理。
   
   
   
   
 
#### 参考信息
Flink使用请参考[从零开始使用Flink](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_0473.html)。
