天天看點

Spark 環境部署

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

    ---&gt; 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 &amp;</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 &amp;</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 &amp;</code>

        ---- 啟動

<code>start-all.sh</code>

==&gt; Spark HA 的實作

            Spark HA 有兩種實作方式:

    ---&gt; 基于檔案系統的單點故障恢複:隻有一個主節點、隻能用于開發測試

        ---- 特點:把 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  

                =&gt; 此參數預設值為:None ,

                =&gt; 基于檔案系統的單點故障修複: FILESYSTEM

                =&gt; 基于 Zookeeper 實作 Standby 的 Master:  ZOOKEEPER

            --- spark.deploy.recoveryDirectory  指定恢複目錄

        ---- 測試:bin/spark-shell --master spark://bigdata1:7077

    ---&gt; 基于 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