對於spark前來圍觀的小夥伴應該都有所瞭解,也是現在比較流行的計算框架,基本上是有點規模的公司標配,所以如果有時間也可以補一下短板。
簡單來說Spark作為準實時大資料計算引擎,Spark的執行需要依賴資源排程和任務管理,Spark自帶了standalone模式資源排程和任務管理工具,執行在其他資源管理和任務排程平臺上,如Yarn、Mesos、Kubernates容器等。
spark的搭建和Hadoop差不多,稍微簡單點,本文針對下面幾種部署方式進行詳細描述:
-
Local:多用於本地測試,如在eclipse,idea中寫程式測試等。
-
Standalone:Standalone是Spark自帶的一個資源排程框架,它支援完全分散式。
-
Yarn:Hadoop生態圈裡面的一個資源排程框架,Spark也是可以基於Yarn來計算的。
瞭解一個框架最直接的方式首先要拿來玩玩,玩之前要先搭建,廢話少說,進入正題,搭建spark叢集。
一、環境準備
搭建環境:CentOS7+jdk8+Hadoop2.10.1+Spark3.0.1
- 機器準備,由於已經搭建過Hadoop,spark叢集也是使用相同叢集(個人電腦資源有限),可以參照Hadoop搭建部落格:centos7中搭建hadoop2.10高可用叢集
- 需要安裝jdk1.8、Scala2.12.12、hadoop2.10.1、spark3.0.1,其中jdk1.8和Hadoop2.10也都已經安裝完成,這裡只介紹Scala和spark環境配置
- 機器免密登入,也在Hadoop部署時做過,可以參照Hadoop搭建部落格:centos7中搭建hadoop2.10高可用叢集
- 下載Scala2.12.12(https://www.scala-lang.org/download/2.12.12.html)、下載spark3.0.1(http://spark.apache.org/downloads.html)
二、配置環境變數
1.配置Scala環境
tar -zxvf scala-2.12.12.tgz -C /opt/soft/ cd /opt/soft ln -s scala-2.12.12 scala
vim /etc/profile
新增環境變數
#SCALA
export SCALA_HOME=/opt/soft/scala
export PATH=$PATH:$SCALA_HOME/bin
source /etc/profile
測試是否正常
正常
2.配置spark環境變數
由於各個部署方式都需要該步驟,在此單獨配置,各個部署方式不再配置
tar -zxvf spark-3.0.1-bin-hadoop2.7.tgz -C /opt/soft cd /opt/soft ln -s spark-3.0.1-bin-hadoop2.7 spark
vim /etc/profile
新增環境變數
#spark
export SPARK_HOME=/opt/soft/spark
export PATH=$PATH:$SPARK_HOME/bin
source /etc/profile
三、搭建步驟
1.本地Local模式
上述已經解壓配置好spark環境變數,本地模式不需要配置其他配置檔案,可以直接使用,很簡單吧,先測試一下執行樣例:
cd /opt/soft/spark/binrun-example SparkPi 10
可以計算出結果
測試spark-shell
spark-shell
啟動成功,說明Local模式部署成功
2.Standalone模式
1>修改Spark的配置檔案spark-env.sh
cd /opt/soft/spark/conf cp spark-env.sh.template spark-env.sh vim spark-env.sh
新增如下配置:
# 主節點機器名稱 export SPARK_MASTER_HOST=s141 # 預設埠號為7077 export SPARK_MASTER_PORT=7077
2>修改配置檔案slaves(從節點配置)
cd /opt/soft/spark/conf
cp slaves.template slaves
vim slaves
刪除原有節點,新增從節點主機如下配置:
s142
s143
s144
s145
3>將spark目錄傳送到其他機器,可以使用scp一個一個機器複製,這裡使用的是自己寫的批量複製指令碼xrsync.sh(hadoop批量命令指令碼xrsync.sh傳輸指令碼)
xrsync.sh spark-3.0.1-bin-hadoop2.7
4>在各個機器中建立spark軟連線,可以進入各個機器的/opt/soft目錄
ln -s /opt/soft/spark-3.0.1-bin-hadoop2.7 /opt/soft/spark
這裡使用的是批量執行命令指令碼xcall.sh(hadoop批量命令指令碼xcall.sh及jps找不到命令解決)
xcall.sh ln -s /opt/soft/spark-3.0.1-bin-hadoop2.7 /opt/soft/spark
5>啟動spark叢集
cd /opt/soft/spark/sbin 可以單獨啟動master和slave ./start-master.sh ./start-slaves.sh spark://s141:7077 也可以一鍵啟動master和slave ./start-all.sh
可以看到master和worker程式已經啟動成功
6>檢視叢集資源頁面(webUI:http://192.168.30.141:8080/),如果8080埠查不到可以看一下master啟動日誌,可能是8081埠
7>進入叢集shell驗證
cd /opt/soft/spark/bin
./spark-shell –master spark://s141:7077
也是正常的,說明Standalone模式部署成功
3.yarn叢集模式
1>修改配置檔案spark-env.sh
在Standalone模式下搭建yarn叢集模式很簡單,只需要在spark-env.sh
配置檔案加入如下內容即可。
# 新增hadoop的配置目錄
export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
將spark-env.sh分發到各個機器
4>啟動spark叢集
先啟動Hadoop的yarn叢集
start-yarn.sh
再啟動spark叢集,和Standalone模式一樣有兩種方式
cd /opt/soft/spark/sbin 可以單獨啟動master和slave ./start-master.sh ./start-slaves.sh spark://s141:7077 也可以一鍵啟動master和slave ./start-all.sh
檢視master和worker程式正常
5>檢視叢集資源頁面(webUI:http://192.168.30.141:8080/),如果8080埠查不到可以看一下master啟動日誌,可能是8081埠
6>進入叢集shell驗證
cd /opt/soft/spark/bin
./spark-shell –master yarn
啟動也正常