Spark三种分布式部署方式比较
目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on YARN,详情参考。
Spark standalone模式分布式部署
环境介绍
| 主机名 |
应用 |
| tvm11 |
zookeeper |
| tvm12 |
zookeeper |
| tvm13 |
zookeeper、spark(master)、spark(slave)、Scala |
| tvm14 |
spark(backup)、spark(slave)、Scala |
| tvm15 |
spark(slave)、Scala |
说明
安装scala
由上面的说明可知,spark对scala版本依赖较为严格,spark-2.4.5依赖scala-2.12.x,所以首先要安装scala-2.12.x,在此选用scala-2.12.10。使用二进制安装:
$ wget https://downloads.lightbend.com/scala/2.12.10/scala-2.12.10.tgz
$ tar zxvf scala-2.12.10.tgz -C /path/to/scala_install_dir
如果系统环境也要使用相同版本的scala,可以将其加入到用户环境变量(.bashrc或.bash_profile)。
安装spark
- 打通三台spark机器的work用户ssh通道;
- 现在安装包到master机器:tvm13;
- 下载地址
- 注意提示信息。
![]()
配置spark
spark服务配置文件主要有两个:spark-env.sh和slaves。
- spark-evn.sh:配置spark运行相关环境变量
- slaves:指定worker服务器
配置spark-env.sh:cp spark-env.sh.template spark-env.sh
export JAVA_HOME=/data/template/j/java/jdk1.8.0_201
export SCALA_HOME=/data/template/s/scala/scala-2.12.10
export SPARK_WORKER_MEMORY=2048m
export SPARK_WORKER_CORES=2
export SPARK_WORKER_INSTANCES=2
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=tvm11:2181,tvm12:2181,tvm13:2181 -Dspark.deploy.zookeeper.dir=/data/template/s/spark"
# 关于 SPARK_DAEMON_JAVA_OPTS 参数含义:
# -Dspark.deploy.recoverMode=ZOOKEEPER #代表发生故障使用zookeeper服务
# -Dspark.depoly.zookeeper.url=master.hadoop,slave1.hadoop,slave1.hadoop #主机名的名字
# -Dspark.deploy.zookeeper.dir=/spark #spark要在zookeeper上写数据时的保存目录
# 其他参数含义:https://blog.csdn.net/u010199356/article/details/89056304
配置slaves:cp slaves.template slaves
# A Spark Worker will be started on each of the machines listed below.
tvm13
tvm14
tvm15
配置系统环境变量
编辑 ~/.bashrc :
export SPARK_HOME=/data/template/s/spark/spark-2.4.5-bin-hadoop2.7
export PATH=$SPARK_HOME/bin/:$PATH
分发
以上配置完成后,将 /path/to/spark-2.4.5-bin-hadoop2.7 分发至各个slave节点,并配置各个节点的环境变量。
启动
- 先在master节点启动所有服务:
./sbin/start-all.sh
- 然后在backup节点单独启动master服务:
./sbin/start-master.sh
查看状态
启动完成后到web去查看:
- master(8081端口):Status: ALIVE
![]()
- backup(8080端口):Status: STANDBY
![]()
完成!