问题描述
我们在 Kubernetes 上运行 Spark,访问 Kerberized HDFS 集群。我们可以使用 HDFS 委托令牌访问个人用户的数据,使用服务密钥表访问服务帐户的数据。
但是,我们希望从同一个 Spark 作业中的多个 HDFS 帐户读取/写入数据。特别是:
到目前为止,我能找到的所有文档仅涵盖每个 Spark 作业一个 kerberos 用户的情况。
是否可以在单个 Spark 作业中使用多个 kerberos 凭据?也就是说,从 hdfs://mycluster/user/a
读取时使用用户 A 的凭据,而从 hdfs://mycluster/user/b
读取时使用用户 B 的凭据?我们正在以编程方式启动 Spark,作为更大的 Scala 计划的一部分。
通过直接使用 Hadoop HDFS API,我们可以从 Java 程序访问多个用户帐户,执行如下操作:
val ugi1 = UserGroupinformation.loginUserFromKeytabAndReturnUGI(user1,keytab1)
val ugi2 = UserGroupinformation.loginUserFromKeytabAndReturnUGI(user2,keytab2)
val fs1 = ugi1.doAs(new PrivilegedAction[Unit] {
override def run(): Unit = {
FileSystem.get(...)
}
})
val fs2 = ugi2.doAs(new PrivilegedAction[Unit] {
override def run(): Unit = {
FileSystem.get(...)
}
})
// Code using fs1 and fs2
我们想从 Spark 作业(在 Kubernetes 集群上运行)做类似的事情。这可能吗?如果是这样,我们怎么做?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)