hadoop – Kerberized Cluster中的Spark历史服务器身份验证

我建立了一个包含Spark的HDP集群.我还为群集启用了Kerberos,因此所有服务和用户都必须通过其主体进行身份验证.

这似乎工作正常,所有服务都在运行,并且用户必须先获得有效的Kerberos票证才能访问例如YARN ResourceManager的Web UI.

否则他会收到如下错误消息:

《hadoop – Kerberized Cluster中的Spark历史服务器身份验证》

但是,在制作kinit之后,用户可以访问该网站.

我现在想做的事情(我认为已经是这样),就是要保护Spark History Server UI,这样用户就必须通过Kerberos票证进行身份验证.实际上每个人都可以在没有身份验证的情
《hadoop – Kerberized Cluster中的Spark历史服务器身份验证》

是否有可能做到这一点?如果是,我该如何配置?

spark.eventLog.dir = hdfs:/// spark-history的实际权限是777.这是Ambari HDFS视图的屏幕截图:
《hadoop – Kerberized Cluster中的Spark历史服务器身份验证》

最佳答案 我在
IBM’s documentation找到了解决方案

您可以为Kerberos / SPNEGO重用Hadoop的jetty身份验证过滤器org.apache.hadoop.security.authentication.server.AuthenticationFilter

您可以通过在Spark的default.conf中设置来完成此操作
spark.ui.filters = org.apache.hadoop.security.authentication.server.AuthenticationFilter

spark.org.apache.hadoop.security.authentication.server.AuthenticationFilter.params =
键入= Kerberos的,kerberos.principal = ${spnego_principal_name},kerberos.keytab = ${spnego_keytab_path}
小心那些替换变量,在Ambari中设置这些值时它们对我不起作用.还要考虑添加cookie.domain和signature.secret.file,类似于其他Hadoop SPNEGO配置.

显然,这仅在Spark History Server在其类路径中使用Hadoop类运行时才有效 – 因此它不是SMACK-stack的开箱即用解决方案.

点赞