- Spark核心技術(shù)與高級應(yīng)用
- 于俊等
- 427字
- 2019-01-01 01:24:33
2.2 Spark部署
Spark部署主要包括Local模式部署、Standalone模式部署、YARN模式部署、Mesos模式部署(參考官方文檔)。
其中,集群部署模式如下:
□獨(dú)立部署模式:Spark自帶的一種簡單集群管理器,使用該集群管理器可以輕松地建立一個集群;
□ Apache Mesos:一個通用的集群管理器,該集群管理器也可以運(yùn)行MapReduce和服務(wù)應(yīng)用(實(shí)際業(yè)務(wù)沒有采取該種架構(gòu),本書沒有對該模式進(jìn)行專門講解,如需要了解,請參考官方文檔);
□ Hadoop YARN:Hadoop 2中的資源管理器,是當(dāng)前主要使用的資源管理器。
除此之外,Spark的EC2啟動腳本使得在Amazon EC2上啟動一個獨(dú)立模式集群變得容易。
2.2.1 Local模式部署
Local(本地)模式下部署Spark應(yīng)用程序比較簡單,可以用于檢測Spark是否編譯安裝成功,需要配置Java環(huán)境變量和設(shè)置主節(jié)點(diǎn)。
主節(jié)點(diǎn)設(shè)置步驟如下:
1)進(jìn)入Spark主程序的conf目錄,執(zhí)行:cd spark-1.5.0/conf。
2)以spark-env.sh.template文件為模板創(chuàng)建spark-env.sh文件。
3)修改spark-env.sh配置文件:
vi spark-env.sh export SPARK_MASTER_IP=$YOUR_MASTER_IP export JAVA_HOME=$YOUR_JAVA_HOME
4)版本驗(yàn)證,在安裝完畢Spark并配置環(huán)境變量之后,在任意目錄下運(yùn)行spark-shell命令即可進(jìn)入Spark命令行模式,此時出現(xiàn)的大段文字中會提示當(dāng)前的Spark版本,例如:
Welcome to Spark version 1.5.0 Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45)
2.2.2 Standalone模式部署
部署Standalone模式Spark集群步驟如下:
1)修改spark-env.sh配置文件(參考本地部署模式)。
vim spark-env.sh export SPARK_MASTER_IP=$YOUR_MASTER_IP export JAVA_HOME=$YOUR_JAVA_HOME
2)在Spark目錄下創(chuàng)建一個名為conf/slaves的文件。該文件需要包含所有將要啟動Spark Workers的機(jī)器的hostname(主機(jī)名),每行一個。
vim slaves # A Spark Worker will be started on each of the machines listed below. slave01 slave02 slave03 slave04 ……
3)發(fā)送配置文件spark-env.sh和Slaves到所有Worker節(jié)點(diǎn),以slave02為例:
scp -r $SPARK_HOME/conf/spark-env.sh slave02:/$SPARK_HOME/conf/ scp -r $SPARK_HOME/slavesslave02:/$SPARK_HOME/conf/
4)配置Master無密鑰登錄Slaves節(jié)點(diǎn)。
① 在Master節(jié)點(diǎn)和所有Slaves節(jié)點(diǎn)上安裝openssh-server(以Ubuntu 12.04為例):
sudo apt-get install openssh-server
② 建立SSH KEY:
ssh-keygen -t rsa -P ""
③ 在Master節(jié)點(diǎn)上啟用SSH KEY(authorized_keys權(quán)限644):
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys sudo /etc/init.d/ssh reload
④ 驗(yàn)證SSH的配置:
ssh localhost
⑤ 將Master節(jié)點(diǎn)的authorized_keys發(fā)送到所有的Slaves節(jié)點(diǎn),并登錄驗(yàn)證。
部署完畢,可以通過手動啟動和腳本啟動集群的Master和Worker。下面詳細(xì)介紹一下Spark Standalone模式集群的啟動以及啟動參數(shù)的功能。
1. 手動啟動集群
通過執(zhí)行下面的命令啟動Master節(jié)點(diǎn):
./sbin/start-master.sh
啟動之后,命令行會打印出一個spark://HOST:PORT,你可以通過該信息將Worker與Master連接,或以“master”參數(shù)的形式傳遞給SparkContext對象。你也可以在Master的WebUI中找到這個URL,默認(rèn)訪問地址是http://localhost:8080。
支持啟動一個或更多的Worker,然后通過下面的指令與Master連接:
./bin/spark-class org.apache.spark.deploy.worker.Worker park:// IP:PORT
一旦啟動了一個Worker節(jié)點(diǎn),在Master的WebUI中(默認(rèn)http://localhost:8080),你會看到新增Worker節(jié)點(diǎn),以及CPU數(shù)目、內(nèi)存大小(減去1GB留給系統(tǒng))在列表中呈現(xiàn)。
2. 腳本啟動集群
檢查Spark目錄下的conf/slaves文件是否創(chuàng)建,是否包含了所有工作節(jié)點(diǎn)機(jī)器的hostname,一旦建立了這個文件,就可以通過下面的shell腳本在Master節(jié)點(diǎn)上啟動或終止你的集群。
□ sbin/start-master.sh:在腳本運(yùn)行的機(jī)器上啟動一個Master實(shí)例。
□ sbin/start-slaves.sh:在conf/slaves文件中指定的機(jī)器上啟動一個Slaves實(shí)例。
□ sbin/start-all.sh:以上面所述的方式啟動一個Master和一定數(shù)量的Slaves。
□ sbin/stop-master.sh:停止當(dāng)前通過bin/start-master.sh腳本啟動的Master實(shí)例。
□ sbin/stop-slaves.sh:停止在conf/salves文件中指定的機(jī)器上所有的Slaves實(shí)例。
□ sbin/stop-all.sh:停止當(dāng)前啟動的Master實(shí)例和指定的Slaves實(shí)例。
執(zhí)行cd /spark-1.5.0/sbin命令進(jìn)入sbin文件夾,執(zhí)行./start-all.sh可以啟動所有服務(wù)器上的Spark相關(guān)進(jìn)程。
執(zhí)行jps命令可以查看當(dāng)前服務(wù)器正在運(yùn)行的進(jìn)程。如果是主節(jié)點(diǎn),可以看到Master進(jìn)程;如果是子節(jié)點(diǎn),可以看到Worker進(jìn)程。這樣就表示Spark在服務(wù)器上全部配置完畢。
可以通過設(shè)置spark-env.sh中的環(huán)境變量進(jìn)一步配置集群,并復(fù)制到所有的Worker機(jī)器上以使設(shè)置生效,表2-2為可配置的spark-env.sh中的環(huán)境變量。
表2-2 可配置的spark-env.sh中的環(huán)境變量

2.2.3 YARN模式部署
下面來具體講解如何基于YARN配置Spark程序。
(1)準(zhǔn)備工作
配置Spark之前,需要做一些準(zhǔn)備工作。
首先,檢查hosts文件,即使用root賬戶登錄服務(wù)器之后,在任意目錄下執(zhí)行vim /etc/hosts命令,查看需要部署Spark的“服務(wù)器IP機(jī)器名”是否已存在,沒有請?zhí)砑印?/p>
其次,添加配置文件,同樣是在任意目錄下執(zhí)行vim /etc/prof ile,打開環(huán)境變量配置文件,將SPARK_HOME配置到環(huán)境變量中,具體如下所示。
export SPARK_HOME=/home/hadoop/spark-1.5.0 export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
然后,在任意目錄下執(zhí)行source /etc/prof ile命令讓環(huán)境變量生效。
(2)Spark本身的配置
接下來就是針對Spark本身的配置。
首先,進(jìn)入Spark中的conf文件夾,即在Spark所在目錄執(zhí)行cd/spark-1.5.0/conf命令。打開spark-env.sh文件,即vim spark-env.sh,添加:
export JAVA_HOME=$YOUR_JAVA_HOME export SPARK_MASTER_IP=$YOUR_MASTER_IP
通過這一項(xiàng)配置,可以確定執(zhí)行Spark程序時的主節(jié)點(diǎn)。
接下來,打開Slaves文件,將子節(jié)點(diǎn)的IP地址或名稱添加到該文件中,完成Spark的IP和機(jī)器名對應(yīng)的配置。
vim slaves # A Spark Worker will be started on each of the machines listed below. slave01 slave02 slave03 slave04 ……
最后,需要將spark-1.5.0文件夾、環(huán)境變量配置文件和hosts文件批量發(fā)送到配置的各個子節(jié)點(diǎn)的服務(wù)器上,再批量執(zhí)行source /etc/prof ile命令即可。
按照先啟動Hadoop,再啟動Spark的順序進(jìn)行啟動。
- 數(shù)據(jù)浪潮
- Python數(shù)據(jù)分析入門:從數(shù)據(jù)獲取到可視化
- SQL Server 2008數(shù)據(jù)庫應(yīng)用技術(shù)(第二版)
- 區(qū)塊鏈:看得見的信任
- Creating Dynamic UIs with Android Fragments(Second Edition)
- 數(shù)亦有道:Python數(shù)據(jù)科學(xué)指南
- ZeroMQ
- 數(shù)據(jù)庫原理與應(yīng)用
- Solaris操作系統(tǒng)原理實(shí)驗(yàn)教程
- Filecoin原理與實(shí)現(xiàn)
- 數(shù)據(jù)庫原理與設(shè)計實(shí)驗(yàn)教程(MySQL版)
- MySQL數(shù)據(jù)庫實(shí)用教程
- 云工作時代:科技進(jìn)化必將帶來的新工作方式
- Kubernetes快速進(jìn)階與實(shí)戰(zhàn)
- Cognitive Computing with IBM Watson