==> Spark 叢集體系結構
--->
==> Spark安裝與部署
Spark 的安裝部署有四種模式:Standalone, YARN, Mesos, Amazon EC2, 這裡主要講解Standalone 方式
---> 環境部署準備工作:(此處不作詳細講解)
---- 四台 Linux 主機(虛拟機)
---- 修改主機名
---- 免密碼登陸
---- 安裝 JDK 環境
---> Spark Standalone 僞分布的部署
<code>wget </code>
<code>tar zxf spark</code><code>-</code><code>2.2</code><code>.</code><code>1</code><code>-</code><code>bin</code><code>-</code><code>hadoop2.</code><code>7.tgz</code> <code>-</code><code>C </code><code>/</code><code>app</code>
<code>cd </code><code>/</code><code>app</code><code>/</code><code>spark</code><code>-</code><code>2.2</code><code>.</code><code>1</code><code>-</code><code>bin</code><code>-</code><code>hadoop2.</code><code>7</code><code>/</code><code>conf</code>
<code>cp spark</code><code>-</code><code>env.sh.template spark</code><code>-</code><code>env.sh</code>
<code>cp slaves.template slaves</code>
<code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code>
<code>vim spark</code><code>-</code><code>env.sh</code>
<code> </code><code>export JAVA_HOME</code><code>=</code><code>/</code><code>app</code><code>/</code><code>java</code><code>/</code><code>jdk1.</code><code>8.0_102</code>
<code> </code><code>export SPARK_MASTER_HOST</code><code>=</code><code>bigdata0</code>
<code> </code><code>export SPARK_MASTER_PORT</code><code>=</code><code>7077</code>
<code>vim slaves</code>
<code> </code><code>bigdata0</code>
---> Spark Standalone 全分布的部署
---- 環境架構:
Master
bigdata1
Worker
bigdata2
bigdata3
bigdata4
---- 主節點部署:
<code>wget http</code><code>:</code><code>//mirrors.hust.edu.cn/apache/spark/spark-2.2.1/spark-2.2.1-bin-hadoop2.7.tgz </code>
<code>tar zxf spark-</code><code>2.2</code><code>.</code><code>1</code><code>-bin-hadoop</code><code>2.7</code><code>.tgz -C /app</code>
<code>cd /app/spark-</code><code>2.2</code><code>.</code><code>1</code><code>-bin-hadoop</code><code>2.7</code><code>/conf</code>
<code>cp spark-env.sh.template spark-env.sh</code>
<code>-----------------------------------------------------------------------------------</code>
<code>vim spark-env.sh</code>
<code> </code><code>export JAVA</code><code>_</code><code>HOME</code><code>=</code><code>/app/java/jdk</code><code>1.8</code><code>.</code><code>0</code><code>_</code><code>102</code>
<code> </code><code>export SPARK</code><code>_</code><code>MASTER</code><code>_</code><code>HOST</code><code>=</code><code>bigdata</code><code>0</code>
<code> </code><code>export SPARK</code><code>_</code><code>MASTER</code><code>_</code><code>PORT</code><code>=</code><code>7077</code>
<code> </code><code>bigdata</code><code>2</code>
<code> </code><code>bigdata</code><code>3</code>
<code> </code><code>bigdata</code><code>4</code>
---- 将主節點的安裝目錄 cp 到其它從節點上即可
<code>scp -r spark-</code><code>2.2</code><code>.</code><code>1</code><code>-bin-hadoop</code><code>2.7</code><code>/ bigdata</code><code>2</code><code>:</code><code>/app &</code>
<code>scp -r spark-</code><code>2.2</code><code>.</code><code>1</code><code>-bin-hadoop</code><code>2.7</code><code>/ bigdata</code><code>3</code><code>:</code><code>/app &</code>
<code>scp -r spark-</code><code>2.2</code><code>.</code><code>1</code><code>-bin-hadoop</code><code>2.7</code><code>/ bigdata</code><code>4</code><code>:</code><code>/app &</code>
---- 啟動
<code>start-all.sh</code>
==> Spark HA 的實作
Spark HA 有兩種實作方式:
---> 基于檔案系統的單點故障恢複:隻有一個主節點、隻能用于開發測試
---- 特點:把 Spark 的運作資訊入到一個本地的恢複目錄,如果Master死掉,恢複 master 的時候從恢複目錄上讀取之前的資訊
---- 配置:在 standalone 的基礎上修改 spark-env.sh 檔案,檔案内容為:
<code>vim spark-env.sh</code>
<code> </code><code>export SPARK</code><code>_</code><code>DAEMON</code><code>_</code><code>JAVA</code><code>_</code><code>OPTS</code><code>=</code><code>"-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/data/spark_recovery"</code>
---- 參數講解:
--- 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 檔案,檔案内空為:
<code>vim spark</code><code>-</code><code>env.sh</code>
<code> </code><code>export SPARK_DAEMON_JAVA_OPTS</code><code>=</code><code>"-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=bigdata2:2181,bigdata3:2181,bigdata4:2181 -Dspark.deploy.zookeeper.dir=/spark"</code>
---- 測試:
<code>bigdata</code><code>1</code><code>:</code> <code>sbin/start-all.sh</code>
<code>bigdata</code><code>2</code><code>:</code> <code>sbin/start-master.sh</code>
版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任
本文轉自 菜鳥的征程 51CTO部落格,原文連結:http://blog.51cto.com/songqinglong/2073058