目前,我正在为使用Kubernetes中的Livy提交Spark建立一个Kerber化环境。
到目前为止,我所取得的成就:
为了实现这一点,我对涉及的组件使用了以下版本:
我目前所面对的困难是:
当我试图从执行器访问HDFS时,当前收到的错误消息如下:
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;以下是目前的状况:
由于K尼姆将jar文件放在HDFS上,这些文件必须包含在Spark的依赖项中,因此能够访问HDFS是很重要的。(克尼梅要求这样做才能从DataSets检索预览数据,例如)
我试图找到解决这个问题的方法,但不幸的是,我还没有找到任何有用的资源。我看了一下代码,检查了一下UserGroupInformation.getCurrentUser().getTokens()。但那些藏品似乎是空的。这就是为什么我假设没有可用的委托令牌。
有没有人能办到这样的事,并能帮我解决这个问题?
提前谢谢大家!
发布于 2019-12-10 08:32:37
对于每个人来说,这都是一种挣扎:花了一段时间才找到这个方法不起作用的原因,但基本上它与Spark的Kubernetes在2.4.4时的实现有关。没有为CoarseGrainedSchedulerBackend的fetchHadoopDelegationTokens在KubernetesClusterSchedulerBackend中定义重写。
拉请求将通过将秘密传递给包含委托令牌的执行者来解决这一问题。它已经被拉到主人和在星火3.0.0预览,但至少还没有,在火花2.4分支提供。
https://stackoverflow.com/questions/59175517
复制相似问题