一候生、Spark集群部署
1、軟件版本
OS版本:Ubuntu 14.04
Hadoop版本:Hadoop 2.6.0
JDK版本:Jdk1.8.0_40
Scala版本:scala-2.11.7.tgz
Spark版本:spark-1.5.0-bin-hadoop2.6.tgz
注:Spark程序包版本要根據(jù)下載及安裝的hadoop版本進(jìn)行下載和安裝南蓬,Spark下載官網(wǎng)地址http://spark.apache.org/downloads.html;Scala官網(wǎng)地址http://www.scala-lang.org/哑了,根據(jù)Spark官方規(guī)定的Scala版本進(jìn)行下載和安裝赘方。
2、集群節(jié)點(diǎn)
Spark部署在安裝有hadoop的Ubuntu系統(tǒng)集群中弱左,在Ubuntu14.04中安裝Spark窄陡,需要預(yù)先安裝JDK、Scala等所需依賴拆火。Spark只是計(jì)算框架跳夭,需要預(yù)先在集群中搭建好存儲(chǔ)數(shù)據(jù)的持久化層(HDFS/Hive等),所以也需要預(yù)先安裝Hadoop们镜。
集群:1臺(tái)master币叹、10臺(tái)salve計(jì)算節(jié)點(diǎn),2臺(tái)client憎账。
主機(jī)名(節(jié)點(diǎn))
IP地址
內(nèi)存(GB)
VCPU
(個(gè))硬盤(GB)
節(jié)點(diǎn)運(yùn)行進(jìn)程
Master
192.168.1.60
4
4
100
ResourceManager套硼、NameNode、SecondaryNameNode胞皱、
Master
Node1
192.168.1.61
4
4
100
NodeManager邪意、DataNode、Worker
Node2
192.168.1.62
4
4
100
NodeManager反砌、DataNode雾鬼、Worker
Node3
192.168.1.63
4
4
100
NodeManager、DataNode宴树、Worker
Node4
192.168.1.64
4
4
100
NodeManager策菜、DataNode、Worker
Node5
192.168.1.65
4
4
100
NodeManager、DataNode又憨、Worker
Node6
192.168.1.66
4
4
100
NodeManager翠霍、DataNode、Worker
Node7
192.168.1.67
4
4
100
NodeManager蠢莺、DataNode寒匙、Worker
Node8
192.168.1.68
4
4
100
NodeManager、DataNode躏将、Worker
Node9
192.168.1.69
4
4
100
NodeManager锄弱、DataNode、Worker
Node10
192.168.1.70
4
4
100
NodeManager祸憋、DataNode会宪、Worker
Client
192.168.1.80
4
4
100
Client_b
192.168.1.81
4
4
100
3、安裝JDK
在服務(wù)器上搭建一臺(tái)安裝Ubuntu14.04的虛擬機(jī)蚯窥,安裝完JDK和Scala之后掸鹅,克隆虛擬機(jī)13臺(tái)。
(1)下載JDK
下載jdk1.8.0_40版本沟沙,官網(wǎng)地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
(2)下載后解壓河劝,解壓目錄/home/hadoop/jdk1.8.0_40;
# tar–xzvf jdk-8u40-linux-x64.tar
(3)配置環(huán)境變量,root權(quán)限下在/etc/profile文件下增加以下代碼:
(4)使profile文件更新生效
#source/etc/profile
4矛紫、安裝Scala
(1)下載scala-2.11.7.tgz
(2)解壓至目錄/home/hadoop/scala-2.11.7
# tar –xzvf scala-2.11.7.tgz
(3)配置環(huán)境變量赎瞎,root權(quán)限下在/etc/profile文件下增加以下代碼:
(4)使profile文件更新生效
# source/etc/profile
注:安裝完JDK和Scala之后,克隆出另外12臺(tái)虛擬機(jī)颊咬。
5务甥、網(wǎng)絡(luò)配置
服務(wù)器地址:192.168.0.80用戶名:administrator密碼:********
在服務(wù)器上搭建安裝Ubuntu14.04的虛擬機(jī),克隆12臺(tái)喳篇。分別配置13臺(tái)主機(jī)的網(wǎng)絡(luò)地址敞临。
IP地址:192.168.1.X
子網(wǎng)掩碼:255.255.0.0網(wǎng)關(guān):192.168.0.1
DNS:192.168.0.1
注:網(wǎng)絡(luò)配置IPv4選擇->Manual(手動(dòng)),為每臺(tái)主機(jī)配置靜態(tài)IP地址(詳細(xì)IP見2中表格)
6麸澜、修改主機(jī)名hostname
修改每臺(tái)(13臺(tái))主機(jī)的hostname挺尿,分別為master、client炊邦、client_b编矾、node1~node1。
命令:hostname//查看主機(jī)名
sudo vi /etc/hostname//打開hostname文件(root權(quán)限下可修改)
7馁害、配置hosts文件
修改集群中所有節(jié)點(diǎn)的/etc/hosts文件窄俏,該文件是集群中所有節(jié)點(diǎn)的IP和主機(jī)名hostname的對(duì)應(yīng)關(guān)系。
命令:sudo gedit/etc/hosts//打開該文件
添加:192.168.1.60master
192.168.1.61 node1
192.168.1.62 node2
……
192.168.1.70 node10
192.168.1.80 client
192.168.1.81 client_b
注:修改每個(gè)節(jié)點(diǎn)的hosts文件碘菜,且確保每個(gè)節(jié)點(diǎn)的hosts文件相同
8凹蜈、配置SSH免密碼登錄
Spark的Master節(jié)點(diǎn)向Worker節(jié)點(diǎn)發(fā)命令需要通過ssh進(jìn)行發(fā)送,用戶不希望Master每發(fā)送一次命令就輸入一次密碼仰坦,因此需要實(shí)現(xiàn)Master無(wú)密碼登錄到所有Worker履植。這需要在Master上生成一個(gè)密鑰對(duì),包括一個(gè)公鑰和一個(gè)私鑰缎岗,然后將公鑰復(fù)制到Worker上传泊。
當(dāng)Master通過ssh連接Worker時(shí),Worker就會(huì)生成一個(gè)隨機(jī)數(shù)并用Master的公鑰對(duì)隨機(jī)數(shù)進(jìn)行加密溪椎,發(fā)送給Worker校读。Master收到加密數(shù)之后再用私鑰進(jìn)行解密歉秫,并將解密數(shù)回傳給Worker雁芙,Worker確認(rèn)解密數(shù)無(wú)誤之后兔甘,允許Master進(jìn)行連接洞焙。這就是一個(gè)公鑰認(rèn)證過程,其間不需要用戶手工輸入密碼仙蛉,主要過程是將Master節(jié)點(diǎn)公鑰復(fù)制到Worker節(jié)點(diǎn)上荠瘪。
(1)在Master節(jié)點(diǎn)上趁餐,生產(chǎn)密鑰:
# ssh-keygen -tdsa -P '' -f ~/.ssh/id_dsa
此時(shí)吠各,在~/.ssh/目錄下生成id_dsa.pub文件贾漏,查看命令:
# ls –a~/.ssh
(2)復(fù)制Master的id_dsa.pub文件到其他slave節(jié)點(diǎn)、client、client_b
將master結(jié)點(diǎn)上的~/.ssh/id_dsa.pub的內(nèi)容濒蒋,添加到slave結(jié)點(diǎn)的~/.ssh/authorized_keys這個(gè)文件中啊胶。命令如下:
scp~/.ssh/id_dsa.pub hadoop@node1:~/.ssh/authorized_keys//添加到node1節(jié)點(diǎn)
scp~/.ssh/id_dsa.pub hadoop@node2:~/.ssh/authorized_keys//添加到node2節(jié)點(diǎn)
……
scp~/.ssh/id_dsa.pub hadoop@node10:~/.ssh/authorized_keys//添加到node10節(jié)點(diǎn)
scp~/.ssh/id_dsa.pub hadoop@client:~/.ssh/authorized_keys//添加到client節(jié)點(diǎn)
scp~/.ssh/id_dsa.pub hadoop@client_b:~/.ssh/authorized_keys//添加到client_b節(jié)點(diǎn)
(3)驗(yàn)證是否可以無(wú)密碼登陸
在master結(jié)點(diǎn)上使用ssh連接其他slave結(jié)點(diǎn),命令如下:
# ssh node1
……
# ssh node10
# ssh client
# ssh client_b
9、Hadoop安裝與配置
(1)解壓安裝hadoop-2.6.0
將下載后的hadoop-2.6.0.tar.gz(官網(wǎng)地址http://hadoop.apache.org/)解壓到master節(jié)點(diǎn)的/home/hadoop目錄下善绎,配置好master節(jié)點(diǎn)的hadoop后復(fù)制到其他節(jié)點(diǎn)即可。
解壓命令如下:
# tar xzfvhadoop-2.6.0.tar.gz
復(fù)制命令如下:
scp –r /home/hadoop/hadoop-2.6.0 hadoop@node1:/home/hadoop///復(fù)制到node1
scp -r /home/hadoop/hadoop-2.6.0 hadoop@node2:/home/hadoop///復(fù)制到node2
……
scp -r /home/hadoop/hadoop-2.6.0 hadoop@node10:/home/hadoop///復(fù)制到node10
scp -r /home/hadoop/hadoop-2.6.0 hadoop@client:/home/hadoop///復(fù)制到client
scp -r /home/hadoop/hadoop-2.6.0 hadoop@client_b:/home/hadoop///復(fù)制到client_b
注:配置完之后再執(zhí)行復(fù)制命令减途,且集群中所有的hadoop都安裝在同一目錄下。
(2)配置Hadoop環(huán)境變量
在/etc/profile文件中,添加以下代碼:
使profile文件更新生效:# source /etc/profile
(3)編輯Hadoop配置文件
hadoop配置文件都在hadoop-2.6.0/etc目錄下,配置時(shí)需要修改7個(gè)配置文件羽杰,包括hadoop-env.sh颜骤、core-site.xml鸠项、hdfs-site.xml牧抽、yarn-site.xml扬舒、mapred-site.xml诊赊、masters和slaves文件鲸郊。
①修改hadoop-env.sh
export JAVA_HOME=/home/hadoop/jdk1.8.0_40
②修改core-site.xml
注:修改屬性,以name和value的關(guān)系對(duì)出現(xiàn)。
③修改hdfs-site.xml
注:在hadoop-2.6.0目錄下觉吭,默認(rèn)不存在dfs/name及dfs/data文件夾榜聂,需要新建。
命令如下:
cd/home/hadoop/hadoop-2.6.0/
mkdir dfs
cd dfs/
mkdir name
mkdir data
④修改yarn-site.xml
⑤修改mapred-site.xml
⑥配置masters文件
⑦配置slaves文件
注:slaves文件僅包括集群中作為計(jì)算節(jié)點(diǎn)的主機(jī)名(這里不包括client和client_b)。
配置完hadoop后,將hadoop2.6.0的所有文件通過scp命令復(fù)制到其他節(jié)點(diǎn)。
(4)啟動(dòng)和關(guān)閉hadoop
?格式化hdfs文件系統(tǒng)的namenode
# cd hadoop-2.6.0///進(jìn)入hadoop-2.6.0目錄
# bin/hdfs namenode -format//格式化
②啟動(dòng)hadoop集群
# sbin/start-dfs.sh//啟動(dòng)hdfs(一次性啟動(dòng)namenode和所有datanode)
# sbin/start-yarn.sh//啟動(dòng)yarn(一次性啟動(dòng)RM和所有NM)
通過jps命令查看是否啟動(dòng)成功葱淳。
③關(guān)閉hadoop集群
#sbin/stop-all.sh
10、安裝spark
(1)下載spark-1.5.0-bin-hadoop2.6.tgz
官網(wǎng)地址http://spark.apache.org/downloads.html
(2)解壓至目錄/home/hadoop/spark-1.5.0-bin-hadoop2.6
# tar–xzvf spark-1.5.0-bin-hadoop2.6.tgz
(3)配置conf/spark-env.sh文件
參數(shù)SPARK_WORKER_MEMORY表示在每一個(gè)Worker節(jié)點(diǎn)上可用的最大內(nèi)存(總內(nèi)存4g,增加這個(gè)數(shù)值可以在內(nèi)存中緩存更多數(shù)據(jù),但是要給Slave的OS和其他服務(wù)預(yù)留出足夠的內(nèi)存抄肖,故這里設(shè)置為3g)
注:其他更復(fù)雜的配置參考官網(wǎng)的配置頁(yè)面,地址為http://spark.apache.org/docs/latest/configuration.html
(4)配置slaves文件
進(jìn)入spark安裝目錄,編輯/conf/slaves文件
注:將配置好后的spark所有文件,通過scp命令復(fù)制到其他節(jié)點(diǎn)相同目錄下掏湾。
# scp –r /home/hadoop/spark-1.5.0-bin-hadoop2.6 hadoop@node*:/home/hadoop
11筑公、啟動(dòng)集群
(1)啟動(dòng)hadoop
進(jìn)入hadoop2.6.0安裝目錄工育,執(zhí)行#sbin/start-all.sh
(2)啟動(dòng)spark
進(jìn)入spark安裝目錄,執(zhí)行#
sbin/start-all.sh(或者執(zhí)行#sbin/start-master.sh艰赞、# sbin)
(3)檢測(cè)是否安裝成功
通過jps命令杯瞻,查看啟動(dòng)的進(jìn)程逆皮。master節(jié)點(diǎn)啟動(dòng)的進(jìn)程有:NameNode晒来、SecondaryNameNode攒读、ResourceManager、Master乙各;slaves節(jié)點(diǎn)啟動(dòng)的進(jìn)程有:DataNode、NodeManager、Worker。
至此,spark集群安裝完成。
二、Spark示例程序測(cè)試
部署完Spark集群之后,以Spark項(xiàng)目中自帶的SparkPi(計(jì)算)程序?yàn)槔瑴y(cè)試Spark集群的性能。
(1)啟動(dòng)hadoop捉片、啟動(dòng)spark昂芜,進(jìn)入Spark安裝目錄,執(zhí)行:
# bin/run-example org.apache.spark.examples.SparkPi
(2)通過Web UI查看集群狀態(tài)
瀏覽器訪問http://masterIP:8080算行,觀察Spark集群的整個(gè)狀態(tài)是否正常,如下圖所示苫耸。masterIP配置為用戶的Spark集群的主節(jié)點(diǎn)IP州邢,這里為http://192.168.1.60:8080。