Yarn Client模式下启动Spark的配置问题

由于YARN client模式对用户不直接暴露用于提交YARN程序的辅助程序,因此许多参数是通过环境变量来设置的,可以在spark-env.sh中进行如下配置:

Yarn Client模式下启动Spark的配置问题_第1张图片
spark-env.sh

这是我的spark-env.sh里面进行的相关配置,对于启动Spark最关键的前三项设置​​。

HADOOP_HOME:设置hadoop的安装目录;

HADOOP_CONF_DIR:设置hadoop配置文件的目录;

YARN_CONF_DIR:设置yarn配置文件的目录,同上;​

在我通过bin/spark-submit --master yarn-client.....提交我的应用程序时,出现了如下诊断错误,导致应用程序状态失败,异常退出:

Diagnostics

经过查找资料和配置分析, 找到了问题的根源。从诊断报告可以看出主要是container的虚拟内存的使用量超出的原因,可以通过(1)关闭虚拟内存使用检查(2)增加虚拟内存与物理内存的比例值。具体参数在yarn-site.xml中完成:

Yarn Client模式下启动Spark的配置问题_第2张图片
yarn-site.xml

​将修改后的配置文件发送给集群中的各个节点,重启集群后,发现可以成功通过yarn-client模式启动spark。

成功提交作业后,HDFS的${yarn.app.mapreduce.am.staging-dir}/${username}/.sparkStaging下面,就会产生两个jar包,一个是spark-assembly-*.jar,另一个是提交执行的jar包​:

Yarn Client模式下启动Spark的配置问题_第3张图片
上传jar包到HDFS

​​​作业执行完毕之后,所在目录的jar包会自动被删除,可以通过在spark-defaults.conf中设置保留jar包:

spark-defaults.conf

你可能感兴趣的:(Yarn Client模式下启动Spark的配置问题)