spark-submit
允许使用--conf spark.executorEnv.FOO=bar
配置执行程序环境变量,Spark REST API允许使用environmentVariables
字段传递一些环境变量。
不幸的是,我发现在群集模式下使用spark-submit
提交驱动程序时,配置驱动程序的环境变量并不相似:
spark-submit --deploy-mode cluster myapp.jar
是否可以在群集模式下使用spark-submit
设置驱动程序的环境变量?
答案 0 :(得分:11)
至少YARN,这有效:
spark-submit --deploy-mode cluster --conf spark.yarn.appMasterEnv.FOO=bar myapp.jar
http://spark.apache.org/docs/latest/configuration.html#environment-variables中提到:
注意:在
cluster
模式下在YARN上运行Spark时,需要使用spark.yarn.appMasterEnv.[EnvironmentVariableName]
文件中的conf/spark-defaults.conf
属性设置环境变量。
我已经测试过它可以使用--conf
的{{1}}标记传递,因此您无需编辑全局配置文件。
答案 1 :(得分:3)
您可以使用以下分类在执行程序和主节点上设置环境变量:
[
{
"Classification": "yarn-env",
"Properties": {},
"Configurations": [
{
"Classification": "export",
"Properties": {
"VARIABLE_NAME": VARIABLE_VALUE,
}
}
]
}
]
如果您只设置spark.yarn.appMasterEnv.FOO = "foo"
,则env变量不会出现在执行程序实例上。
答案 2 :(得分:2)
在集群模式下的Yarn,它通过使用--conf在spark-submit命令中添加环境变量来实现,如下所示 -
spark-submit --master yarn-cluster --num-executors 15 --executor-memory 52g --executor-cores 7 --driver-memory 52g --conf" spark.yarn。 appMasterEnv.FOO = /路径/富" --conf" spark.executorEnv.FOO2 = / path / foo2" app.jar 强>
此外,您可以通过在conf / spark-defaults.conf文件中添加它们来实现。
答案 3 :(得分:0)
是的,这是可能的。您需要在spark-submit中发布哪些变量,就像您正在做的那样?
spark-submit --deploy-mode cluster myapp.jar
从http://spark.apache.org/docs/latest/configuration.html获取变量并取决于您的优化使用这些变量。这个link也可能会有所帮助。
我曾经在集群模式下使用,但现在我在YARN中使用,所以我的变量如下:(希望有帮助)
hastimal@nm:/usr/local/spark$ ./bin/spark-submit --class com.hastimal.Processing --master yarn-cluster --num-executors 15 --executor-memory 52g --executor-cores 7 --driver-memory 52g --driver-cores 7 --conf spark.default.parallelism=105 --conf spark.driver.maxResultSize=4g --conf spark.network.timeout=300 --conf spark.yarn.executor.memoryOverhead=4608 --conf spark.yarn.driver.memoryOverhead=4608 --conf spark.akka.frameSize=1200 --conf spark.io.compression.codec=lz4 --conf spark.rdd.compress=true --conf spark.broadcast.compress=true --conf spark.shuffle.spill.compress=true --conf spark.shuffle.compress=true --conf spark.shuffle.manager=sort /users/hastimal/Processing.jar Main_Class /inputRDF/rdf_data_all.nt /output /users/hastimal/ /users/hastimal/query.txt index 2
在这里,我的jar是类的参数。
cc /inputData/data_all.txt / output / users / hastimal / /users/hastimal/query.txt index 2
答案 4 :(得分:0)
您用
测试过--conf spark.driver.FOO="bar"
然后通过
获得价值spark.conf.get("spark.driver.FOO")