今天分享一篇從0到1搭建Spark叢集的步驟,企業中大家亦可以參照次叢集搭建自己的Spark叢集。
一。下載Spark安裝包
可以從官網下載,本叢集選擇的版本是spark-1.6.0-bin-hadoop2.6
在官網中找到對應的連結即可http://spark.apache.org/downloads.html
或者用本人云盤下載地址 附上鍊接如下連結:https://pan.baidu.com/s/1o7Vrkue 密碼:sc2z
二。部署和規劃Spark叢集
提前準備好四臺虛擬主機,三臺主機 node1 node2 node4 做Spark叢集 develop做Spark客戶端用於提交程式
叢集規劃如下:
node1 Master節點 node2,node4 Worker節點 架構圖如下:
在此之前需要配置Master節點到Worker的免密登陸因為在Master節點需要啟動所有的Worker節點,所有需要配置Master到Worker的免密登陸 只需要這一個免密配置即可 不需要配置woker--worker worker-master節點的免密 因為主要是在Master節點上啟動叢集
免密設定具體參考如下:http://blog.csdn.net/leexide/article/details/17252369
1.分別在三臺叢集下建立同名目錄 (目錄一定要一致,方便叢集部署)
本叢集環境建立為/root/spark目錄
2.使用Xshell將檔案上傳至其中某個節點即可(沒有必要上傳全部節點,因為後期還要重新配置)
上傳至某個節點之後,假設上傳到主節點Master節點後
3.解壓目錄,命令和結構如下
tar -zxf spark-1.6.0-bin-hadoop2.6.tar
然後重新命名 方便後期部署
mv spark-1.6.0-bin-hadoop2.6 spark-1.6.0
結構如下:
4.配置引數
進入到配置目錄,路徑為
/root/spark/spark-1.6.0/conf
後可看見檔案如下
我們需要把template關鍵字去掉 因為是個模板檔案 簡單介紹下檔案作用:
slaves檔案---worker幾點所在目錄
spark-default.conf目錄檔案 預設配置檔案
spark-env.sh環境配置檔案
這幾個是我們主要用的
更改後的目錄檔案格式如下:
配置spark-env.sh
可以看到叢集配置引數如下,我們主要配置這些引數
配置完後的截圖如下:
解釋一下引數意義:
SPARK_MASTER_IP=node1 #主節點主機名
SPARK_MASTER_PORT=7077 #主節點和Worker的通訊埠
SPARK_WORKER_CORES=2 # 每個worker程式能管理兩個核
SPARK_WORKER_MEMORY=2g # 每個worker程式能管理2g記憶體
SPARK_MASTER_WEBUI_PORT=8888 # 主節點WEB-UI展示圖 預設埠是8080
SPARK_WORKER_INSTANCES=1 #每個worker節點能夠啟動的worker程式 預設是一個 如果為2 則每一個worker幾點能夠啟動2個Worker程式 就這意思
根據這配置 則 Master節點能夠管路4core 4g記憶體(有兩個Worker程式 每一個worker程式管理兩個核,2g記憶體)
配置slaves檔案:配置從節點的ip 或主機名
截圖如下
5.將主節點的配置分發到從節點 同名目錄下
命令如下:
回到spark的主目錄配置檔案
然後分發到node2 node4節點 這裡命令如下`pwd`即到當前目錄
6、啟動Spark叢集:
執行安裝包sbin目錄下的start-all.sh指令碼
./sbin/start-all.sh
7.檢視叢集狀態
jps命令為jvm的命令與局之一 專門檢視java程式
Master節點狀態:
Worker節點狀態:
檢視WEBUI是否能訪問:
注意關閉Linux的防火牆:具體操作如下
/etc/init.d/iptables status
會得到一系列資訊,說明防火牆開著。
/etc/init.d/iptables stop
永久關閉:
chkconfig --level 35 iptables off
在本機訪問node1:8888(別忘配置host)
至此,叢集搭建成功!
8.測試叢集是否可用
將主節點中的spark檔案同步到客戶端develop節點
在develop節點中提交spark任務 ,由於本例測試 所以直接提交spark自帶測試用例 計算Pi的值
注意別忘配置Client(develop)客戶端的host 因為要提交任務到Master節點(node1)節點上去執行
即可看見執行狀態
在WebUI也可以看見
到此叢集測試完畢!!!
持續更新中。。。。,歡迎大家關注我的公眾號LHWorld.