yarn模式
00_介绍
Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。
yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出。
yarn-cluster:Driver程序运行在由RM(ResourceManager)启动的AP(APPMaster)适用于生产环境。
Yarn运行模式如图:
01_配置
1.1,修改hadoop的配置文件 yarn-site.xml,完了分发给其他节点。
由于我们的测试环境虚拟机太少,防止将来任务被意外杀死。
cd /usr/hadoop/hadoop-2.10.0/etc/hadoop/
vi yarn-site.xml
#添加以下在configuration标签中间
<!--是否启动一个线程检查每个任务正使用的物理内存量。如果任务使用的内存量超出分配值,则会被中断。默认是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>
#分发
scp -r yarn-site.xml slave1:/usr/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r yarn-site.xml slave2:/usr/hadoop/hadoop-2.10.0/etc/hadoop/
1.2,复制spark,并命名为spark-yarn
cp -r spark-2.4.0-bin-hadoop2.7 spark-yarn
1.3,修改spark-env.sh文件
mv spark-env.sh.template spark-env.sh
for i in *.template; do mv ${i} ${i%.*}; done
HADOOP_CONF_DIR=/usr/hadoop/hadoop-2.10.0/etc/hadoop
1.4,修改环境变量
vi /etc/profile
export SPARK_HOME=/usr/hadoop/spark-yarn
export PATH=$PATH:$SPARK_HOME/sbin:$SPARK_HOME/bin
source /etc/profile
1.5,添加历史服务
1.5.1配置env.sh
vi spark-env.sh
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=30 -Dspark.history.fs.logDirectory=hdfs://node1:8020/spark-logs-yarn"
1.5.2 创建日志目录,hadoop得开启才行
bin/hadoop fs -mkdir /spark-logs-yarn
1.5.3配置defaults.conf
vi spark-defaults.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://node1:8020/spark-logs-yarn
1.6,例子
从spark-shell日志中看到spark-shell --master yarn-client命令从Spark2.0开始废弃了,可以换成spark-shell --master yarn --deploy-mode client。
注意:
(1)在提交任务之前需启动HDFS以及YARN集群。
(2)若对hadoopUI页面访问端口号有疑问,可参考文章大数据平台——Hadoop环境配置
(1) 在shell中
spark-shell --master yarn --deploy-mode client
scala> val rdd=sc.parallelize(1 to 100,5)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:24
scala> rdd.count
res0: Long = 100
(2) 直接在spark-yarn
bin/spark-submit \
--master yarn \
--class org.apache.spark.examples.SparkPi \
--deploy-mode client \
./examples/jars/sp,,,,, \ #架包的路径
100
02_总结
(1)单机和yarn模式不能配到一台上,配置spark环境变量会冲突,而且yarn-UI也访问不了
(2)yarn模式不需要配spark的集群,用它的时候先把hadoop启动