Spark(一)-- Standalone HA的部署

首先交代一下集羣的規模和配置
集羣有六臺機器,均是VM虛擬機,每臺256M的內存(原諒樓主物理機硬件不太給力)
主機名分別是cloud1~cloud6
每臺機器上都裝有jdk6,和hadoop-2.2.0
其中cloud4~cloud6上裝有zookeeper
cloud1爲hdfs文件系統的啓動節點
cloud3爲yarn資源管理的啓動節點
(注意每臺機器都配置好SSH免密碼登陸,能夠在下面的hadoop部署連接中查看具體步驟)html

有關hadoop和zookeeper的部署請看:java

hadoop-2.2.0集羣安裝部署shell

zookeeper集羣安裝部署apache

本次實驗目標是在六臺虛擬機上裝上spark,而且將cloud1做爲主節點markdown

首先將下載好的spark和scala包上傳到cloud1上架構

scala下載地址框架

spark下載地址分佈式

注意安裝時儘可能不要使用root用戶(這裏使用cloud自定義用戶)oop

安裝scala:
tar –zxvf scala-2.10.5.tgz
mv scala-2.10.5 scala學習

安裝spark:
tar -zxvf spark-1.3.0-bin-hadoop2.3.tgz
mv spark-1.3.1 spark

配置環境變量:
vi /etc/profile
export SCALA_HOME=/home/cloud/scala
export SPARK_HOME=/home/cloud/spark
export PATH=$$SPARK_HOME/bin:$SCALA_HOME/bin:$PATH

source /etc/profile
使用scala -version查看是否配置成功

進入spark目錄,修改文件slaves
vi conf/slaves
cloud1
cloud2
cloud3
cloud4
cloud5
cloud6

修改spark-env.sh
vi conf/spark-env.sh

export SPARK_MASTER_IP=cloud1
export SPARK_WORKER_MEMORY=128m
export JAVA_HOME=/usr/java/jdk
export SCALA_HOME=/home/cloud/scala
export SPARK_HOME=/home/cloud/spark
export HADOOP_CONF_DIR=/home/cloud/hadoop/etc/hadoop
export SPARK_LIBRARY_PATH=$$SPARK_HOME/lib
export SCALA_LIBRARY_PATH=$SPARK_LIBRARY_PATH
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_PORT=7077

將cloud1上配置好的spark和scala經過scp複製到其餘各個節點上(注意其餘節點上的profile文件也要一致)
scp -r spark cloud2:/home/cloud/
scp -r scala cloud2:/home/cloud/

scp -r spark cloud3:/home/cloud/
scp -r scala cloud3:/home/cloud/

scp -r spark cloud4:/home/cloud/
scp -r scala cloud4:/home/cloud/

scp -r spark cloud5:/home/cloud/
scp -r scala cloud5:/home/cloud/

scp -r spark cloud6:/home/cloud/
scp -r scala cloud6:/home/cloud/

經過
sbin/start-all.sh
啓動spark集羣
http://cloud1:8080能夠監控spark Standalone集羣

若是要啓動spark-shell鏈接到spark Standalone集羣,有兩種方法:
a:使用MASTER=spark://cloud1:7077 bin/spark-shell啓動
b:配置在conf/spark-env.sh增長:
export MASTER=spark://$${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}
而後使用使用./spark-shell啓動

基於文件系統的單點恢復
主要用於開發或測試環境下
當spark提供目錄保存spark Application和worker的註冊信息,並將他們的恢復狀態寫

入該目錄中,這時,一旦Master發生故障,就能夠經過從新啓動Master進程(sbin/start-master.sh),恢復已運行的spark Application和worker的註冊信息。
基於文件系統的單點恢復,主要是在spark-env裏對SPARK_DAEMON_JAVA_OPTS設置:
參數 含義
spark.deploy.recoveryMode:設成FILESYSTEM , 缺省值爲NONE
spark.deploy.recoveryDirectory:Spark 保存恢復狀態的目錄

export SPARK_DAEMON_JAVA_OPTS=」-Dspark.deploy.recoveryMode=FILESYSTEM -
Dspark.deploy.recoveryDirectory=/home/cloud/spark/recovery」

基於zookeeper的Standby Masters
參數 含義
spark.deploy.recoveryMode:設置成ZOOKEEPER,缺省值爲 NONE
spark.deploy.zookeeper.url: ZooKeeper URL(如192.168.100.111:2181,192.168.100.112:2181…)
spark.deploy.zookeeper.dir:ZooKeeper 保存恢復狀態的目錄,缺省爲 /spark

Master能夠在任什麼時候候添加或移除。若是發生故障切換,新的Master將聯繫全部之前註冊的Application和Worker告知Master的改變。

export SPARK_DAEMON_JAVA_OPTS=」-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=cloud4:2181,cloud5:2181,cloud6:2181, -
Dspark.deploy.zookeeper.dir=/home/cloud/spark」

對於初次接觸Spark的一些常見的問題:
1.小的數據量,如G級別,適合在Spark上運行嗎?
大數據和數據大是兩個不一樣的概念,大數據處理強調的是處理的速度,數據量的大小反而不是關鍵。例如,1G的數據要求在0.005秒以內處理完畢

2.Standalone和ON YARN模式有什麼區別?
二者都是部署在多臺節點上的分佈式環境,Standalone從名字上就能夠看出是Spark本身的集羣,而ON YARN模式下,YARN提供了多框架並存的機制,不單單是Spark。而且還提供對多個框架之間是分配和調度資源的管理。

3.運行Spark必定須要Hadoop嗎? 不必定,若是是學習須要,徹底能夠將Spark安裝在local模式下,連HDFS都不須要 可是通常的商業部署架構爲:Hadoop+Yarn+Spark Hadoop的HDFS是大數據處理首選的文件系統,Spark須要歷史數據,而這些數據就在HDFS中 Yarn多框架並存,資源管理保證了集羣的高效和可用性 Spark應對大數據處理的各類場景,一套搞定,one stack to rule them all

相關文章
相關標籤/搜索