概述
Spark 客户端直接连接 Yarn ,不需要额外构建 Spark 集群。有 有 yarn-client 和 和 yarn-cluster 两 种 模式 , 主要区别在于:Driver 程序的运行节点。
yarn-client:Driver 程序运行在客户端,适用于交互、调试,希望立即看到 app 的输出
yarn-cluster:Driver 程序运行在由 RM(ResourceManager)启动的 AP(APPMaster)适用于生产环境。
安装使用
1)修改 hadoop 配置文件 yarn-site.xml 添加如下内容:
配置文件目录:/usr/local/hadoop/etc/hadoop
原因:虚拟机环境配置一般,做测试关闭。
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 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>
2)修改 spark-env.sh,添加如下配置:
YARN_CONF_DIR=/usr/local/hadoop/etc/hadoop
# 设置从hdfs下读文件,如果没有设置就是从本地读文件
HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
注释下图
3)分发配置文件
[atguigu@hadoop102 conf]$ xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml
[atguigu@hadoop102 conf]$ xsync spark-env.sh
我使用的scp
4)执行一个程序
官方求 PI 案例
在spark目录下面执行:
[root@master spark-2.1.1-bin-hadoop2.7]#
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100
不同的是这里提交给yarn,和之前提交给master!!!
注意:在提交任务之前需启动 HDFS 以及 YARN 集群。
补充:yarn模式和之前的Standalone模式是互不相干的
测试:
停止 [root@master spark-2.1.1-bin-hadoop2.7]# sbin/stop-all.sh 和 slave1上的Master
再到spark目录下面执行:
[root@master spark-2.1.1-bin-hadoop2.7]#
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100
结果:
程序照样运行成功!