1.Spark運行模式
Spark 有很多種模式,最簡單就是單機本地模式,還有單機偽分布式模式,復雜的則運行在集群中,目前能很好的運行在 Yarn和 Mesos 中,當然 Spark 還有自帶的 Standalone 模式,對於大多數情況 Standalone 模式就足夠了,如果企業已經有 Yarn 或者 Mesos 環境,也是很方便部署的。
1.local(本地模式):常用於本地開發測試,本地分為local單線程和local-cluster多線程;
2.standalone(集群模式):典型的Mater/slave模式,不過也能看出Master是有單點故障的;Spark支持ZooKeeper來實現 HA
3.on yarn(集群模式): 運行在 yarn 資源管理器框架之上,由 yarn 負責資源管理,Spark 負責任務調度和計算
4.on mesos(集群模式): 運行在 mesos 資源管理器框架之上,由 mesos 負責資源管理,Spark 負責任務調度和計算
5.on cloud(集群模式):比如 AWS 的 EC2,使用這個模式能很方便的訪問 Amazon的 S3;Spark 支持多種分布式存儲系統:HDFS 和 S3
2.Spark on yarn安裝部署
1.安裝 Scala:
(1)版本信息:
hadoop-2.7.3.tar.gz
scala-2.11.8.tgz Spark官方要求 Scala 版本為 2.10.x,注意不要下錯版本,我這里下了2.11.8
spark-2.0.2-bin-hadoop2.7.tgz
jdk1.7
(2)修改/etc/hosts文件,無密連接
(3) 解壓縮(hadoop用戶):
tar -zxvf scala-2.11.8.tgz
(4)修改環境變量sudo vi /etc/profile,添加:
#scala
export SCALA_HOME=/data/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin
(5) 使環境變量生效,並驗證 scala 是否安裝成功
$ source /etc/profile #生效環境變量
$ scala -version #如果打印出如下版本信息,則說明安裝成功
Scala code runner version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL
2.安裝yarn
已安裝
3.安裝spark
(1)解壓:
tar -zxvf spark-2.0.2-bin-hadoop2.7.tgz
(2)配置 Spark:
cd ~/spark/conf #進入spark配置目錄
cp spark-env.sh.template spark-env.sh #從配置模板復制
vi spark-env.sh #添加配置內容
在spark-env.sh末尾添加以下內容(這是我的配置,你可以自行修改):
export SCALA_HOME=/home/spark/workspace/scala-2.10.4
export JAVA_HOME=/home/spark/workspace/jdk1.7.0_75
export HADOOP_HOME=/home/spark/workspace/hadoop-2.6.0
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/home/spark/workspace/spark-1.3.0
SPARK_DRIVER_MEMORY=1G
注:在設置Worker進程的CPU個數和內存大小,要注意機器的實際硬件條件,如果配置的超過當前Worker節點的硬件條件,Worker進程會啟動失敗。
(3)vi slaves在slaves文件下填上slave主機名:
192.168.111.16
192.168.111.17
192.168.111.18
將配置好的spark-1.3.0文件夾分發給所有slaves
scp -r ~/workspace/spark-1.3.0 spark@slave1:~/workspace/
(4)啟動Spark:
sbin/start-all.sh
(5) 驗證 Spark 是否安裝成功:
用jps檢查,在 master 上應該有以下幾個進程:
$ jps
7949 Jps
7328 SecondaryNameNode
7805 Master
7137 NameNode
7475 ResourceManager
在 slave 上應該有以下幾個進程:
$jps
3132 DataNode
3759 Worker
3858 Jps
3231 NodeManager
進入Spark的Web管理頁面: http://master:8080
3.運行示例
#本地模式兩線程運行
./bin/run-example SparkPi 10 --master local[2]
#Spark Standalone 集群模式運行
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
lib/spark-examples-1.3.0-hadoop2.4.0.jar \
100
#Spark on YARN 集群上 yarn-cluster 模式運行
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \ # can also be `yarn-client`
lib/spark-examples*.jar \
10
注意 Spark on YARN 支持兩種運行模式,分別為yarn-cluster和yarn-client,具體的區別可以看這篇博文,從廣義上講,yarn-cluster適用於生產環境;而yarn-client適用於交互和調試,也就是希望快速地看到application的輸出。