如何解决在同一个 Spark 作业中访问多个 Kerberos 用户的 HDFS 文件
我们在 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 举报,一经查实,本站将立刻删除。