Spark 在 yarn 集群模式下提交截断参数

Spark submit truncates arguments in yarn cluster mode

我 运行 在集群部署模式下使用以下命令在 yarn 集群上运行 spark 应用程序

spark-submit --conf spark.executor.memory=24g --conf spark.master=yarn --conf spark.submit.deployMode=cluster --conf spark.executor.extraJavaOptions=-Dfile.encoding=UTF-8 --conf spark.files=file:///opt/configurations/app.conf --class com.example.HelloWorld --queue sample_q file:///opt/jars/example.jar '{"sample":{}}'

此命令没有将整个参数传递给 HelloWorld class。 传递的主要方法参数:{"sample":{ 预期的主要方法参数:{"sample":{}}

相同的命令 运行 与客户端部署模式

正确
spark-submit --conf spark.executor.memory=24g --conf spark.master=yarn --conf spark.submit.deployMode=client --conf spark.executor.extraJavaOptions=-Dfile.encoding=UTF-8 --conf spark.files=file:///opt/configurations/app.conf --class com.example.HelloWorld --queue sample_q file:///opt/jars/example.jar '{"sample":{}}'

检查 yarn worker 节点中的 launch_container.sh 脚本后发现该命令中也有截断的字符串 (--arg '{\"sample\":{')

星火版本:2.3

Hadoop 版本:2.7.3

Yarn 将 {{}} 视为参数扩展字符,因此任何出现都被视为环境变量并替换为相应的值。由于没有环境变量。

当驱动程序在 yarn 集群中运行时,这会导致集群部署模式出现问题。

参考:YarnApplicationConstants