Spark Yarn 运行模式

概述

Spark 可以直接连接 Yarn ,不需要额外构建Spark 集群。有 yarn-client 和 yarn-cluster 两种模式,主要区别在于:Driver 程序的运行节点。

  • yarn-client:Driver 程序运行在客户端,适用于交互、调试,希望立即看到 app 的输出
  • yarn-cluster(集群):Driver 程序运行在RM(ResourceManager)启动的AP(APPmaster) 适用于生成环境。

配置

修改 hadoop 配置文件 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/conf 下的 spark-env.sh,添加 Hadoop 的 etc/hadoop ,修改完记得 source

YARN_CONF_DIR=/usr/local/src/hadoop/hadoop-2.6.0/etc/hadoop

配置集群就分发,不是集群就不用分发

// 分发 spark-env.sh
scp spark-env.sh slave1:/usr/local/src/spark/spark-2.0.0-bin-hadoop2.6/conf/
scp spark-env.sh slave2:/usr/local/src/spark/spark-2.0.0-bin-hadoop2.6/conf/

// 分发 yarn-site.xml
scp yarn-site.xml slave1:/usr/local/src/hadoop/hadoop-2.6.0/etc/hadoop/
scp yarn-site.xml slave2:/usr/local/src/hadoop/hadoop-2.6.0/etc/hadoop/

提交一个例子测试(注意启动Hadoop 和 Yarn)

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.0.0.jar \
100

mark

日志查看

因为在Spark 计算,Yarn 调度资源,Yarn不能获取到 Spark的执行日志,所以需要配置一下

修改配置文件 Spark/conf下的 spark-defaults.conf
如下

首先创建好存放目录hadoop fs -mkdir /historyserverforSpark

park.yarn.historyServer.address=master:18080
spark.history.ui.port=18080
spark.eventLog.enabled=true
spark.eventLog.dir=hdfs://master:9000/historyserverforSpark
spark.history.fs.logDirectory=hdfs://master:9000/historyserverforSpark

重启spark历史服务

// 关闭
sbin/stop-history-server.sh 
// 开启
sbin/start-history-server.sh

提交任务到Yarn执行

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.0.0.jar \
100

Web页面查看日志

mark

发表评论 / Comment

用心评论~