基于 ZooKeeper 搭建 Spark 高可用集群
2019-06-29 15:42
841 查看
一、集群规划
二、前置条件
三、Spark集群搭建
3.1 下载解压
3.2 配置环境变量
3.3 集群配置
3.4 安装包分发
四、启动集群
4.1 启动ZooKeeper集群
4.2 启动Hadoop集群
4.3 启动Spark集群
4.4 查看服务
五、验证集群高可用
六、提交作业
一、集群规划
这里搭建一个3节点的Spark集群,其中三台主机上均部署
Worker服务。同时为了保证高可用,除了在hadoop001上部署主
Master服务外,还在hadoop002和hadoop003上分别部署备用的
Master服务,Master服务由Zookeeper集群进行协调管理,如果主
Master不可用,则备用
Master会成为新的主
Master。
二、前置条件
搭建Spark集群前,需要保证JDK环境、Zookeeper集群和Hadoop集群已经搭建,相关步骤可以参阅:
三、Spark集群搭建
3.1 下载解压
下载所需版本的Spark,官网下载地址:http://spark.apache.org/downloads.html
下载后进行解压:
# tar -zxvf spark-2.2.3-bin-hadoop2.6.tgz
3.2 配置环境变量
# vim /etc/profile
添加环境变量:
export SPARK_HOME=/usr/app/spark-2.2.3-bin-hadoop2.6 export PATH=${SPARK_HOME}/bin:$PATH
使得配置的环境变量立即生效:
# source /etc/profile
3.3 集群配置
进入
${SPARK_HOME}/conf目录,拷贝配置样本进行修改:
1. spark-env.sh
cp spark-env.sh.template spark-env.sh
# 配置JDK安装位置 JAVA_HOME=/usr/java/jdk1.8.0_201 # 配置hadoop配置文件的位置 HADOOP_CONF_DIR=/usr/app/hadoop-2.6.0-cdh5.15.2/etc/hadoop # 配置zookeeper地址 SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop001:2181,hadoop002:2181,hadoop003:2181 -Dspark.deploy.zookeeper.dir=/spark"
2. slaves
cp slaves.template slaves
配置所有Woker节点的位置:
hadoop001 hadoop002 hadoop003
3.4 安装包分发
将Spark的安装包分发到其他服务器,分发后建议在这两台服务器上也配置一下Spark的环境变量。
scp -r /usr/app/spark-2.4.0-bin-hadoop2.6/ hadoop002:usr/app/ scp -r /usr/app/spark-2.4.0-bin-hadoop2.6/ hadoop003:usr/app/
四、启动集群
4.1 启动ZooKeeper集群
分别到三台服务器上启动ZooKeeper服务:
zkServer.sh start
4.2 启动Hadoop集群
# 启动dfs服务 start-dfs.sh # 启动yarn服务 start-yarn.sh
4.3 启动Spark集群
进入hadoop001的
${SPARK_HOME}/sbin目录下,执行下面命令启动集群。执行命令后,会在hadoop001上启动
Maser服务,会在
slaves配置文件中配置的所有节点上启动
Worker服务。
start-all.sh
分别在hadoop002和hadoop003上执行下面的命令,启动备用的
Master服务:
# ${SPARK_HOME}/sbin 下执行 start-master.sh
4.4 查看服务
查看Spark的Web-UI页面,端口为
8080。此时可以看到hadoop001上的Master节点处于
ALIVE状态,并有3个可用的
Worker节点。
而hadoop002和hadoop003上的Master节点均处于
STANDBY状态,没有可用的
Worker节点。
五、验证集群高可用
此时可以使用
kill命令杀死hadoop001上的
Master进程,此时备用
Master会中会有一个再次成为
主Master,我这里是hadoop002,可以看到hadoop2上的
Master经过
RECOVERING后成为了新的主
Master,并且获得了全部可以用的
Workers。
Hadoop002上的
Master成为主
Master,并获得了全部可以用的
Workers。
此时如果你再在hadoop001上使用
start-master.sh启动Master服务,那么其会作为备用
Master存在。
六、提交作业
和单机环境下的提交到Yarn上的命令完全一致,这里以Spark内置的计算Pi的样例程序为例,提交命令如下:
spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode client \ --executor-memory 1G \ --num-executors 10 \ /usr/app/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar \ 100
更多大数据系列文章可以参见个人 GitHub 开源项目: 大数据入门指南
相关文章推荐
- Spark集群基于Zookeeper的HA搭建部署笔记(转)
- Spark集群基于Zookeeper的HA搭建部署笔记
- 从0开始搭建基于Zookeeper的Spark集群
- Spark集群基于Zookeeper的HA搭建部署笔记
- Spark集群基于Zookeeper的HA搭建部署
- 单机基于docker搭建hadoop2.7.1 spark1.7 高可用集群
- Spark集群基于Zookeeper的HA搭建部署笔记
- 基于 ZooKeeper 搭建 Hadoop 高可用集群
- 基于zookeeper的Spark高可用集群配置
- 基于 ZooKeeper 搭建 Hadoop 高可用集群
- Spark集群搭建+基于zookeeper的高可用HA
- Spark集群基于Zookeeper的HA搭建部署
- Spark集群基于Zookeeper的HA搭建部署
- 基于Spark2.0搭建Hive on Spark环境(Mysql本地和远程两种情况)
- Flume NG高可用集群搭建详解(基于flume-1.7.0)
- spark(4)-高可用HA zookeeper原理及环境搭建
- heartbeat v2配置高可用web集群和基于nfs搭建MySQL高可用集群
- zookeeper、dubbo整合搭建rpc(基于springMVC)
- Spark Streaming 实战(1)搭建kafka+zookeeper+spark streaming 的windows本地开发环境
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源代码实现