各位大佬:
请教一个flink 认证的问题: Flink on yarn 运行在不用认证的 Hadoop 集群上,怎样访问带kerberos 认证集群的 hbase ?
下面是一些我们使用的描述和发现的问题:
我们有两个hadoop 集群,一个使用 Kerberos 认证模式,一个是 simple 认证模式,Flink 1.9.0 部署在 simple 认证的集群上。
最近在使用flink 读取 Kerberos 认证的集群的 hbase 上遇到了问题。配置 flink-conf.yaml 中的配置参数:security.kerberos.login.keytab 、security.kerberos.login.principal 。
我们计划在 map 中同步的读取 hbase 的数据,从输入数据中获取rowkey,使用get 方式获取hbase 数据,程序启动后,呈现 “卡” 在map 算子上,直到hbase get 超时,无法读取任何数据。在 taskmanager.log 中有发现有这样的日志:
org.apache.flink.yarn.YarnTaskExecutorRunner - OS current user: yarn org.apache.flink.yarn.YarnTaskExecutorRunner - current Hadoop/Kerberos user: admin (注:登陆用户) org.apache.flink.yarn.YarnTaskExecutorRunner - YARN daemon is running as: admin Yarn client user obtainer: admin org.apache.flink.runtime.security.modules.HadoopModule - Hadoop user set to admin (auth:SIMPLE) |
看过对应位置的代码,将 “Hadoop.security.authentication = kerberos” 参数添加到 Hadoop 的 配置文件中(注: 使用 simple 认证的 hadoop集群使用 amberi 部署 的 hdp 集群,不开启 Kerberos 认证 参数 “Hadoop.security.authentication” 的值为 simple ),使程序认证通过,但是 flink job 一直处于 created 状态,taskmanager.log 中一直报 “server asks us to fall back to SIMPLE auth. But the client is configured to only allow secure connections”
看到官网文档有这样的描述: https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/security-kerberos.html
Hadoop Security Module This module uses the Hadoop UserGroupInformation (UGI) class to establish a process-wide login user context. The login user is then used for all interactions with Hadoop, including HDFS, HBase, and YARN. If Hadoop security is enabled (in core-site.xml), the login user will have whatever Kerberos credential is configured. Otherwise, the login user conveys only the user identity of the OS account that launched the cluster. |