如何从Kubernetes上的Spark连接到由Kerberos生成的HDFS?

时间:2019-01-31 11:55:52

标签: kubernetes pyspark

我正在尝试连接到以kerberized化的hdfs,该错误失败并显示错误

  

org.apache.hadoop.security.AccessControlException:未启用SIMPLE身份验证。可用:[TOKEN,KERBEROS]

创建Spark设置时,除了需要生成Spark worker容器的标准内容之外,还需要添加哪些其他参数?

2 个答案:

答案 0 :(得分:1)

在hdfs-site.xml属性文件中检查<property>hadoop.security.authentication<property>
在您的情况下,其值应为kerberostoken
或者您可以通过显式指定属性从代码中配置它:

Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "kerberos");

您可以找到有关与hdfs here的安全连接的更多信息

答案 1 :(得分:0)

我也问了一个非常相似的问题here

首先,请确认这是在您的驱动程序窗格或执行程序窗格上发生的错误。您可以通过在驱动程序和执行程序开始运行时查看它们的日志来执行此操作。虽然我的火花作业仅在主服务器上运行没有任何错误,但是当我召唤执行人时,我确实会遇到此错误。解决方案是使用sidecar image。您可以在ifilonenko的project中看到它的实现,该信息在ifilonenko的demo中提到。

此方法的前提是将委托令牌(通过运行kinit获得)存储到共享的持久卷中。然后可以将该卷安装到您的驱动程序和执行程序吊舱中,从而使他们可以访问委托令牌,从而可以使用以kerberized化的hdfs。我相信您会收到此错误,因为您的执行者当前没有访问hdfs所需的委托令牌。

P.S。我假设您已经看过Spark的kubernetes documentation