==> Spark 集羣體系結構
java
--->
python
==> Spark安裝與部署 shell
Spark 的安裝部署有四種模式:Standalone, YARN, Mesos, Amazon EC2, 這裏主要講解Standalone 方式
apache
---> 環境部署準備工做:(此處不做詳細講解)vim
---- 四臺 Linux 主機(虛擬機)架構
---- 修改主機名app
---- 免密碼登錄ide
---- 安裝 JDK 環境oop
---> Spark Standalone 僞分佈的部署測試
wget tar zxf spark-2.2.1-bin-hadoop2.7.tgz -C /app cd /app/spark-2.2.1-bin-hadoop2.7/conf cp spark-env.sh.template spark-env.sh cp slaves.template slaves ----------------------------------------------------------------------------------- vim spark-env.sh export JAVA_HOME=/app/java/jdk1.8.0_102 export SPARK_MASTER_HOST=bigdata0 export SPARK_MASTER_PORT=7077 ----------------------------------------------------------------------------------- vim slaves bigdata0
---> Spark Standalone 全分佈的部署
---- 環境架構:
Master | bigdata1 | ||
Worker | bigdata2 | bigdata3 | bigdata4 |
---- 主節點部署:
wget http://mirrors.hust.edu.cn/apache/spark/spark-2.2.1/spark-2.2.1-bin-hadoop2.7.tgz tar zxf spark-2.2.1-bin-hadoop2.7.tgz -C /app cd /app/spark-2.2.1-bin-hadoop2.7/conf cp spark-env.sh.template spark-env.sh cp slaves.template slaves ----------------------------------------------------------------------------------- vim spark-env.sh export JAVA_HOME=/app/java/jdk1.8.0_102 export SPARK_MASTER_HOST=bigdata0 export SPARK_MASTER_PORT=7077 ----------------------------------------------------------------------------------- vim slaves bigdata2 bigdata3 bigdata4
---- 將主節點的安裝目錄 cp 到其它從節點上便可
scp -r spark-2.2.1-bin-hadoop2.7/ bigdata2:/app & scp -r spark-2.2.1-bin-hadoop2.7/ bigdata3:/app & scp -r spark-2.2.1-bin-hadoop2.7/ bigdata4:/app &
---- 啓動
start-all.sh
==> Spark HA 的實現
Spark HA 有兩種實現方式:
---> 基於文件系統的單點故障恢復:只有一個主節點、只能用於開發測試
---- 特色:把 Spark 的運行信息入到一個本地的恢復目錄,若是Master死掉,恢復 master 的時候從恢復目錄上讀取以前的信息
---- 配置:在 standalone 的基礎上修改 spark-env.sh 文件,文件內容爲:
vim spark-env.sh export JAVA_HOME=/app/java/jdk1.8.0_102 export SPARK_MASTER_HOST=bigdata0 export SPARK_MASTER_PORT=7077 export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/data/spark_recovery"
---- 參數講解:
--- spark.deploy.recoveryMode
=> 此參數默認值爲:None ,
=> 基於文件系統的單點故障修復: FILESYSTEM
=> 基於 Zookeeper 實現 Standby 的 Master: ZOOKEEPER
--- spark.deploy.recoveryDirectory 指定恢復目錄
---- 測試:bin/spark-shell --master spark://bigdata1:7077
---> 基於 ZooKeeper 實現 Standby 的 Master
---- 特色:
Zookeeper 提供了一個 Leader Election 機制,利用這個機制能夠保證雖然集羣存在多個 Master, 可是隻有一個是Active 的,其餘的都是 Standby , 當 Active 的 Master 出現故障時,另外的一個 Standby Master 會被選舉出來。 因爲集羣的信息包括 Worker, Driver 和 Application 的信息都已經持久化到 Zookeeper , 所以在切換的過程當中只會影響新的 Job 的提交 , 對於正在進行 Job 沒有任何的影響 |
---- 配置:在 standalone 的基礎上修改 spark-env.sh 文件,文件內空爲:
vim spark-env.sh export JAVA_HOME=/app/java/jdk1.8.0_102 export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=bigdata2:2181,bigdata3:2181,bigdata4:2181 -Dspark.deploy.zookeeper.dir=/spark"
---- 測試:
bigdata1: sbin/start-all.sh bigdata2: sbin/start-master.sh