基情链接
模式说明
Spark Standalone Mode - Spark 2.4.5 Documentation (apache.org)
Spark Standalone 集群是 Master-Slaves 架构的集群模式,和大部分的 Master-Slaves 结构集群一样,存在着 Master 单点故障的问题,该模式基于 Zookeeper 实现 HA
当 Active 的 Master 出现故障时,另外的一个 Standby Master 会被选举出来。由于集群的信息,包括 Worker, Driver 和 Application 的信息都已经持久化到文件系统,因此在切换的过程中只会影响新 Job 的提交,对于正在进行的 Job 没有任何的影响
搭建准备
环境准备
云服务器 3 台
node1/172.17.0.8 | node2/172.17.30.12 | node3/172.17.30.26 |
---|---|---|
主 | 备、从 | 从 |
安装包下载
目前 Spark
最新稳定版本,企业中使用较多版本为 2.x
的版本系列
Spark 下载界面:Downloads | Apache Spark
Spark 2.4.5 版本下载:Index of /dist/spark/spark-2.4.5 (apache.org)
本博客安装的版本为:spark-2.4.5-bin-hadoop2.7.tgz
环境配置
3 台服务器装好 JDK、配置 服务器的 hostname
、域名映射、zk 集群
安装及配置
① 上传解压
# 3 台服务器都操作
# 解压软件包
tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz
# 创建软连接
ln -s /opt/server/spark-2.4.5-bin-hadoop2.7 /opt/server/spark
② 修改配置文件:slaves
# 3 台服务器都操作
cd /opt/server/spark/conf
# 修改文件名
mv slaves.template slaves
# 编辑文件
vim slaves
node1
node2
node3
③ 修改配置文件:spark-env.sh
# 3 台服务器都操作
cd /opt/server/spark/conf
# 修改文件名
mv spark-env.sh.template spark-env.sh
# 编辑文件
vim spark-env.sh
## 设置 JAVA 安装目录
JAVA_HOME=/usr/java/jdk1.8.0_172
## 指定提交任务的通信端口
export SPARK_MASTER_PORT=7077
## 指定恢复模式、zk的server地址、保存集群元数据信息的文件和目录(包括Worker、Driver、Application信息)
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark-ha"
SPARK_MASTER_WEBUI_PORT=8080
SPARK_WORKER_CORES=1
SPARK_WORKER_MEMORY=1g
启动及测试
集群启动
# 在 node1 上执行
/opt/server/spark/sbin/start-all.sh
# 在 node2 上执行
/opt/server/spark/sbin/start-master.sh
访问测试
http://node1:8080/
http://node2:8080/
测试主备切换
在 node1
上使用查看 master
进程,并将该进程杀掉,观察 node2
的 web
界面 node2
是否为 Alive
测试获取文件行数
# 启动 spark-shell
cd /opt/server/spark
bin/spark-shell --master spark://node1:7077,node2:7077
# 获取已经上传的文件
val textFile = sc.textFile("hdfs://node1:8020/tmp/student.txt")
# 统计行数
textFile.count()