溫馨提示×

溫馨提示×

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

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

Spark 系列(七)—— 基于 ZooKeeper 搭建 Spark 高可用集群

發(fā)布時間:2020-06-16 21:49:09 來源:網(wǎng)絡(luò) 閱讀:321 作者:heibaiying 欄目:大數(shù)據(jù)

一、集群規(guī)劃

這里搭建一個 3 節(jié)點的 Spark 集群,其中三臺主機上均部署 Worker 服務(wù)。同時為了保證高可用,除了在 hadoop001 上部署主 Master 服務(wù)外,還在 hadoop002 和 hadoop003 上分別部署備用的 Master 服務(wù),Master 服務(wù)由 Zookeeper 集群進行協(xié)調(diào)管理,如果主 Master 不可用,則備用 Master 會成為新的主 Master

Spark 系列(七)—— 基于 ZooKeeper 搭建 Spark 高可用集群

二、前置條件

搭建 Spark 集群前,需要保證 JDK 環(huán)境、Zookeeper 集群和 Hadoop 集群已經(jīng)搭建,相關(guān)步驟可以參閱:

  • Linux 環(huán)境下 JDK 安裝
  • Zookeeper 單機環(huán)境和集群環(huán)境搭建
  • Hadoop 集群環(huán)境搭建

三、Spark集群搭建

3.1 下載解壓

下載所需版本的 Spark,官網(wǎng)下載地址:http://spark.apache.org/downloads.html

Spark 系列(七)—— 基于 ZooKeeper 搭建 Spark 高可用集群

下載后進行解壓:

# tar -zxvf  spark-2.2.3-bin-hadoop2.6.tgz

3.2 配置環(huán)境變量

# vim /etc/profile

添加環(huán)境變量:

export SPARK_HOME=/usr/app/spark-2.2.3-bin-hadoop2.6
export  PATH=${SPARK_HOME}/bin:$PATH

使得配置的環(huán)境變量立即生效:

# source /etc/profile

3.3 集群配置

進入 ${SPARK_HOME}/conf 目錄,拷貝配置樣本進行修改:

1. spark-env.sh
 cp spark-env.sh.template spark-env.sh
# 配置JDK安裝位置
JAVA_HOME=/usr/java/jdk1.8.0_201
# 配置hadoop配置文件的位置
HADOOP_CONF_DIR=/usr/app/hadoop-2.6.0-cdh6.15.2/etc/hadoop
# 配置zookeeper地址
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop001:2181,hadoop002:2181,hadoop003:2181 -Dspark.deploy.zookeeper.dir=/spark"
2. slaves
cp slaves.template slaves

配置所有 Woker 節(jié)點的位置:

hadoop001
hadoop002
hadoop003

3.4 安裝包分發(fā)

將 Spark 的安裝包分發(fā)到其他服務(wù)器,分發(fā)后建議在這兩臺服務(wù)器上也配置一下 Spark 的環(huán)境變量。

scp -r /usr/app/spark-2.4.0-bin-hadoop2.6/   hadoop002:usr/app/
scp -r /usr/app/spark-2.4.0-bin-hadoop2.6/   hadoop003:usr/app/

四、啟動集群

4.1 啟動ZooKeeper集群

分別到三臺服務(wù)器上啟動 ZooKeeper 服務(wù):

 zkServer.sh start

4.2 啟動Hadoop集群

# 啟動dfs服務(wù)
start-dfs.sh
# 啟動yarn服務(wù)
start-yarn.sh

4.3 啟動Spark集群

進入 hadoop001 的 ${SPARK_HOME}/sbin 目錄下,執(zhí)行下面命令啟動集群。執(zhí)行命令后,會在 hadoop001 上啟動 Maser 服務(wù),會在 slaves 配置文件中配置的所有節(jié)點上啟動 Worker 服務(wù)。

start-all.sh

分別在 hadoop002 和 hadoop003 上執(zhí)行下面的命令,啟動備用的 Master 服務(wù):

# ${SPARK_HOME}/sbin 下執(zhí)行
start-master.sh

4.4 查看服務(wù)

查看 Spark 的 Web-UI 頁面,端口為 8080。此時可以看到 hadoop001 上的 Master 節(jié)點處于 ALIVE 狀態(tài),并有 3 個可用的 Worker 節(jié)點。

Spark 系列(七)—— 基于 ZooKeeper 搭建 Spark 高可用集群

而 hadoop002 和 hadoop003 上的 Master 節(jié)點均處于 STANDBY 狀態(tài),沒有可用的 Worker 節(jié)點。

Spark 系列(七)—— 基于 ZooKeeper 搭建 Spark 高可用集群

Spark 系列(七)—— 基于 ZooKeeper 搭建 Spark 高可用集群

五、驗證集群高可用

此時可以使用 kill 命令殺死 hadoop001 上的 Master 進程,此時備用 Master 會中會有一個再次成為 主 Master,我這里是 hadoop002,可以看到 hadoop2 上的 Master 經(jīng)過 RECOVERING 后成為了新的主 Master,并且獲得了全部可以用的 Workers。

Spark 系列(七)—— 基于 ZooKeeper 搭建 Spark 高可用集群

Hadoop002 上的 Master 成為主 Master,并獲得了全部可以用的 Workers。

Spark 系列(七)—— 基于 ZooKeeper 搭建 Spark 高可用集群

此時如果你再在 hadoop001 上使用 start-master.sh 啟動 Master 服務(wù),那么其會作為備用 Master 存在。

六、提交作業(yè)

和單機環(huán)境下的提交到 Yarn 上的命令完全一致,這里以 Spark 內(nèi)置的計算 Pi 的樣例程序為例,提交命令如下:

spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--executor-memory 1G \
--num-executors 10 \
/usr/app/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar \
100

更多大數(shù)據(jù)系列文章可以參見 GitHub 開源項目大數(shù)據(jù)入門指南

向AI問一下細節(jié)

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

AI