您好,登录后才能下订单哦!
这篇文章给大家介绍Spark+Zookeeper怎么搭建高可用Spark集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on YARN,详情参考。
主机名 | 应用 |
---|---|
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结点来实现高可用,配置方案比较简单。
由上面的说明可知,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机器的work用户ssh通道;
现在安装包到master机器:tvm13;
下载地址
注意提示信息,及Hadoop版本(与已有环境匹配,如果不匹配则选非预编译的版本自己编译)。
解压到安装目录即可。
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"
因为 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
backup(8080端口):Status: STANDBY
完成!
关于Spark+Zookeeper怎么搭建高可用Spark集群就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。