1. 程式人生 > >Spark學習之路 (二)Spark2.3 HA集群的分布式安裝

Spark學習之路 (二)Spark2.3 HA集群的分布式安裝

serve html 元數據 不安裝 rec ive cut 再次 apps

一、下載Spark安裝包

1、從官網下載

http://spark.apache.org/downloads.html

技術分享圖片

2、從微軟的鏡像站下載

http://mirrors.hust.edu.cn/apache/

3、從清華的鏡像站下載

https://mirrors.tuna.tsinghua.edu.cn/apache/

二、安裝基礎

1、Java8安裝成功

2、zookeeper安裝成功

3、hadoop2.7.5 HA安裝成功

4、Scala安裝成功(不安裝進程也可以啟動)

三、Spark安裝過程

1、上傳並解壓縮

[hadoop@hadoop1 ~]$ ls
apps     data      exam        inithive.conf  movie     spark
-2.3.0-bin-hadoop2.7.tgz udf.jar cookies data.txt executions json.txt projects student zookeeper.out course emp hive.sql log sougou temp [hadoop@hadoop1 ~]$ tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz -C apps/

2、為安裝包創建一個軟連接

[hadoop@hadoop1 ~]$ cd apps/
[hadoop@hadoop1 apps]$ ls hadoop-2.7.5 hbase-1.2.6 spark-2.3.0-bin-hadoop2.7 zookeeper-3.4.10 zookeeper.out [hadoop@hadoop1 apps]$ ln -s spark-2.3.0-bin-hadoop2.7/ spark [hadoop@hadoop1 apps]$ ll 總用量 36 drwxr-xr-x. 10 hadoop hadoop 4096 3月 23 20:29 hadoop-2.7.5 drwxrwxr-x. 7 hadoop hadoop 4096
3月 29 13:15 hbase-1.2.6 lrwxrwxrwx. 1 hadoop hadoop 26 4月 20 13:48 spark -> spark-2.3.0-bin-hadoop2.7/ drwxr-xr-x. 13 hadoop hadoop 4096 2月 23 03:42 spark-2.3.0-bin-hadoop2.7 drwxr-xr-x. 10 hadoop hadoop 4096 3月 23 2017 zookeeper-3.4.10 -rw-rw-r--. 1 hadoop hadoop 17559 3月 29 13:37 zookeeper.out [hadoop@hadoop1 apps]$

3、進入spark/conf修改配置文件

(1)進入配置文件所在目錄

[hadoop@hadoop1 ~]$ cd apps/spark/conf/
[hadoop@hadoop1 conf]$ ll
總用量 36
-rw-r--r--. 1 hadoop hadoop  996 2月  23 03:42 docker.properties.template
-rw-r--r--. 1 hadoop hadoop 1105 2月  23 03:42 fairscheduler.xml.template
-rw-r--r--. 1 hadoop hadoop 2025 2月  23 03:42 log4j.properties.template
-rw-r--r--. 1 hadoop hadoop 7801 2月  23 03:42 metrics.properties.template
-rw-r--r--. 1 hadoop hadoop  865 2月  23 03:42 slaves.template
-rw-r--r--. 1 hadoop hadoop 1292 2月  23 03:42 spark-defaults.conf.template
-rwxr-xr-x. 1 hadoop hadoop 4221 2月  23 03:42 spark-env.sh.template
[hadoop@hadoop1 conf]$ 

(2)復制spark-env.sh.template並重命名為spark-env.sh,並在文件最後添加配置內容

[hadoop@hadoop1 conf]$ cp spark-env.sh.template spark-env.sh
[hadoop@hadoop1 conf]$ vi spark-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_73
#export SCALA_HOME=/usr/share/scala
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.5
export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-2.7.5/etc/hadoop
export SPARK_LOCAL_IP=192.168.123.102
export SPARK_WORKER_MEMORY=500m
export SPARK_WORKER_CORES=1
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop1:2181,hadoop2:2181,hadoop3:2181,hadoop4:2181 -Dspark.deploy.zookeeper.dir=/spark"

註:

#export SPARK_MASTER_IP=hadoop1 這個配置要註釋掉。
集群搭建時配置的spark參數可能和現在的不一樣,主要是考慮個人電腦配置問題,如果memory配置太大,機器運行很慢。
說明:
-Dspark.deploy.recoveryMode=ZOOKEEPER #說明整個集群狀態是通過zookeeper來維護的,整個集群狀態的恢復也是通過zookeeper來維護的。就是說用zookeeper做了spark的HA配置,Master(Active)掛掉的話,Master(standby)要想變成Master(Active)的話,Master(Standby)就要像zookeeper讀取整個集群狀態信息,然後進行恢復所有Worker和Driver的狀態信息,和所有的Application狀態信息;
-Dspark.deploy.zookeeper.url=hadoop1:2181,hadoop2:2181,hadoop3:2181,hadoop4:2181#將所有配置了zookeeper,並且在這臺機器上有可能做master(Active)的機器都配置進來;(我用了4臺,就配置了4臺)

-Dspark.deploy.zookeeper.dir=/spark
這裏的dir和zookeeper配置文件zoo.cfg中的dataDir的區別???
-Dspark.deploy.zookeeper.dir是保存spark的元數據,保存了spark的作業運行狀態;
zookeeper會保存spark集群的所有的狀態信息,包括所有的Workers信息,所有的Applactions信息,所有的Driver信息,如果集群

(3)復制slaves.template成slaves

[hadoop@hadoop1 conf]$ cp slaves.template slaves
[hadoop@hadoop1 conf]$ vi slaves

添加如下內容

hadoop1
hadoop2
hadoop3
hadoop4

(4)將安裝包分發給其他節點

[hadoop@hadoop1 ~]$ cd apps/
[hadoop@hadoop1 apps]$ scp -r spark-2.3.0-bin-hadoop2.7/ hadoop2:$PWD
[hadoop@hadoop1 apps]$ scp -r spark-2.3.0-bin-hadoop2.7/ hadoop3:$PWD
[hadoop@hadoop1 apps]$ scp -r spark-2.3.0-bin-hadoop2.7/ hadoop4:$PWD

創建軟連接

[hadoop@hadoop2 ~]$ cd apps/
[hadoop@hadoop2 apps]$ ls
hadoop-2.7.5  hbase-1.2.6  spark-2.3.0-bin-hadoop2.7  zookeeper-3.4.10
[hadoop@hadoop2 apps]$ ln -s spark-2.3.0-bin-hadoop2.7/ spark
[hadoop@hadoop2 apps]$ ll
總用量 16
drwxr-xr-x 10 hadoop hadoop 4096 3月  23 20:29 hadoop-2.7.5
drwxrwxr-x  7 hadoop hadoop 4096 3月  29 13:15 hbase-1.2.6
lrwxrwxrwx  1 hadoop hadoop   26 4月  20 19:26 spark -> spark-2.3.0-bin-hadoop2.7/
drwxr-xr-x 13 hadoop hadoop 4096 4月  20 19:24 spark-2.3.0-bin-hadoop2.7
drwxr-xr-x 10 hadoop hadoop 4096 3月  21 19:31 zookeeper-3.4.10
[hadoop@hadoop2 apps]$ 

4、配置環境變量

所有節點均要配置

[hadoop@hadoop1 spark]$ vi ~/.bashrc 
#Spark
export SPARK_HOME=/home/hadoop/apps/spark
export PATH=$PATH:$SPARK_HOME/bin

保存並使其立即生效

[hadoop@hadoop1 spark]$ source ~/.bashrc 

四、啟動

1、先啟動zookeeper集群

所有節點均要執行

[hadoop@hadoop1 ~]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@hadoop1 ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
[hadoop@hadoop1 ~]$ 

2、在啟動HDFS集群

任意一個節點執行即可

[hadoop@hadoop1 ~]$ start-dfs.sh

3、在啟動Spark集群

在一個節點上執行

[hadoop@hadoop1 ~]$ cd apps/spark/sbin/
[hadoop@hadoop1 sbin]$ start-all.sh

4、查看進程

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

5、問題

查看進程發現spark集群只有hadoop1成功啟動了Master進程,其他3個節點均沒有啟動成功,需要手動啟動,進入到/home/hadoop/apps/spark/sbin目錄下執行以下命令,3個節點都要執行

[hadoop@hadoop2 ~]$ cd ~/apps/spark/sbin/
[hadoop@hadoop2 sbin]$ start-master.sh 

6、執行之後再次查看進程

Master進程和Worker進程都以啟動成功

技術分享圖片

技術分享圖片

技術分享圖片

五、驗證

1、查看Web界面Master狀態

hadoop1是ALIVE狀態,hadoop2、hadoop3和hadoop4均是STANDBY狀態

hadoop1節點

技術分享圖片

hadoop2節點

技術分享圖片

hadoop3

技術分享圖片

hadoop4

技術分享圖片

2、驗證HA的高可用

手動幹掉hadoop1上面的Master進程,觀察是否會自動進行切換

技術分享圖片

幹掉hadoop1上的Master進程之後,再次查看web界面

hadoo1節點,由於Master進程被幹掉,所以界面無法訪問

技術分享圖片

hadoop2節點,Master被幹掉之後,hadoop2節點上的Master成功篡位成功,成為ALIVE狀態

技術分享圖片

hadoop3節點

技術分享圖片

hadoop4節點

技術分享圖片

Spark學習之路 (二)Spark2.3 HA集群的分布式安裝