Apache Zeppelin 0.7.3中SPARK_SUBMIT_OPTIONS在YARN集群不生效
解决Zeppelin中SPARK_SUBMIT_OPTIONS在YARN上不生效的问题
这个问题我之前也碰到过,核心原因是Zeppelin的Spark解释器优先级设置逻辑——解释器UI里的配置会覆盖zeppelin-env.sh中的环境变量,而且有些Zeppelin版本默认不会主动读取SPARK_SUBMIT_OPTIONS这个全局环境变量来生成提交参数。给你几个可行的解决办法:
方法一:直接在Spark解释器UI中配置(推荐)
这是最直观且不容易出错的方式:
- 打开Zeppelin的Web UI,进入Interpreters页面,找到Spark解释器
- 找到对应的配置项,直接填入值:
spark.driver.memory:512mspark.executor.memory:512mspark.executor.cores:2spark.yarn.queue:onlineQ
- 保存配置后,点击Restart重启Spark解释器,之后提交的作业就会使用这些参数了
方法二:在解释器配置中指定spark-submit options
如果你更倾向于用spark-submit风格的参数串,可以这么做:
- 同样在Spark解释器的设置页面,找到spark-submit options这个配置项
- 把你原本写在
SPARK_SUBMIT_OPTIONS里的内容直接填进去:--executor-memory 512m --driver-memory 512m --executor-cores 2 --queue onlineQ - 保存并重启解释器,Zeppelin在提交作业到YARN时会直接使用这些参数
方法三:确保zeppelin-env.sh的配置被解释器读取
如果一定要通过zeppelin-env.sh来配置,需要额外调整解释器的环境变量设置:
- 编辑
zeppelin-env.sh后,重启Zeppelin服务 - 进入Spark解释器设置页面,找到Environment Variables部分
- 添加一条环境变量:
SPARK_SUBMIT_OPTIONS="--executor-memory 512m --driver-memory 512m --executor-cores 2 --queue onlineQ" - 保存并重启解释器,这样解释器启动时会加载这个环境变量并应用到spark-submit命令中
补充说明
之前你在解释器里配置能生效,是因为Zeppelin的Spark解释器会把UI里的配置直接拼接成spark-submit的命令参数,这些参数的优先级远高于全局环境变量中的设置,所以之前zeppelin-env.sh里的配置被覆盖了。
内容的提问来源于stack exchange,提问作者Soheil Pourbafrani
相关产品推荐
相关产品推荐

