flink on yarn 的 kerberos 认证问题

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

flink on yarn 的 kerberos 认证问题

venn
各位大佬:

            请教一个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-ker
beros.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.

 

 

 

Reply | Threaded
Open this post in threaded view
|

Re:flink on yarn 的 kerberos 认证问题

guoshuai
kerberos用户的krb5.conf ,user.keytab文件是否在程序运行时加载到了,我之前遇到的kerberos问题是flink读kafka获取不到数据,通过yarn-session模式运行,认证阶段是在yarn-session发布完成的. 最后问题出在kafka通信协议,可以看下hbase端的配置,实现不行 也可以解耦hbase跟flink中间加一个kafka








在 2019-11-26 14:50:32,"venn" <[hidden email]> 写道:

>各位大佬:
>
>            请教一个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-ker
>beros.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.
>
>
>
>
>
>
>
Reply | Threaded
Open this post in threaded view
|

回复: flink on yarn 的 kerberos 认证问题

venn
我们kafka 可以正常认证、消费数据,认证hbase 和kafka 好像不一样,我们是不认证
读不到数据,认证了,任务又提交不到 yarn 上去了

如下:
>            看过对应位置的代码,将 “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”



-----邮件原件-----
发件人: user-zh-return-1557-wxchunjhyy=[hidden email]
<user-zh-return-1557-wxchunjhyy=[hidden email]> 代表 guoshuai
发送时间: Wednesday, November 27, 2019 1:31 PM
收件人: [hidden email]
主题: Re:flink on yarn 的 kerberos 认证问题

kerberos用户的krb5.conf ,user.keytab文件是否在程序运行时加载到了,我之前遇到
的kerberos问题是flink读kafka获取不到数据,通过yarn-session模式运行,认证阶段是
在yarn-session发布完成的. 最后问题出在kafka通信协议,可以看下hbase端的配置,实
现不行 也可以解耦hbase跟flink中间加一个kafka








在 2019-11-26 14:50:32,"venn" <[hidden email]> 写道:
>各位大佬:
>
>            请教一个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/securit
>y-ker
>beros.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.
>
>
>
>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re:回复: flink on yarn 的 kerberos 认证问题

guoshuai


HBase认证需要ZooKeeper和Kerberos安全认证,跟ZooKeeper认证“jaas.conf”文件也加载进去了吗?

LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME, userName, userKeytabFile);
LoginUtil.setZookeeperServerPrincipal(ZOOKEEPER_SERVER_PRINCIPAL_KEY,
ZOOKEEPER_DEFAULT_SERVER_PRINCIPAL);
LoginUtil.login(userName, userKeytabFile, krb5File, conf);








在 2019-11-27 14:00:15,"venn" <[hidden email]> 写道:

>我们kafka 可以正常认证、消费数据,认证hbase 和kafka 好像不一样,我们是不认证
>读不到数据,认证了,任务又提交不到 yarn 上去了
>
>如下:
>>            看过对应位置的代码,将 “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”
>
>
>
>-----邮件原件-----
>发件人: user-zh-return-1557-wxchunjhyy=[hidden email]
><user-zh-return-1557-wxchunjhyy=[hidden email]> 代表 guoshuai
>发送时间: Wednesday, November 27, 2019 1:31 PM
>收件人: [hidden email]
>主题: Re:flink on yarn 的 kerberos 认证问题
>
>kerberos用户的krb5.conf ,user.keytab文件是否在程序运行时加载到了,我之前遇到
>的kerberos问题是flink读kafka获取不到数据,通过yarn-session模式运行,认证阶段是
>在yarn-session发布完成的. 最后问题出在kafka通信协议,可以看下hbase端的配置,实
>现不行 也可以解耦hbase跟flink中间加一个kafka
>
>
>
>
>
>
>
>
>在 2019-11-26 14:50:32,"venn" <[hidden email]> 写道:
>>各位大佬:
>>
>>            请教一个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/securit
>>y-ker
>>beros.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.
>>
>>
>>
>>
>>
>>
>>
Reply | Threaded
Open this post in threaded view
|

回复: 回复: flink on yarn 的 kerberos 认证问题

venn
我们好像zookeeper 没有开安全认证,从Java 代码也没有添加 jaas.conf 文件,而且
看 日志里面有 关于 zookeeper 已经建立连接相关的日志。


问题其实还没到这一步,我现在的问题是:“Flink on yarn 运行在不用认证的hadoop
集群上,是否可以访问带kerberos 认证的hadoop集群的 hbase”

现在是这两种现象:
        1、直接在不认证的hadoop集群提交 读认证hbase 的任务,可以从日志看到,
hadoop 运行在 simple 模式(默认模式,不认证模式),对应日志“Hadoop user set
to xxx (auth: SIMPLE) ”,任务卡在读hbase 的地方,直到超时
        2、修改提交节点的 core-site.xml/hdfs-site.xml,注入一个新的
core-site.xml 带配置参数 " Hadoop.security.authentication  = kerberos",可以
在日志中看到 "Hadoop user set to xxx (auth: KERBEROS)",但是任务一直处于
“created” 状态,日志报:“server asks us to fall back to SIMPLE auth. But
the client is configured to only allow secure connections”




-----邮件原件-----
发件人: user-zh-return-1559-wxchunjhyy=[hidden email]
<user-zh-return-1559-wxchunjhyy=[hidden email]> 代表 guoshuai
发送时间: Wednesday, November 27, 2019 2:26 PM
收件人: [hidden email]
主题: Re:回复: flink on yarn 的 kerberos 认证问题



HBase认证需要ZooKeeper和Kerberos安全认证,跟ZooKeeper认证“jaas.conf”文件也
加载进去了吗?

LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME, userName,
userKeytabFile);
LoginUtil.setZookeeperServerPrincipal(ZOOKEEPER_SERVER_PRINCIPAL_KEY,
ZOOKEEPER_DEFAULT_SERVER_PRINCIPAL);
LoginUtil.login(userName, userKeytabFile, krb5File, conf);








在 2019-11-27 14:00:15,"venn" <[hidden email]> 写道:
>我们kafka 可以正常认证、消费数据,认证hbase 和kafka 好像不一样,我们是不认

>读不到数据,认证了,任务又提交不到 yarn 上去了
>
>如下:
>>            看过对应位置的代码,将 “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”
>
>
>
>-----邮件原件-----
>发件人: user-zh-return-1557-wxchunjhyy=[hidden email]
><user-zh-return-1557-wxchunjhyy=[hidden email]> 代表 guoshuai
>发送时间: Wednesday, November 27, 2019 1:31 PM
>收件人: [hidden email]
>主题: Re:flink on yarn 的 kerberos 认证问题
>
>kerberos用户的krb5.conf ,user.keytab文件是否在程序运行时加载到了,我之前遇到
>的kerberos问题是flink读kafka获取不到数据,通过yarn-session模式运行,认证阶段

>在yarn-session发布完成的. 最后问题出在kafka通信协议,可以看下hbase端的配置,

>现不行 也可以解耦hbase跟flink中间加一个kafka
>
>
>
>
>
>
>
>
>在 2019-11-26 14:50:32,"venn" <[hidden email]> 写道:
>>各位大佬:
>>
>>            请教一个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/securi
>>t
>>y-ker
>>beros.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.
>>
>>
>>
>>
>>
>>
>>
Reply | Threaded
Open this post in threaded view
|

Re:回复: 回复: flink on yarn 的 kerberos 认证问题

guoshuai
我们的flink配置kerberos的,访问kerberos的组件kafka,HBase(zk也是kerberos)和开源的simple组件es,mysql这些 读写都没什么问题.(Kerberos都是在一个集群下的,安全认证的用户具有访问hdfs,zk,kafka的权限)

你说你的zookeeper也是simple的,两个simple组件互相访问是没问题,   但是确定simple的zk可以让flink访问配置kerberos的hbase及存储数据的hdfs?(这个我没测过)
1:确定simple模式的flink可以拿到kerberos的kafka,是的话应该可以排除掉simple模式flink跨集群访问kerberos的问题
2:有没有可能是simple模式不能访问配置kerberos集群的hdfs导致的,

在配置kerberos集群的core-site.xml开启allow simple 试试

<property><name>ipc.client.fallback-to-simple-auth-allowed</name><value>true</value> </property>








在 2019-11-27 17:08:48,"venn" <[hidden email]> 写道:

>我们好像zookeeper 没有开安全认证,从Java 代码也没有添加 jaas.conf 文件,而且
>看 日志里面有 关于 zookeeper 已经建立连接相关的日志。
>
>
>问题其实还没到这一步,我现在的问题是:“Flink on yarn 运行在不用认证的hadoop
>集群上,是否可以访问带kerberos 认证的hadoop集群的 hbase”
>
>现在是这两种现象:
> 1、直接在不认证的hadoop集群提交 读认证hbase 的任务,可以从日志看到,
>hadoop 运行在 simple 模式(默认模式,不认证模式),对应日志“Hadoop user set
>to xxx (auth: SIMPLE) ”,任务卡在读hbase 的地方,直到超时
> 2、修改提交节点的 core-site.xml/hdfs-site.xml,注入一个新的
>core-site.xml 带配置参数 " Hadoop.security.authentication  = kerberos",可以
>在日志中看到 "Hadoop user set to xxx (auth: KERBEROS)",但是任务一直处于
>“created” 状态,日志报:“server asks us to fall back to SIMPLE auth. But
>the client is configured to only allow secure connections”
>
>
>
>
>-----邮件原件-----
>发件人: user-zh-return-1559-wxchunjhyy=[hidden email]
><user-zh-return-1559-wxchunjhyy=[hidden email]> 代表 guoshuai
>发送时间: Wednesday, November 27, 2019 2:26 PM
>收件人: [hidden email]
>主题: Re:回复: flink on yarn 的 kerberos 认证问题
>
>
>
>HBase认证需要ZooKeeper和Kerberos安全认证,跟ZooKeeper认证“jaas.conf”文件也
>加载进去了吗?
>
>LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME, userName,
>userKeytabFile);
>LoginUtil.setZookeeperServerPrincipal(ZOOKEEPER_SERVER_PRINCIPAL_KEY,
>ZOOKEEPER_DEFAULT_SERVER_PRINCIPAL);
>LoginUtil.login(userName, userKeytabFile, krb5File, conf);
>
>
>
>
>
>
>
>
>在 2019-11-27 14:00:15,"venn" <[hidden email]> 写道:
>>我们kafka 可以正常认证、消费数据,认证hbase 和kafka 好像不一样,我们是不认
>证
>>读不到数据,认证了,任务又提交不到 yarn 上去了
>>
>>如下:
>>>            看过对应位置的代码,将 “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”
>>
>>
>>
>>-----邮件原件-----
>>发件人: user-zh-return-1557-wxchunjhyy=[hidden email]
>><user-zh-return-1557-wxchunjhyy=[hidden email]> 代表 guoshuai
>>发送时间: Wednesday, November 27, 2019 1:31 PM
>>收件人: [hidden email]
>>主题: Re:flink on yarn 的 kerberos 认证问题
>>
>>kerberos用户的krb5.conf ,user.keytab文件是否在程序运行时加载到了,我之前遇到
>>的kerberos问题是flink读kafka获取不到数据,通过yarn-session模式运行,认证阶段
>是
>>在yarn-session发布完成的. 最后问题出在kafka通信协议,可以看下hbase端的配置,
>实
>>现不行 也可以解耦hbase跟flink中间加一个kafka
>>
>>
>>
>>
>>
>>
>>
>>
>>在 2019-11-26 14:50:32,"venn" <[hidden email]> 写道:
>>>各位大佬:
>>>
>>>            请教一个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/securi
>>>t
>>>y-ker
>>>beros.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.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
Reply | Threaded
Open this post in threaded view
|

回复: 回复: 回复: flink on yarn 的 kerberos 认证问题

venn
大佬,非常感谢您的回复

“zookeeper也是simple” :我们集群使用的是国内一个厂商提供的hadoop 平台,权
限里面没有关于zookeeper 的配置,Java也可以无认证直接读取zookeeper 的数据。

“确定simple模式的flink可以拿到kerberos的kafka”: 在没有认证的hadoop集群上
的flink ,确实可以访问带 Kerberos 认证的kafka(疑问:看起来kafka 和 hdfs、
hbase 的认证方式不太一样?kafka 只需要带上 keytab 文件和用户名, hdfs /
hbase 需要使用 UserGroupInformation 主动认证)

“simple模式不能访问配置kerberos集群的hdfs”:想试下
“ipc.client.fallback-to-simple-auth-allowed” 这个参数的,不让加,也是无奈

今天试了下不 flink-conf.yaml 里面认证的配合删掉,发现任务的表现是一样的,也
是卡在 hbase.get 上面,日志基本上和 加了认证的一样(除了一些 加载参数的日
志)



-----邮件原件-----
发件人: user-zh-return-1563-wxchunjhyy=[hidden email]
<user-zh-return-1563-wxchunjhyy=[hidden email]> 代表 guoshuai
发送时间: Wednesday, November 27, 2019 6:29 PM
收件人: [hidden email]
主题: Re:回复: 回复: flink on yarn 的 kerberos 认证问题

我们的flink配置kerberos的,访问kerberos的组件kafka,HBase(zk也是kerberos)和开
源的simple组件es,mysql这些 读写都没什么问题.(Kerberos都是在一个集群下的,安全
认证的用户具有访问hdfs,zk,kafka的权限)

你说你的zookeeper也是simple的,两个simple组件互相访问是没问题,   但是确定
simple的zk可以让flink访问配置kerberos的hbase及存储数据的hdfs?(这个我没测过)
1:确定simple模式的flink可以拿到kerberos的kafka,是的话应该可以排除掉simple模
式flink跨集群访问kerberos的问题
2:有没有可能是simple模式不能访问配置kerberos集群的hdfs导致的,

在配置kerberos集群的core-site.xml开启allow simple 试试

<property><name>ipc.client.fallback-to-simple-auth-allowed</name><value>true
</value> </property>








在 2019-11-27 17:08:48,"venn" <[hidden email]> 写道:
>我们好像zookeeper 没有开安全认证,从Java 代码也没有添加 jaas.conf 文件,而

>看 日志里面有 关于 zookeeper 已经建立连接相关的日志。
>
>
>问题其实还没到这一步,我现在的问题是:“Flink on yarn 运行在不用认证的
hadoop
>集群上,是否可以访问带kerberos 认证的hadoop集群的 hbase”
>
>现在是这两种现象:
> 1、直接在不认证的hadoop集群提交 读认证hbase 的任务,可以从日志看到,
>hadoop 运行在 simple 模式(默认模式,不认证模式),对应日志“Hadoop user
set to xxx (auth:
>SIMPLE) ”,任务卡在读hbase 的地方,直到超时
> 2、修改提交节点的 core-site.xml/hdfs-site.xml,注入一个新的
>core-site.xml 带配置参数 " Hadoop.security.authentication  = kerberos",可

>在日志中看到 "Hadoop user set to xxx (auth: KERBEROS)",但是任务一直处于
>“created” 状态,日志报:“server asks us to fall back to SIMPLE auth. But
the

>client is configured to only allow secure connections”
>
>
>
>
>-----邮件原件-----
>发件人: user-zh-return-1559-wxchunjhyy=[hidden email]
><user-zh-return-1559-wxchunjhyy=[hidden email]> 代表 guoshuai
>发送时间: Wednesday, November 27, 2019 2:26 PM
>收件人: [hidden email]
>主题: Re:回复: flink on yarn 的 kerberos 认证问题
>
>
>
>HBase认证需要ZooKeeper和Kerberos安全认证,跟ZooKeeper认证“jaas.conf”文件也
>加载进去了吗?
>
>LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME, userName,
>userKeytabFile);
>LoginUtil.setZookeeperServerPrincipal(ZOOKEEPER_SERVER_PRINCIPAL_KEY,
>ZOOKEEPER_DEFAULT_SERVER_PRINCIPAL);
>LoginUtil.login(userName, userKeytabFile, krb5File, conf);
>
>
>
>
>
>
>
>
>在 2019-11-27 14:00:15,"venn" <[hidden email]> 写道:
>>我们kafka 可以正常认证、消费数据,认证hbase 和kafka 好像不一样,我们是不认
>证
>>读不到数据,认证了,任务又提交不到 yarn 上去了
>>
>>如下:
>>>            看过对应位置的代码,将 “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”
>>
>>
>>
>>-----邮件原件-----
>>发件人: user-zh-return-1557-wxchunjhyy=[hidden email]
>><user-zh-return-1557-wxchunjhyy=[hidden email]> 代表 guoshuai
>>发送时间: Wednesday, November 27, 2019 1:31 PM
>>收件人: [hidden email]
>>主题: Re:flink on yarn 的 kerberos 认证问题
>>
>>kerberos用户的krb5.conf ,user.keytab文件是否在程序运行时加载到了,我之前遇

>>的kerberos问题是flink读kafka获取不到数据,通过yarn-session模式运行,认证阶段
>是
>>在yarn-session发布完成的. 最后问题出在kafka通信协议,可以看下hbase端的配置,
>实
>>现不行 也可以解耦hbase跟flink中间加一个kafka
>>
>>
>>
>>
>>
>>
>>
>>
>>在 2019-11-26 14:50:32,"venn" <[hidden email]> 写道:
>>>各位大佬:
>>>
>>>            请教一个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/secur
>>>i
>>>t
>>>y-ker
>>>beros.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.
>>>
>>>
>>>
>>>
>>>
>>>
>>>