
# Flink客户端执行命令报错"Error while parsing YAML configuration file : security.kerberos.login.keytab"
#### 问题现象
客户端安装成功，执行客户端命令例如yarn-session.sh时报错，提示如下：
```
[root@host01 bin]# yarn-session.sh
2018-10-25 01:22:06,454 | ERROR | [main] | Error while trying to split key and value in configuration file /opt/flinkclient/Flink/flink/conf/flink-conf.yaml:80: "security.kerberos.login.keytab: " | org.apache.flink.configuration.GlobalConfiguration (GlobalConfiguration.java:160)
Exception in thread "main" org.apache.flink.configuration.IllegalConfigurationException: Error while parsing YAML configuration file :80: "security.kerberos.login.keytab: "
```
#### 原因分析
在安全集群环境下，Flink需要进行安全认证。当前客户端未进行相关安全认证设置。
1. Flink整个系统有两种认证方式：
   - 使用kerberos认证：Flink yarn client、Yarn Resource Manager、JobManager、HDFS、TaskManager、Kafka和Zookeeper。
   
   - 使用YARN内部的认证机制：Yarn Resource Manager与Application Master（简称AM）。
    
2. 如果用户安装安全集群需要使用kerberos认证和security cookie认证。根据日志提示，发现配置文件中"security.kerberos.login.keytab :"配置项错误，未进行安全配置。
 
#### 处理步骤
1. 从MRS上下载用户的keytab认证文件，并放置到Flink客户端所在节点的某个目录下。
2. 在"flink-conf.yaml"文件中配置： 
   1. keytab路径。
      ```
      security.kerberos.login.keytab: /home/flinkuser/keytab/abc222.keytab
      ```
      ![](https://support.huaweicloud.com/trouble-mrs/public_sys-resources/note_3.0-zh-cn.png)
      - "/home/flinkuser/keytab/abc222.keytab"表示的是用户目录，为[1]中放置目录。
      
      - 请确保客户端用户具备对应目录权限。
        
   
   
   
   2. principal名。
      ```
      security.kerberos.login.principal: abc222
      ```
      
   
   
   
   3. 对于HA模式，如果配置了ZooKeeper，还需要设置ZooKeeper Kerberos认证相关的配置。
      ```
      zookeeper.sasl.disable: false 
      security.kerberos.login.contexts: Client
      ```
      
   
   
   
   4. 如果用户对于Kafka Client和Kafka Broker之间也需要做Kerberos认证，配置如下：
      ```
      security.kerberos.login.contexts: Client,KafkaClient
      ```
      
   
   
   
   
 
