1、环境介绍
操作系统:centos 7.9
jdk版本:8u291
hadoop版本:2.10.1
spark版本:2.4.8 (因为自建了hadoop 所以使用without-hadoop包)
spark下载地址:https://archive.apache.org/dist/spark/spark-2.4.8/
注:
spark on yarn 运行方式有两种 client和cluster模式:
client方式:任务调度driver,运行在当前提交程序的客户机上,作业完成前不能关闭,显示输出在客户机上,一般用于调试
cluster方式:任务调度driver,运行在ApplicationMaster
中,ApplicationMaster运行在yarn集群上,client提交作业后,可以关闭
另:
spark on yarn模式,不需要启动spark
集群(所谓集群就是standalone),yarn充当资源调度器;resourcemanager相当于spark的master,nodemanager相当于spark的worker。
2、hadoop配置介绍
https://blog.csdn.net/zyj81092211/article/details/118155978
3、将spark软件包上传到/data目录
4、配置spark-env.sh
配置文件目录:/data/spark/conf
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
添加如下:
export JAVA_HOME=/usr/local/java
export HADOOP_CONF_DIR=/data/hadoop/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/data/hadoop/bin/hadoop classpath)
5、将软件包分发到Hadoop所有的节点中的/data
6、创建软连接到/usr/local/下(习惯,可以不做)(所有节点)
ln -s /data/spark /usr/local/spark
7、给执行文件添加权限(所有节点)
chmod +x /data/spark/bin/*
chmod +x /data/spark/sbin/*
8、修改hadoop yarn-site.xml文件
vi /data/hadoop/etc/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>
9、执行测试程序
cluster模式
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 4g --executor-memory 2g --executor-cores 1 --queue default examples/jars/spark-examples*.jar 10
注意:
官网示例–queue thequeue改成–queue default
最后的数字10,代表并行任务数
查看yarn
查看执行结果