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

    科技2022-07-11  101

    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启动

    Processed: 0.029, SQL: 8