Spark系列——运行模式(三)Yarn模式配置(详解)

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,修改环境变量

扫描二维码关注公众号,回复: 11997052 查看本文章
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启动

猜你喜欢

转载自blog.csdn.net/qq_46009608/article/details/108911193