良许Linux教程网 干货合集 部署高可用Spark集群:Spark+Zookeeper

部署高可用Spark集群:Spark+Zookeeper

spark是一个用于大规模数据处理的统一计算引擎。适用于各种各样原先需要多种不同的分布式平台处理的场景,包括批处理、迭代计算、交互式查询、流处理。通过统一的框架将各种处理流程整合到一起。

Spark三种分布式部署方式比较

目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on YARN,详情参考。

Spark standalone模式分布式部署

部署高可用Spark集群:Spark+Zookeeper

环境介绍

主机名 应用 tvm11 zookeeper tvm12 zookeeper tvm13 zookeeper、spark(master)、spark(slave)、Scala tvm14 spark(backup)、spark(slave)、Scala

tvm15 spark(slave)、Scala

说明

依赖scala:

Note that support for Java 7, Python 2.6 and old Hadoop versions before 2.6.5 were removed as of Spark 2.2.0. Support for Scala 2.10 was removed as of 2.3.0. Support for Scala 2.11 is deprecated as of Spark 2.4.1 and will be removed in Spark 3.0.

zookeeper: Master结点存在单点故障,所以要借助zookeeper,至少启动两台Master结点来实现高可用,配置方案比较简单。

安装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;

注意提示信息,及Hadoop版本(与已有环境匹配,如果不匹配则选非预编译的版本自己编译)。

详解Spark+Zookeeper搭建高可用Spark集群详解Spark+Zookeeper搭建高可用Spark集群

解压到安装目录即可。

配置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

配置 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节点,并配置各个节点的环境变量。

启动

先在master节点启动所有服务:./sbin/start-all.sh

然后在backup节点单独启动master服务:./sbin/start-master.sh

查看状态

启动完成后到web去查看:

master(8081端口):Status: ALIVE

详解Spark+Zookeeper搭建高可用Spark集群详解Spark+Zookeeper搭建高可用Spark集群

backup(8080端口):Status: STANDBY

详解Spark+Zookeeper搭建高可用Spark集群详解Spark+Zookeeper搭建高可用Spark集群

完成!

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

img
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部