环境介绍
- jdk 1.8
- Scala 2.11.12
- Spark 2.4.5
1. spark-env.sh文件
需要根据实际情况修改,在原来模板上只需要追加此行,不需要设置master等等,因为提交yran执行只需要一台机器有spark即可。
# 指定yran的配置文件目录
export YARN_CONF_DIR=/home/hadoop/apps/hadoop-2.7.7/etc/hadoop
2. spark-defaults.conf
/spark/logs目录要预先创建
spark.yarn.historyServer.address bd01:18080
spark.history.ui.port 18080
spark.history.fs.logDirectory hdfs://mycluster/spark/logs
spark.eventLog.enabled true
spark.eventLog.dir hdfs://mycluster/spark/logs
spark.eventLog.compress true
3. yarn-site.xml
建议添加两项配置
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
测试
- 重启Spark历史服务
sbin/sbin/stop-history-server.sh
sbin/sbin/stop-history-server.sh
- 执行示例程序
# client 方式
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.4.5.jar \
100
# cluster 方式
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.11-2.4.5.jar \
100