SparkLauncher 运行 spark-submit with yarn-client with user as hive
SparkLauncher Run spark-submit with yarn-client with user as hive
正在尝试 运行 使用 masterURL=yarn-client
激发工作。使用 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 选项传递的内容。现在找不到 post!!
export HADOOP_USER_NAME=hive 成功了。 SparkLauncher 有过载来接受环境变量的 Map。至于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.
使用USER=hive.
检查yarn application -list
按预期启动
正在尝试 运行 使用 masterURL=yarn-client
激发工作。使用 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 选项传递的内容。现在找不到 post!!
export HADOOP_USER_NAME=hive 成功了。 SparkLauncher 有过载来接受环境变量的 Map。至于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.
使用USER=hive.
yarn application -list
按预期启动