前言

在上一篇文章《Hadoop集群搭建配置教程》中详细介绍了Hadoop集群搭建的全部过程,今天为大家带来分布式计算引擎Spark集群搭建,还是使用三个虚拟机节点上进行安装部署,围绕Standalone模式和Yarn模式的这两种部署模式进行展开。

集群搭建具体步骤

注意:以下步骤均在hadoop1节点上进行操作,特殊说明除外!

Standalone模式

1、下载spark-3.0.0的jar包

下载地址:
archive.apache.org/dist/spark/…

2、上传并解压

将下载好的 spark-3.0.0-bin-hadoop3.2.tgz 上传到 hadoop1 虚拟机节点/opt/module目录下。

# 解压
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz

3、配置SPARK_HOME环境变量

vim ~/.bashrc
# 添加如下内容
export SPARK_HOME=/opt/module/spark-3.0.0-bin-hadoop3.2
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
# 加载使其生效
source ~/.bashrc 

4、修改配置

# 进入spark conf目录
cd /opt/module/spark-3.0.0-bin-hadoop3.2/conf
# 拷贝模板文件
cp spark-defaults.conf.template spark-defaults.conf
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves

4.1 修改 spark-defaults.conf

vim spark-defaults.conf
# 添加如下内容
spark.master                     spark://hadoop1:7077
spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.driver.memory              1g
spark.executor.memory            1g

4.2 修改spark-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_131
export HADOOP_HOME=/opt/module/hadoop
export HADOOP_CONF_DIR=/opt/module/hadoop/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/opt/module/hadoop/bin/hadoop classpath)
export SPARK_MASTER_HOST=hadoop1
export SPARK_MASTER_PORT=7077

4.3 修改slaves文件

vim slaves
# 修改为如下内容
hadoop1
hadoop2
hadoop3

5、将spark-3.0.0-bin-hadoop3.2 目录分发到其他节点

scp -r ./spark-3.0.0-bin-hadoop3.2 hadoop2:/opt/module/
scp -r ./spark-3.0.0-bin-hadoop3.2 hadoop3:/opt/module/

6、启动Spark集群

# 配置了环境变量,可以在任意目录执行启动命令
start-all.sh

7、在web界面查看Spark UI

Linux系统上浏览器上查看Spark UI
http://hadoop1:8080/

8、测试

运行SparkPI进行案例测试:

spark-submit --class org.apache.spark.examples.SparkPi 
$SPARK_HOME/examples/jars/spark-examples_2.12-3.0.0.jar 10

Yarn模式

上面默认是用standalone模式启动的服务,如果想要把资源调度交给yarn来做,则需要配置为yarn模式:
需要启动的服务:hdfs服务yarn服务
需要关闭 Standalone 对应的服务(即集群中的MasterWorker进程)。
Yarn模式中,Spark应用程序有两种运行模式:
yarn-clientDriver程序运行在客户端,适用于交互、调试,希望立即看到app的输出
yarn-clusterDriver程序运行在由RM启动的 AppMaster中,适用于生产环境
二者的主要区别:Driver在哪里!

1、开启 hdfs、yarn服务

start-dfs.sh
start-yarn.sh

2、修改Hadoop中的 yarn-site.xml 配置

$HADOOP_HOME/etc/hadoop/yarn-site.xml中增加如下配置,然后分发到集群其他节点,重启yarn 服务。

# 打开yarn-site.xml文件
vim /opt/module/hadoop/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

3、修改Spark配置,分发到集群

# spark-env.sh 中这一项必须要有
# cd /opt/module/spark/conf
# 添加如下内容
export HADOOP_CONF_DIR=/opt/module/hadoop/etc/hadoop
# spark-default.conf(以下是优化)
# vim spark-defaults.conf
# 添加如下内容
spark.yarn.jars                    hdfs://hadoop1:8020/spark-jars/*.jar

4、向hdfs上传spark纯净版jar包

下载spark-3.0.0-bin-without-hadoop.tgz
下载地址:archive.apache.org/dist/spark/…

# 上传并解压spark-3.0.0-bin-without-hadoop.tgz
tar -zxvf spark-3.0.0-bin-without-hadoop.tgz

上传spark纯净版jar包到hdfs

hdfs dfs -mkdir /spark-jars
hdfs dfs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars

说明:
1)Spark任务资源分配由Yarn来调度,该任务有可能被分配到集群的任何一个节点。所以需要将spark的依赖上传到hdfs集群路径,这样集群中任何一个节点都能获取到,依此达到Spark集群的HA
2) Spark纯净版jar包,不包含hadoophive相关依赖,避免和后续安装的Hive出现兼容性问题。

5、测试

记得,先把Masterworker进程停掉,否则会走standalone模式。

# 停掉standalone模式的服务
stop-all.sh

client运行模式

# client
spark-submit --master yarn 
--deploy-mode client 
--class org.apache.spark.examples.SparkPi 
$SPARK_HOME/examples/jars/spark-examples_2.12-3.0.0.jar 20

这种模式可以看见:程序计算的结果(即可以看见计算返回的结果)!

cluster运行模式

# cluster
spark-submit --master yarn 
--deploy-mode cluster 
--class org.apache.spark.examples.SparkPi 
$SPARK_HOME/examples/jars/spark-examples_2.12-3.0.0.jar 20

这种模式就看不见最终的结果!

到此,我们就顺利完成了Spark集群搭建。下一篇文章,将会给大家带来Hive的部署安装,谢谢大家!

—————-end——————

微信公众号:扫描下方二维码或 搜索 笑看风云路 关注