1. 程式人生 > >Spark3.0.1各種叢集模式搭建

Spark3.0.1各種叢集模式搭建

對於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

  1. 機器準備,由於已經搭建過Hadoop,spark叢集也是使用相同叢集(個人電腦資源有限),可以參照Hadoop搭建部落格:centos7中搭建hadoop2.10高可用叢集
  2. 需要安裝jdk1.8、Scala2.12.12、hadoop2.10.1、spark3.0.1,其中jdk1.8和Hadoop2.10也都已經安裝完成,這裡只介紹Scala和spark環境配置
  3. 機器免密登入,也在Hadoop部署時做過,可以參照Hadoop搭建部落格:centos7中搭建hadoop2.10高可用叢集
  4. 下載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/bin

run-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

 

啟動也正常 

&n