gpt4 book ai didi

java - SparkLauncher 使用yarn-client运行spark-submit,用户作为hive

转载 作者:行者123 更新时间:2023-12-02 12:49:59 25 4
gpt4 key购买 nike

尝试使用 masterURL=yarn-client 运行 Spark 作业。使用 SparkLauncher 2.10。 java代码被封装在nifi处理器中。 Nifi 当前正在以 root 身份运行。当我执行yarn application -list时,我看到spark作业以USER = root开始。我想用 USER = hive 运行它。以下是我的 SparkLauncher 代码。

Process spark = new SparkLauncher()
.setSparkHome(cp.fetchProperty(GlobalConstant.spark_submit_work_dir).toString())
.setAppResource(cp.fetchProperty(GlobalConstant.spark_app_resource))
.setMainClass(cp.fetchProperty(GlobalConstant.spark_main_class))
.addAppArgs(ps.getName())
// .setConf(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS,"-Duser.name=hive")
.setConf(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS, "-Dlog4j.configuration=file:///opt/eim/log4j_submitgnrfromhdfs.properties")
.setVerbose(true)
.launch();

我需要将用户作为驱动程序额外选项传递吗?环境是非kerberos。在某处读到我需要将用户名作为驱动程序额外的 java 选项传递。现在找不到那个帖子了!!

最佳答案

export HADOOP_USER_NAME=hive 有效。 SparkLauncher 具有接受环境变量映射的重载。至于spark.yarn.principle,环境是非kerberos。根据我的阅读,yarn.principle 仅适用于 kerboros。做了以下事情

Process spark = new SparkLauncher(getEnvironmentVar(ps.getRunAs()))
.setSparkHome(cp.fetchProperty(GlobalConstant.spark_submit_work_dir).toString())
.setAppResource(cp.fetchProperty(GlobalConstant.spark_app_resource))
.setMainClass(cp.fetchProperty(GlobalConstant.spark_main_class))
.addAppArgs(ps.getName())
// .setConf(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS,"-Duser.name=hive")
.setConf(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS, "-Dlog4j.configuration=file:///opt/eim/log4j_submitgnrfromhdfs.properties")
.setVerbose(true)
.launch();

而不是 new SparkLancher()使用过SparkLauncher(java.util.Map<String,String> env).添加或替换HADOOP_USER_NAME=hive.检查yarn application -list按预期启动 USER=hive.

关于java - SparkLauncher 使用yarn-client运行spark-submit,用户作为hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44630029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com