Hadoop 如何使用仅限Kerberos的用户启动Spark Streaming Thread应用程序? 问题在于:正如预期的那样,操作系统用户能够启动并拥有spark流媒体应用程序。但是,当我们尝试运行应用程序所有者不是OS用户的作业时,spark streaming返回一个错误,表示找不到用户。从“spark submit”命令的输出中可以看到:
我已经在其他一些论坛上看到了这个错误,建议是由OS用户创建的,但不幸的是,这里没有这个选项。在storm应用程序中,只能使用Kerberos的用户可以与OS用户结合使用,但spark中的情况似乎并非如此Hadoop 如何使用仅限Kerberos的用户启动Spark Streaming Thread应用程序? 问题在于:正如预期的那样,操作系统用户能够启动并拥有spark流媒体应用程序。但是,当我们尝试运行应用程序所有者不是OS用户的作业时,spark streaming返回一个错误,表示找不到用户。从“spark submit”命令的输出中可以看到:,hadoop,hdfs,spark-streaming,yarn,kerberos,Hadoop,Hdfs,Spark Streaming,Yarn,Kerberos,我已经在其他一些论坛上看到了这个错误,建议是由OS用户创建的,但不幸的是,这里没有这个选项。在storm应用程序中,只能使用Kerberos的用户可以与OS用户结合使用,但spark中的情况似乎并非如此 到目前为止,我已经尝试过了:我能得到的最接近的方法是使用两个操作系统用户,其中一个用户对第二个用户的keytab文件具有“读取”权限。我从一个应用程序运行到“模拟”第二个应用程序,第二个应用程序显示为所有者。由于两者都是操作系统用户,因此不会出现任何错误,但当我使用仅限Kerberos的用户作为
--proxy user
命令尝试了另一种方法,但返回了相同的错误
在spark中真的不可能只使用Kerberos用户吗?还是有解决办法?
环境是:
Spark 2.3.0 on YARN.
Hadoop 2.7.3.
非常感谢你的帮助 在对用户进行身份验证(在您的例子中使用Kerberos)之后,默认情况下,Hadoop依赖操作系统来检索该用户所属的组。如果操作系统将Kerberos用户映射到Linux用户(通常通过LDAP,使用SSSD或Centrify),那么它就可以开箱即用。在您的情况下,必须更改Hadoop配置以将组直接映射到LDAP=>更改Java类,配置LDAP目录(或多个目录)以点击。谷歌。
spark-submit --master yarn --deploy-mode cluster --keytab /etc/security/keytabs/user_name.keytab
--principal kerberosOnlyUser@LOCAL
--files ./spark_jaas.conf#spark_jaas.conf,
./user_name_copy.keytab#user_name_copy.keytab --conf "spark.driver.extraJavaOptions=-Djava.security.auth.login.config=./spark_jaas.conf"
--conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=./spark_jaas.conf"
--driver-java-options "-Djava.security.auth.login.config=./spark_jaas.conf"
--conf spark.yarn.submit.waitAppCompletion=true --class ...
Spark 2.3.0 on YARN.
Hadoop 2.7.3.