Spark集群搭建超详细教程

简介: 今天为大家带来分布式计算引擎Spark集群搭建,还是使用三个虚拟机节点上进行安装部署,围绕Standalone模式和Yarn模式的这两种部署模式进行展开。

前言

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

集群搭建具体步骤

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

Standalone模式

1、下载spark-3.0.0的jar包

下载地址:

https://archive.apache.org/dist/spark/spark-3.0.0/spark-3.0.0-bin-hadoop3.2.tgz

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

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

# 上传并解压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的部署安装,谢谢大家!

相关文章
|
2月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
60 5
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
54 3
|
2月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
36 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
2月前
|
存储 缓存 分布式计算
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
46 4
|
2月前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
43 1
|
2月前
|
JSON 分布式计算 大数据
大数据-85 Spark 集群 RDD创建 RDD-Action Key-Value RDD详解 RDD的文件输入输出
大数据-85 Spark 集群 RDD创建 RDD-Action Key-Value RDD详解 RDD的文件输入输出
36 1
|
2月前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
41 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
2月前
|
SQL 分布式计算 大数据
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(一)
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(一)
33 0
|
2月前
|
SQL 分布式计算 大数据
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(二)
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(二)
31 0
|
2月前
|
消息中间件 分布式计算 Kafka
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
31 0