一. 下载spark和scala并解压
cd /home/software
wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.3.1/spark-3.3.1-bin-hadoop3.tgz --no-check-certificate
tar -xvf spark-3.3.1-bin-hadoop3.tgz -C /home/
cd /home/software
官网下载scala:https://www.scala-lang.org/download/2.13.1.html
tar -xvf scala-2.13.1.tgz -C /home
二. 配置SPARK_HOME环境变量
vi /etc/profile
# 添加如下内容
export SPARK_HOME=/home/spark-3.3.1-bin-hadoop3
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export SCALA_HOME=/home/scala-2.13.1
export PATH= $PATH:$SCALA_HOME/bin
# 加载使其生效
source /etc/profile
三. 修改配置
# 进入spark conf目录
cd /home/spark-3.3.1-bin-hadoop3/conf
# 拷贝模板文件
cp spark-defaults.conf.template spark-defaults.conf
cp spark-env.sh.template spark-env.sh
3.1 修改 spark-defaults.conf
vim spark-defaults.conf
# 添加如下内容
spark.master spark://hp5:7077
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 512m
spark.executor.memory 512m
3.2 修改spark-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_181
export HADOOP_HOME=/home/hadoop-3.3.2
export HADOOP_CONF_DIR=/home/hadoop-3.3.2/etc/hadoop
export YARN_CONF_DIR=/home/hadoop-3.3.2/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/home/spark-3.3.1-bin-hadoop3/bin/hadoop classpath)
export SPARK_MASTER_HOST=hp5
export SPARK_MASTER_PORT=7077
3.3 修改slaves文件
vi slaves
# 修改为如下内容
hp5
hp6
hp7
四. 将spark目录分发到其他节点
cd /home
scp -r ./spark-3.3.1-bin-hadoop3/ root@hp6:/home/
scp -r ./spark-3.3.1-bin-hadoop3/ root@hp7:/home/
五. 启动Spark集群
# 配置了环境变量,可以在任意目录执行启动命令
cd /home/spark-3.3.1-bin-hadoop3/sbin
./start-all.sh
image.png
端口是8081
image.png
六. 在web界面查看Spark UI
在Linux系统上浏览器上查看Spark UI:
http://10.31.1.119:8081/
image.png
七. 测试
运行SparkPI进行案例测
spark-submit --class org.apache.spark.examples.SparkPi \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.2.2.jar 10
image.png
八. Yarn模式
上面默认是用standalone模式启动的服务,如果想要把资源调度交给yarn来做,则需要配置为yarn模式:
- 需要启动的服务:hdfs服务、yarn服务
- 需要关闭 Standalone 对应的服务(即集群中的Master、Worker进程)。
在Yarn模式中,Spark应用程序有两种运行模式:
- yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立2. 即看到app的输出
yarn-cluster:Driver程序运行在由RM启动的 AppMaster中,适用于生产环境
二者的主要区别:
Driver在哪里!
8.1 启动hdfs、yarn服务
此处略过
8.2 修改Hadoop中的 yarn-site.xml 配置
在$HADOOP_HOME/etc/hadoop/yarn-site.xml中增加如下配置,然后分发到集群其他节点,重启yarn 服务。
# 打开yarn-site.xml文件
vi /home/hadoop-3.3.2/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
说明:
- yarn.nodemanager.pmem-check-enabled : 是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true。
- yarn.nodemanager.vmem-check-enabled :是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。
8.3 向hdfs上传spark纯净版jar包
cd /home/software
wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.3.1/spark-3.3.1-bin-without-hadoop.tgz --no-check-certificate
tar -zxvf spark-3.3.1-bin-without-hadoop.tgz
上传spark纯净版jar包到hdfs
hdfs dfs -mkdir /spark-jars
hdfs dfs -put /home/software/spark-3.3.1-bin-without-hadoop/jars/* /spark-jars
说明:
- Spark任务资源分配由Yarn来调度,该任务有可能被分配到集群的任何一个节点。所以需要将spark的依赖上传到hdfs集群路径,这样集群中任何一个节点都能获取到,依此达到Spark集群的HA。
- Spark纯净版jar包,不包含hadoop和hive相关依赖,避免和后续安装的Hive出现兼容性问题。
8.4 Spark on Yarn测试
记得,先把Master与worker进程停掉,否则会走standalone模式。
# 停掉standalone模式的服务
stop-all.sh
8.4.1 client运行模式
这种模式可以看见:程序计算的结果(即可以看见计算返回的结果)!
# client
spark-submit --master yarn \
--deploy-mode client \
--class org.apache.spark.examples.SparkPi \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.2.2.jar 20
image.png
image.png
8.4.2 cluster运行模式
这种模式就看不见最终的结果!
# cluster
spark-submit --master yarn \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.2.2.jar 20
image.png
image.png
网友评论