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

Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎;现在形成一个高速发展应用广泛的生态系统。

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

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

Spark standalone模式分布式部署

faef6ac474297266b66e0dd81b578fdc.png

环境介绍

主机名 应用

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版本(与已有环境匹配,如果不匹配则选非预编译的版本自己编译)。

50398bc70faa007a7fad6a9dcfa641da.png

解压到安装目录即可。

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

17e569adce48e05813bfe95de72e6b80.png

backup(8080端口):Status: STANDBY

9ddad771431a79573f5f65150bad42dc.png

完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值