首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当主服务器是k8s时,Spark2.4.4是否支持转发委托令牌?

当主服务器是k8s时,Spark2.4.4是否支持转发委托令牌?
EN

Stack Overflow用户
提问于 2019-12-04 11:57:32
回答 1查看 506关注 0票数 0

目前,我正在为使用Kubernetes中的Livy提交Spark建立一个Kerber化环境。

到目前为止,我所取得的成就:

  • 运行内核化HDFS集群
  • Livy使用SPNEGO
  • Livy把乔布斯交给k8s并生下火种执行者
  • K尼姆能够在k8s集群之外与Namenode和Datanodes进行交互

为了实现这一点,我对涉及的组件使用了以下版本:

  • 火花2.4.4
  • Livy 0.5.0 (K尼姆目前只支持该版本)
  • Namenode和Datanode 2.8.1
  • 库伯奈特斯1.14.3

我目前所面对的困难是:

  • 从火花执行器访问HDFS

当我试图从执行器访问HDFS时,当前收到的错误消息如下:

代码语言:javascript
复制
org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]; Host Details : local host is: "livy-session-0-1575455179568-exec-1/10.42.3.242"; destination host is: "hdfs-namenode-0.hdfs-namenode.hdfs.svc.cluster.local":8020;

以下是目前的状况:

  1. 在成功地挑战了KDC (使用Keytab +主体) -->工作之后,K尼姆连接到了HDFS
  2. K尼姆把分期罐放到HDFS ->工作。
  3. KNIME要求Livy (SPNEGO挑战)->工作
  4. Livy向k8s主/子遗嘱执行人提交火花作业->工作
  5. KNIME向Livy提交任务,这些任务应该由执行者执行->基本工作。
  6. 当试图访问HDFS来读取文件时,会发生前面提到的错误->问题

由于K尼姆将jar文件放在HDFS上,这些文件必须包含在Spark的依赖项中,因此能够访问HDFS是很重要的。(克尼梅要求这样做才能从DataSets检索预览数据,例如)

我试图找到解决这个问题的方法,但不幸的是,我还没有找到任何有用的资源。我看了一下代码,检查了一下UserGroupInformation.getCurrentUser().getTokens()。但那些藏品似乎是空的。这就是为什么我假设没有可用的委托令牌。

有没有人能办到这样的事,并能帮我解决这个问题?

提前谢谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-10 08:32:37

对于每个人来说,这都是一种挣扎:花了一段时间才找到这个方法不起作用的原因,但基本上它与Spark的Kubernetes在2.4.4时的实现有关。没有为CoarseGrainedSchedulerBackendfetchHadoopDelegationTokensKubernetesClusterSchedulerBackend中定义重写。

拉请求将通过将秘密传递给包含委托令牌的执行者来解决这一问题。它已经被拉到主人和在星火3.0.0预览,但至少还没有,在火花2.4分支提供。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59175517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档