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
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集羣
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