Hadoop 如何使用仅限Kerberos的用户启动Spark Streaming Thread应用程序? 问题在于:正如预期的那样,操作系统用户能够启动并拥有spark流媒体应用程序。但是,当我们尝试运行应用程序所有者不是OS用户的作业时,spark streaming返回一个错误,表示找不到用户。从“spark submit”命令的输出中可以看到:

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的用户作为

我已经在其他一些论坛上看到了这个错误,建议是由OS用户创建的,但不幸的是,这里没有这个选项。在storm应用程序中,只能使用Kerberos的用户可以与OS用户结合使用,但spark中的情况似乎并非如此

  • 到目前为止,我已经尝试过了:我能得到的最接近的方法是使用两个操作系统用户,其中一个用户对第二个用户的keytab文件具有“读取”权限。我从一个应用程序运行到“模拟”第二个应用程序,第二个应用程序显示为所有者。由于两者都是操作系统用户,因此不会出现任何错误,但当我使用仅限Kerberos的用户作为第二个用户时,它确实会失败。下面您可以看到spark streaming的已提交命令(顺便说一句,他们都是HDFS用户,否则也无法启动):
  • 我还使用
    --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.