Spark的Standalone模式部署

1:Spark Standalone Mode安裝html

A:部署包生成shell

首先,下載並解壓縮Spark的源碼,切換到解壓縮所生成的目錄,運行部署包生成程序make-distribution.sh:apache

./make-distribution.sh --hadoop 2.2.0 --with-yarn --tgz

spark源碼根目錄下的make-distribution.sh能夠帶如下參數:瀏覽器

--tgz:在根目錄下生成 spark-$VERSION-bin.tar.gz,不加參數是不生成tgz文件,只生成/dist目錄。網絡

--hadoop VERSION:打包時所用的Hadoop版本號,不加參數時爲1.0.4。併發

--with-yarn:是否支持Hadoop YARN,不加參數時爲不支持yarn。app

--with-tachyon:是否支持內存文件系統Tachyon,不加參數時爲不支持,此參數spark1.0以後提供。oop

運行成功後,在根目錄下生成相似spark-0.9.0-incubating-hadoop_2.2.0-bin.tar.gz的部署包,不過該部署包只帶有最基本的Spark運行文件,不包含例程和源代碼。若是須要例程和源代碼,請使用官方提供的二進制部署包。測試

筆者在百度雲盤上提供了spark0.90、spark0.91和spark1.0-SNAPHOT的部署包,其中spark1.0-SNAPHOT還提供了支持Tachyon的部署包。spa

B:規劃

虛擬機hadoop1(IP地址爲192.168.100.171)做爲Master

虛擬機hadoop2(IP地址爲192.168.100.172)、hadoop3(IP地址爲192.168.100.173)、 hadoop4(IP地址爲192.168.100.174)、hadoop5(IP地址爲192.168.100.175)做爲slave

因爲hadoop一、hadoop二、hadoop三、hadoop四、hadoop5以前已經安裝了hadoop2.2.0集羣,因此省卻了安裝 JAVA、創建SSH無密碼登陸過程。固然,spark集羣能夠獨立於hadoop集羣外安裝,不過須要安裝JAVA、創建SSH無密碼登陸,具體過程可 以參照hadoop2.2.0測試環境搭建

C:在Master上生成安裝目錄

將生成的spark-0.9.0-incubating-hadoop_2.2.0-bin.tar.gz文件複製到Master(即hadoop1)上並解壓

[root@hadoop1 hadoop]# tar zxf spark-0.9.0-incubating-hadoop_2.2.0-bin.tar.gz

[root@hadoop1 hadoop]# mv spark-0.9.0-incubating spark090

[root@hadoop1 hadoop]# cd spark090

[root@hadoop1 spark090]# ls -lsa

Spark的Standalone 模式部署 - mmicky - mmicky 的博客

D:配置集羣文件

[root@hadoop1 spark090]# vi conf/slaves

[root@hadoop1 spark090]# cat conf/slaves 

hadoop2
hadoop3
hadoop4
hadoop5

[root@hadoop1 spark090]# vi conf/spark-env.sh

[root@hadoop1 spark090]# cat conf/spark-env.sh

export SPARK_MASTER_IP=hadoop1
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=1g
export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}

E:派發安裝文件到slaves

[root@hadoop1 spark090]# cd ..

[root@hadoop1 hadoop]# chown -R hadoop:hadoop spark090

[root@hadoop1 hadoop]# su - hadoop

[hadoop@hadoop1 ~]$ cd /app/hadoop/

[hadoop@hadoop1 hadoop]$ scp -r spark090 hadoop2:/app/hadoop/

[hadoop@hadoop1 hadoop]$ scp -r spark090 hadoop3:/app/hadoop/

[hadoop@hadoop1 hadoop]$ scp -r spark090 hadoop4:/app/hadoop/

[hadoop@hadoop1 hadoop]$ scp -r spark090 hadoop5:/app/hadoop/

F:啓動集羣

[hadoop@hadoop1 hadoop]$ cd spark090

[hadoop@hadoop1 spark090]$ sbin/start-all.sh

經過瀏覽器訪問http://hadoop1:8080能夠監控spark Standalone集羣

Spark的Standalone 模式部署 - mmicky - mmicky 的博客

2:關於spark-shell鏈接到spark Standalone集羣

若是要啓動spark-shell鏈接到spark Standalone集羣,有兩種方法:

a:使用MASTER=spark://hadoop1:7077 bin/spark-shell啓動

b:配置在conf/spark-env.sh增長如下幾行:

export SPARK_MASTER_IP=192.168.1.171

export SPARK_MASTER_PORT=7077

export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}

而後使用使用./spark-shell啓動

若是是遠程客戶端來鏈接到spark Standalone集羣的話,部署目錄要和集羣的部署目錄一致。

3:關於Spark Standalone Mode的運行

A:資源調度

Spark Standalone Cluster目前只支持FIFO方式調度,不過,容許多個併發用戶,經過控制每一個應用程序可得到的最大資源數。默認狀況下,一次只運行一個應用程序,應 用程序使用集羣中的全部內核,不過能夠經過System.setProperty(「spark.cores.max」,「10」)設置使用的內核數,這 個值必須在初始化SparkContext以前設置。 

B:監控和日誌

Spark Standalone Cluster能夠經過Web UI來監控集羣,Master和每一個Worker都有各自的Web UI顯示統計數據。

Spark運行的job明細在$SPARK_HOME/work(由參數SPARK_WORKER_DIR設定)。當一個job提交後,spark 會分發給worker,在每一個節點的$SPARK_HOME/work/jodID/executorID創建stdout和stderr目錄做爲job 日誌輸出。

C:和Hadoop並用

Spark能夠做爲獨立的服務,在已有的Hadoop集羣設備上並行,並經過hdfs://URL存取Hadoop數據。固然,Spark也能夠建 成一個獨立的集羣,經過網絡存取Hadoop數據,只不過會比本地硬盤存取速度要慢,對於處於本地網絡的兩個集羣,這不是問題。

D:高可用

Spark存在單點故障的問題,要解決這個問題,有兩個方案:經過 Zookeeper待機Master和本地文件系統的單點恢復,具體參考http://spark.incubator.apache.org/docs/latest/spark-standalone.html

4:測試

因爲缺乏例子,因此使用官方提供的二進制安裝包從新部署了一下,並啓動。

./run-example org.apache.spark.examples.SparkKMeans spark://hadoop1:7077 ./kmeans_data.txt 2 1

也能夠直接在spark shell裏調試程序。

轉自:http://database.51cto.com/art/201404/435674.htm

相關文章
相關標籤/搜索