Apache Spark 3.x集群部署

Apache Spark简介

Apache Spark是一个开源集群运算框架,于 2009 年诞生于加州大学伯克利分校 AMPLab,2013 年被捐赠给 Apache 软件基金会,2014 年 2 月成为 Apache 的顶级项目。相对于 MapReduce 的批处理计算,Spark 可以带来上百倍的性能提升,因此它成为继 MapReduce 之后,最为广泛使用的分布式计算框架。
在这里插入图片描述

Spark HA模式部署

备注:下面操作在所有节点执行。

节点规划如下:

主机名服务名称
spark01Master、Worker
spark02Master-standby、Worker
spark03Master-standby、Worker

配置主机名和主机名解析

cat > /etc/hosts <<EOF
192.168.92.10 spark01
192.168.92.11 spark02
192.168.92.12 spark03
EOF

spark部署依赖java环境,安装参考:https://blog.csdn.net/networken/article/details/105084857

spark HA主备master选举依赖zookeeper,安装参考:https://blog.csdn.net/networken/article/details/116207969

下载spark

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

解压安装

tar -zxvf spark-3.1.2-bin-hadoop3.2.tgz -C /opt
mv /opt/spark-3.1.2-bin-hadoop3.2/ /opt/spark

配置环境变量

cat > /etc/profile.d/spark.sh <<'EOF'
export SPARK_HOME=/opt/spark
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
EOF

source /etc/profile

编辑spark-env.sh文件

cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh

cat > $SPARK_HOME/conf/spark-env.sh <<EOF
export JAVA_HOME=/opt/openjdk
export SPARK_MASTER_WEBUI_PORT=8090
export SPARK_WORKER_WEBUI_PORT=8091
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER 
-Dspark.deploy.zookeeper.url=zookeeper01:2181,zookeeper02:2181,zookeeper03:2181
-Dspark.deploy.zookeeper.dir=/spark"
EOF

关于上述参数的具体说明如下所示:

  • SPARK_MASTER_WEBUI_PORT 设置spark master webui端口,默认为8080
  • SPARK_WORKER_WEBUI_PORT 设置spark worker webui端口,默认为8081
  • spark.deploy.recoveryMode:设置Zookeeper去启动备用Master模式。
  • spark.deploy.zookeeper.url: 指定ZooKeeper的Server地址。
  • spark.deploy.zookeeper.dir: 保存集群元数据信息的文件、目录。

修改workers文件

cp $SPARK_HOME/conf/workers.template $SPARK_HOME/conf/workers

cat > $SPARK_HOME/conf/workers <<EOF
spark01
spark02
spark03
EOF

配置SSH免密,主备master节点对所有worker节点免密,需要在3个节点执行:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id spark01
ssh-copy-id spark02
ssh-copy-id spark03

启动Spark集群

1、在spark01节点启动spark集群,执行命令后,会在 spark01上启动 Maser 服务,会在 works 配置文件中配置的所有节点上启动 Worker 服务。

[root@spark01 ~]# start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-spark01.out
spark02: starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-spark02.out
spark03: starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-spark03.out
spark01: starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-spark01.out

2、分别在 spark02和 spark03上执行下面的命令,启动备用的 Master 服务:

[root@spark02 ~]# start-master.sh
starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-spark02.out

[root@spark03 ~]# start-master.sh 
starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-spark03.out

3、查看进程状态

[root@spark01 ~]# jps
4228 Master
4390 Jps
4299 Worker

[root@spark02 ~]# jps
3603 Master
3723 Jps
3535 Worker

[root@spark03 ~]# jps
4695 Master
4555 Worker
4751 Jps

浏览器访问主master spark

http://192.168.92.10:8090

在这里插入图片描述

浏览器访问备master spark

http://192.168.92.11:8090

在这里插入图片描述

测试Spark示例程序

{SPARK_HOME}/examples/src/main目录下,有一些 spark 自带的示例程序,有 java、python、r、scala 四种语言版本的程序。这里主要测试 python 版的计算PI的程序。

将pi.py程序提交到 spark 集群,以下操作需要python3环境支持:

[root@spark01 ~]# cd /opt/spark/examples/src/main/python

[root@spark01 python]# spark-submit --master spark://spark01:7077 pi.py

刷新浏览器界面,在Completed Applications栏可以看到一条记录,即刚才执行的计算PI的 python 程序。
在这里插入图片描述

测试Spark HA集群

Spark HA集群启动完毕后,为了演示是否解决了单点故障问题,可以关闭在spark01节点中的Master进程,用来模拟在生产环境中spark01突然宕机,命令如下所示:

$SPARK_HOME/sbin/stop-master.sh

​ 执行命令后,通过浏览器查看http://spark01:8080,发现已经无法通过spark01节点访问Spark集群管理界面。大约经过1-2分钟后,刷新http://spark02:8080页面,可以发现spark02节点中的Status值更改为ALIVE,Spark集群恢复正常,说明Spark HA配置有效解决了单点故障问题:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

willops

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值