Biao Geng:

十分感谢您的回复。



这个问题是我的同事之前向我提出的。我当时直觉感觉是不行的。现在周末放空的时候再想想这个问题。


我考虑的是,提交任务使用到本集群的principal和keytab和要他写入的另一集群用到的principal和keytab在hadoop的UserGroupInformation类login时会冲突,导致要么任务无法在本集群顺利做如checkpoint之类的操作,要么就是无法写入另一集群的HDFS。


我想任务提交到非加密yarn上时确实是可行的,但是对于加密yarn来说就不行了。



不知道上面考虑是否合理。
---- 回复的原邮件 ----
| 发件人 | Geng Biao<biaoge...@gmail.com> |
| 发送日期 | 2023年04月08日 23:20 |
| 收件人 | user-zh@flink.apache.org<user-zh@flink.apache.org> |
| 主题 | Re: Kerberos加密Yarn集群上的Flink任务写入其他未互信的加密HDFS是否可能 |
Hi yihan,
这个本质上可以理解成在Flink的taskmanager运行一个UDF(UDF做的事情是写另一个Kerberos HDFS集群),所以技术上是可能的。
我之前走通过普通Yarn集群的Flink任务写入另一个Kerberos HDFS集群的流程,整体操作感觉比较复杂,通常而言,你需要如下步骤:
1. 
准备一个HAOOP_CONF_DIR,它包含hdfs-site.xml、core-site.xml等配置,除此之外还要准备kerberos鉴权所需的krb5.conf等文件,使得你在使用这个HAOOP_CONF_DIR以及通过kinit命令完成授权后,可以在你的Yarn集群通过Hadoop
 client访问另一个加密HDFS(例如可以get/put文件)。
2. 
在你的flink应用中,通过containerized.taskmanager.env.XX、containerized.master.env.XX这2类配置项来指定需要使用的HADOOP_USER_NAME、HAOOP_CONF_DIR(你需要把步骤1准备好的HAOOP_CONF_DIR通过yarn.ship-files参数进行指定,从而使得它被ship到YARN
 TM container中,然后-D containerized.taskmanager.env. 
HAOOP_CONF_DIR=./hadoop-conf)。类似的,用于访问目标kerberos集群的krb5.conf也需要ship。

整体流程比较容易遇到很多kerberos相关报错,可能需要多做些尝试与搜素。

Best,
Biao Geng


From: yihan <x2009...@126.com>
Date: Saturday, April 8, 2023 at 10:26 PM
To: user-zh@flink.apache.org <user-zh@flink.apache.org>
Subject: Kerberos加密Yarn集群上的Flink任务写入其他未互信的加密HDFS是否可能
请教如标题问题,谢谢。

回复