这篇文章给大家介绍Spark+Zookeeper怎么搭建高可用Spark集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
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
spark服务配置文件主要有两个:spark-env.sh和slaves。
配置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
配置 spark-default.sh
,主要用于spark执行任务(可以命令行动态指定):
# http://spark.apache.org/docs/latest/configuration.html#configuring-logging
# spark-defaults.sh
spark.app.name YunTuSpark
spark.driver.cores 2
spark.driver.memory 2g
spark.master spark://tvm13:7077,tvm14:7077
spark.eventLog.enabled true
spark.eventLog.dir hdfs://cluster01/tmp/event/logs
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.serializer.objectStreamReset 100
spark.executor.logs.rolling.time.interval daily
spark.executor.logs.rolling.maxRetainedFiles 30
spark.ui.enabled true
spark.ui.killEnabled true
spark.ui.liveUpdate.period 100ms
spark.ui.liveUpdate.minFlushPeriod 3s
spark.ui.port 4040
spark.history.ui.port 18080
spark.ui.retainedJobs 100
spark.ui.retainedStages 100
spark.ui.retainedTasks 1000
spark.ui.showConsoleProgress true
spark.worker.ui.retainedExecutors 100
spark.worker.ui.retainedDrivers 100
spark.sql.ui.retainedExecutions 100
spark.streaming.ui.retainedBatches 100
spark.ui.retainedDeadExecutors 100
# spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
hdfs资源准备
因为 spark.eventLog.dir
指定为hdfs存储,所以需要在hdfs预先创建相应的目录文件:
hdfs dfs -mkdir -p hdfs://cluster01/tmp/event/logs
配置系统环境变量
编辑 ~/.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节点,并配置各个节点的环境变量。
启动
查看状态
启动完成后到web去查看:
完成!
关于Spark+Zookeeper怎么搭建高可用Spark集群就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。