溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spark+Zookeeper怎樣搭建高可用Spark集群

發(fā)布時(shí)間:2021-12-13 09:24:44 來源:億速云 閱讀:254 作者:柒染 欄目:大數(shù)據(jù)

Spark+Zookeeper怎樣搭建高可用Spark集群,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

Apache Spark是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎;現(xiàn)在形成一個(gè)高速發(fā)展應(yīng)用廣泛的生態(tài)系統(tǒng)。

Spark三種分布式部署方式比較

目前Apache Spark支持三種分布式部署方式,分別是standalone、spark on mesos和 spark on YARN,詳情參考。

Spark standalone模式分布式部署

Spark+Zookeeper怎樣搭建高可用Spark集群

環(huán)境介紹

主機(jī)名 應(yīng)用
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結(jié)點(diǎn)存在單點(diǎn)故障,所以要借助zookeeper,至少啟動(dòng)兩臺(tái)Master結(jié)點(diǎn)來實(shí)現(xiàn)高可用,配置方案比較簡(jiǎn)單。

安裝scala

由上面的說明可知,spark對(duì)scala版本依賴較為嚴(yán)格,spark-2.4.5依賴scala-2.12.x,所以首先要安裝scala-2.12.x,在此選用scala-2.12.10。使用二進(jìn)制安裝:

$ 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

如果系統(tǒng)環(huán)境也要使用相同版本的scala,可以將其加入到用戶環(huán)境變量(.bashrc或.bash_profile)。

安裝spark

打通三臺(tái)spark機(jī)器的work用戶ssh通道;

現(xiàn)在安裝包到master機(jī)器:tvm13;

注意提示信息,及Hadoop版本(與已有環(huán)境匹配,如果不匹配則選非預(yù)編譯的版本自己編譯)。

Spark+Zookeeper怎樣搭建高可用Spark集群

解壓到安裝目錄即可。

配置spark

spark服務(wù)配置文件主要有兩個(gè):spark-env.sh和slaves。

spark-evn.sh:配置spark運(yùn)行相關(guān)環(huán)境變量

slaves:指定worker服務(wù)器

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

# 關(guān)于 SPARK_DAEMON_JAVA_OPTS 參數(shù)含義:

# -Dspark.deploy.recoverMode=ZOOKEEPER #代表發(fā)生故障使用zookeeper服務(wù)
# -Dspark.depoly.zookeeper.url=master.hadoop,slave1.hadoop,slave1.hadoop #主機(jī)名的名字
# -Dspark.deploy.zookeeper.dir=/spark #spark要在zookeeper上寫數(shù)據(jù)時(shí)的保存目錄

# 其他參數(shù)含義: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執(zhí)行任務(wù)(可以命令行動(dòng)態(tài)指定):

# 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資源準(zhǔn)備

因?yàn)?spark.eventLog.dir 指定為hdfs存儲(chǔ),所以需要在hdfs預(yù)先創(chuàng)建相應(yīng)的目錄文件:

hdfs dfs -mkdir -p hdfs://cluster01/tmp/event/logs

配置系統(tǒng)環(huán)境變量

編輯 ~/.bashrc :

export SPARK_HOME=/data/template/s/spark/spark-2.4.5-bin-hadoop2.7
export PATH=$SPARK_HOME/bin/:$PATH

分發(fā)

以上配置完成后,將 /path/to/spark-2.4.5-bin-hadoop2.7 分發(fā)至各個(gè)slave節(jié)點(diǎn),并配置各個(gè)節(jié)點(diǎn)的環(huán)境變量。

啟動(dòng)

先在master節(jié)點(diǎn)啟動(dòng)所有服務(wù):./sbin/start-all.sh

然后在backup節(jié)點(diǎn)單獨(dú)啟動(dòng)master服務(wù):./sbin/start-master.sh

查看狀態(tài)

啟動(dòng)完成后到web去查看:

master(8081端口):Status: ALIVE

Spark+Zookeeper怎樣搭建高可用Spark集群

backup(8080端口):Status: STANDBY

Spark+Zookeeper怎樣搭建高可用Spark集群

看完上述內(nèi)容,你們掌握Spark+Zookeeper怎樣搭建高可用Spark集群的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI