1. 程式人生 > 實用技巧 >spark2.2 + jdk1.8 + centos7叢集安裝教程(單個Master,不依賴hadoop安裝)

spark2.2 + jdk1.8 + centos7叢集安裝教程(單個Master,不依賴hadoop安裝)

1.準備環境

安裝centos7,在此我準備了五個虛擬機器,分別命名為L1,L2,L3,L4,L5.計劃在L1上面執行Master節點,在L3,L4,L5上面執行Worker節點。
網路配置以及ssh免密登陸配置不再詳細講解,請參考我的另外一篇部落格:
虛擬機器網路配置以及準備工作:
https://blog.csdn.net/weixin_43866709/article/details/87977822

SSH免密登入配置:
https://blog.csdn.net/weixin_43866709/article/details/87982019

2.安裝JDK1.8

在此有必要說明一下,spark叢集,包括hadoop叢集和JDK是有不同的版本對應的,這個具體版本對應可以參考官網,我用的是spark2.2.3-bin-hadoop,它所支援的JDK版本是1.8,所以要安裝JDK1.8.

先去官網下載JDK1.8的tar包,下載連結為:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下載完成之後上傳至虛擬機器,解壓至任意目錄,為了方便管理,我把大資料要用的軟體全部安裝在/home/hadoop/app/下。
解壓命令為:

tar -zxvf 包存放目錄 -C 解壓的目錄(/home/hadoop/app)
  • 1

解壓完成後,配置環境變數,環境變數可以在/etc/profile中配置,也可以在~/.bashrc中配置,具體區別請參考:https://blog.csdn.net/weixin_43866709/article/details/88014346


此處我在~/.bashrc中配置,開啟該配置檔案,在檔案末尾新增如下內容:

sudo vim ~/.bashrc
  • 1
export JAVA_HOME=jdk安裝路徑
export PATH=$PATH:$JAVA_HOME/bin
  • 1
  • 2

新增完儲存退出後,執行source ~/.bashrc使配置檔案生效。(如果在/etc/profile中配置,生效的命令為. /etc/profile

設定完成後檢視是否成功:

java -version
  • 1

如果出現java 版本資訊即為成功。

3.下載spark安裝包

下載地址:http://spark.apache.org/downloads.html



下載完成後上傳安裝包,然後解壓(同JDK操作)
修改配置檔案:
1.解壓完成後,進入到conf目錄下面,先修改兩個檔名,分別是spark-env.sh,template和slaves.template,修改為spark-env.sh和slaves

2.然後開啟spark-env.sh
在檔案末尾新增:

export JAVA_HOME=/home/hadoop/app/jdk1.8.0_201     //Java安裝目錄
export SPARK_MASTER_HOST=192.168.xx.xxx   //Master節點IP(或者主機名,用主機名的話需要在虛擬機器中新增主機和IP地址的對映)
export SPARK_MASTER_PORT=7077             //Master節點的埠(RPC通訊埠),預設為7077
  • 1
  • 2
  • 3


3.再開啟slaves檔案,在檔案末尾新增:

L3
L4              //slaves檔案是spark叢集確定Worker節點的配置檔案,所以裡面新增的是Worker節點
L5                              的IP
  • 1
  • 2
  • 3

4.修改~/.bashrc檔案,新增spark環境變數

export SPARK_HOME=/home/hadoop/app/spark-2.2.3-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
//此處應注意PATH要放在SPARK_HOME後面
//此處$SPARK_HOME/sbin不建議新增到配置檔案中,因為如果安裝的還有Hadoop的話,當執行sbin/start-all.sh時,不知道啟動的是Hadoop還是spark,所以在新增配置檔案的時候,不建議把應用的sbin目錄新增進來。
  • 1
  • 2
  • 3
  • 4

修改完成後執行source ~/.bashrc

4.將配置好的spark安裝程式拷貝給其他機器

可以編寫一個for迴圈的指令碼快速拷貝,具體請參考:
https://blog.csdn.net/weixin_43866709/article/details/88382027

5.啟動Spark

進入到sbin目錄,裡面存放了很多指令碼檔案
執行start-all.sh啟動spark
啟動後,在虛擬機器L1上執行jps命令可以檢視到有一個Master程序,在虛擬機器L3,L4,L5上同樣執行jps命令,發現有Worker程序,即表示啟動成功。


還可以通過web介面可以檢視管理spark叢集,管理頁面的url為:Master所在機器的埠+8080埠
(8080是進入spark管理頁面的埠,而之前配置檔案中新增的7077是spark叢集Master節點和Worker節點通訊的埠,不要混淆了)

如果無法進入spark叢集的web管理頁面,可能是centos防火牆服務未關閉
執行下面命令關閉防火牆:

systemctl stop firewalld.service          //停止firewall
systemctl disable firewalld.service       //禁止firewall開機啟動
firewall-cmd --state                     //檢視預設防火牆狀態
  • 1
  • 2
  • 3

關閉spark叢集:同樣進入到sbin目錄,執行stop-all.sh

6.安裝過程中可能會遇到的問題

1.啟動spark叢集報錯
報錯型別是:無法找到命令
原因:1.spark-env.sh配置檔案配置錯誤,請仔細檢查是否有誤
2.~/.bashrc檔案中PATH要位於SPARK_HOME後面

報錯型別:
starting org.apache.spark.deploy.worker.Worker, logging to /usr/spark/sbin/…/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-slave1.out

failed to launch org.apache.spark.deploy.worker.Worker

full log in /usr/spark/sbin/…/logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-master.out
原因:spark版本於Java版本不對應,建議刪除已經安裝的JDK,重新選擇對應的JDK版本安裝,但不要忘記修改配置檔案。