CentOS下Hadoop+Spark集群環(huán)境搭建
硬件環(huán)境
虛擬機(jī)*3
每臺(tái)虛擬機(jī)配置:系統(tǒng)CentOS6.5 64位,內(nèi)存1g,硬盤(pán)20g。
網(wǎng)絡(luò)地址:
- master:172.27.35.10
- slave1:172.27.35.11
- slave2:172.27.35.12
軟件環(huán)境
- java版本:1.8.0_151
- hadoop版本:2.7.6
- spark版本:2.3.0
- scala版本:2.11.12
xshell安裝
下載安裝xshell,使用SSH遠(yuǎn)程登錄虛擬機(jī)。
java安裝
1、登錄master主機(jī)
使用xshell遠(yuǎn)程登錄master主機(jī),登錄成功后如下圖所示:

2、檢查虛擬機(jī)網(wǎng)絡(luò)連接是否正常
可以使用ping命令來(lái)檢查網(wǎng)絡(luò)問(wèn)題:
ping www.baidu.com
如果ping成功,則網(wǎng)絡(luò)沒(méi)有問(wèn)題。
如果ping沒(méi)有成功,則輸入ifconfig,查看網(wǎng)絡(luò)設(shè)置。如果顯示如下圖:

則說(shuō)明網(wǎng)卡沒(méi)有設(shè)置啟動(dòng)好,需設(shè)置網(wǎng)卡并啟動(dòng)。
修改網(wǎng)卡設(shè)置:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改后如圖所示:

如上圖配置將master主機(jī)IP地址設(shè)置為靜態(tài)地址172.27.35.10,其余主機(jī)可以參照上述操作將IP地址設(shè)置為相應(yīng)靜態(tài)地址。
然后配置DNS:
vim /etc/resolv.conf
配置后如圖所示:

注意:虛擬機(jī)中設(shè)置靜態(tài)IP地址時(shí),網(wǎng)關(guān)、子網(wǎng)掩碼要和宿主機(jī)一樣,IP地址也要和宿主機(jī)在同一個(gè)網(wǎng)段,否則連不上網(wǎng),橋接模式要記得選擇網(wǎng)卡。
配置完成后輸入service network restart重啟網(wǎng)卡,便可成功連接網(wǎng)絡(luò)。如果使用的是虛擬機(jī),并且子節(jié)點(diǎn)是從其他機(jī)器克隆的話,注意修改ifcfg-eht0中的HWADDR硬件地址,并且刪除/etc/udev/rules.d/70-persistent-net.rules,這個(gè)文件確定了網(wǎng)卡和MAC地址的信息之間的綁定,所以克隆后需刪除,待機(jī)器重啟后重新生成。
3、更新軟件包
在終端程序輸入以下命令來(lái)更新軟件包:
yum upgrade
4、安裝java
在oracle官網(wǎng)下載對(duì)應(yīng)的jdk,拷貝到master主節(jié)點(diǎn)上,這里用的版本為jdk-8u151-linux-x64.tar.gz。
輸入解壓縮命令:
tar -zxvf jdk-8u151-linux-x64.tar.gz
將解壓后文件夾重命名移動(dòng)到/usr/local/java中(這里軟件包都一律安裝到/usr/local文件夾中):
mv jdk1.8.0_151/ /usr/local/java
5、配置系統(tǒng)變量
輸入命令修改系統(tǒng)配置文件:
vim /etc/profile
在文件末尾輸入:
export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib
之后保存退出,輸入source /etc/profile使配置文件生效。
6、查看java版本
java -version
結(jié)果如圖所示:

如上,java環(huán)境安裝配置成功。
7、發(fā)送jdk到從節(jié)點(diǎn)上
(1) 修改主節(jié)點(diǎn)、從節(jié)點(diǎn)hosts文件,修改后hosts文件如下圖所示:

(2) 配置各個(gè)節(jié)點(diǎn)ssh免密登陸
在master主節(jié)點(diǎn)上輸入命令ssh-keygen -t rsa生成公鑰,結(jié)果如圖所示:

然后輸入命令將公鑰發(fā)送到各個(gè)子節(jié)點(diǎn)上:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1
結(jié)果如圖所示:

上圖所示只是將公鑰從master主節(jié)點(diǎn)發(fā)送到slave1從節(jié)點(diǎn)的authorized_keys列表,發(fā)送到其他從節(jié)點(diǎn)只需改變主機(jī)名就可以了。
輸入ssh slave1驗(yàn)證是否主節(jié)點(diǎn)到從節(jié)點(diǎn)免密登陸,結(jié)果如圖所示:

說(shuō)明主節(jié)點(diǎn)到slave1從節(jié)點(diǎn)免密登陸配置成功。
注意:除了配置主節(jié)點(diǎn)到各個(gè)子節(jié)點(diǎn)間免密登陸,我們最好也配置各個(gè)子節(jié)點(diǎn)到主節(jié)點(diǎn)間以及各個(gè)子節(jié)點(diǎn)間免密登陸,在需要配置到其他節(jié)點(diǎn)間免密登陸的主機(jī)上按照如上方法操作即可。
(3) 發(fā)送jdk到從節(jié)點(diǎn)
輸入命令scp -r /usr/local/java/ root@slave1:/usr/local/java/,將jdk發(fā)送到slave1從節(jié)點(diǎn)上,如下圖所示:

發(fā)送到其他子節(jié)點(diǎn)只需修改目標(biāo)主機(jī)名即可。
(4) 配置各個(gè)從節(jié)點(diǎn)系統(tǒng)變量
參照第5步所示方法。最后輸入java -version驗(yàn)證配置是否成功。
Hadoop安裝
1、安裝Hadoop
到Hadoop官網(wǎng)下載Hadoop安裝包,拷貝到主節(jié)點(diǎn)上,這里用的版本為hadoop-2.7.6.tar.gz。
輸入解壓縮命令:
tar -zxvf hadoop-2.7.6.tar.gz
將解壓后文件夾重命名移動(dòng)到/usr/local/hadoop中:
mv hadoop-2.7.6 /usr/local/hadooop
2、配置系統(tǒng)環(huán)境變量
輸入命令vim /etc/profile,在文件末尾輸入如下內(nèi)容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
之后保存退出,輸入source /etc/profile使配置文件生效。
3、hadoop相關(guān)文件配置
hadoop配置文件所在目錄為$HADOOP_HOME/etc/hadoop,此處HADOOP_HOME為hadoop安裝目錄,進(jìn)入hadoop配置文件所在目錄,修改相應(yīng)配置文件。
(1)hadoop-env.sh文件配置
修改JAVA_HOME為當(dāng)前jdk安裝目錄:
export JAVA_HOME=/usr/local/java
(2)core-site.xml文件配置如下
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
(3)hdfs-site.xml文件配置如下
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hdfs/datanode</value>
</property>
</configuration>
(4)slaves文件配置如下
slave1
slave2
因?yàn)槲覀儧](méi)有用到hadoop的yarn與mapreduce,所以hadoop相關(guān)配置到此結(jié)束。
4、發(fā)送hadoop安裝包到各個(gè)從節(jié)點(diǎn)
輸入命令scp -r /usr/local/hadoop/ root@slave1:/usr/local/hadoop,將hadoop安裝包發(fā)送到slave1節(jié)點(diǎn),發(fā)送的其他節(jié)點(diǎn)只需修改相應(yīng)主機(jī)名即可。
然后修改對(duì)應(yīng)從節(jié)點(diǎn)系統(tǒng)變量,方法參照第2步。
5、格式化namenode
在master主節(jié)點(diǎn)輸入命令hadoop namenode -format格式化namenode,如下圖所示:

6、啟動(dòng)hdfs
在master主節(jié)點(diǎn)輸入命令start-dfs.sh,啟動(dòng)hdfs,如下圖所示:

7、檢查hdfs是否啟動(dòng)成功
在主節(jié)點(diǎn)輸入jps,查看已啟動(dòng)的java進(jìn)程,如下圖所示,顯示namenode、sercondaryNamenode啟動(dòng)成功:

分別進(jìn)入各個(gè)從節(jié)點(diǎn),查看datanode是否啟動(dòng)成功,如下圖所示,則datanode啟動(dòng)成功:

8、hdfs管理界面進(jìn)入
在地址欄輸入http://172.27.35.10:50070,此處172.27.35.10為namenode主機(jī)ip,嘗試進(jìn)入hdfs管理界面,如果無(wú)法進(jìn)入,一般是防火墻的問(wèn)題,可以輸入命令service iptables stop關(guān)閉防火墻,也可以進(jìn)一步輸入命令chkconfig iptables off關(guān)閉防火墻開(kāi)機(jī)自啟動(dòng),為了集群的順利運(yùn)行,可以把集群中的機(jī)器防火墻都關(guān)閉掉。成功進(jìn)入hdfs管理界面如下圖所示:

scala安裝
1、安裝scala
在安裝Spark之前,我們需要先安裝scala,到scala官網(wǎng)下載scala,拷貝到主節(jié)點(diǎn)中,此處安裝版本為scala-2.11.12.tgz。
輸入解壓縮命令:
tar -zxvf scala-2.11.12.tgz
將解壓后文件夾重命名移動(dòng)到/usr/local/scala中:
mv scala-2.11.12 /usr/local/scala
2、配置系統(tǒng)環(huán)境變量
輸入命令vim /etc/profile,在文件末尾添加如下內(nèi)容:
export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin
之后保存退出,輸入source /etc/profile使配置文件生效。輸入scala -version驗(yàn)證安裝是否成功,如下圖所示:

3、發(fā)送scala到從節(jié)點(diǎn)
輸入命令scp -r /usr/local/scala/ root@slave1:/usr/local/scala,將scala發(fā)送到slave1節(jié)點(diǎn),發(fā)送到其他節(jié)點(diǎn)只需修改相應(yīng)主機(jī)名即可。同時(shí)修改系統(tǒng)環(huán)境變量,參照第2步。
Spark安裝
1、安裝Spark
到Spark官網(wǎng)下載Spark,拷貝到主節(jié)點(diǎn)中,此處安裝版本為spark-2.3.0-bin-hadoop2.7.tgz。解壓縮并將解壓后文件夾重命名移動(dòng)到/usr/local/spark中。
tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz
mv spark-2.3.0-bin-hadoop2.7 /usr/local/spark
2、配置系統(tǒng)環(huán)境變量
輸入命令vim /etc/profile,在文件末尾添加如下內(nèi)容:
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
3、spark相關(guān)文件配置
spark相關(guān)配置文件都在$SPARK_HOME/conf文件夾目錄下,此處SPARK_HOME為Spark安裝目錄,進(jìn)入Spark配置文件所在目錄,修改相應(yīng)配置文件。
(1)spark-env.sh文件配置
拷貝spark-env.sh.template到spark-env.sh,命令如下:
cp spark-env.sh.template spark-env.sh
spark-env.sh文件配置如下:
export JAVA_HOME=/usr/local/java
export SPARK_MASTER_IP=master
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_INSTANCES=2
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://master:9000/historyServerForSpark/logs"
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/usr/local/spark/recovery"
注意:此處歷史服務(wù)器日志存放地址為hdfs://master:9000/historyServerForSpark/logs,在啟動(dòng)歷史服務(wù)器前一定要確保該文件夾存在,
可以輸入hadoop fs -mkdir -p /historyServerForSpark/logs來(lái)創(chuàng)建該文件夾。
(2)slaves文件配置如下
拷貝slaves.template到slaves,命令如下:
cp slaves.template slaves
slaves文件配置如下:
slave1
slave2
(3)spark-defaults.conf文件配置
拷貝spark-defaults.con.template到spark-defaults.conf,命令如下
cp spark-defaults.conf.template spark-defaults.conf
spark-defaults.conf文件配置如下:
spark.eventLog.enabled=true
spark.eventLog.dir=hdfs://master:9000/historyServerForSpark/logs
spark.eventLog.compress=true
此處主要是歷史服務(wù)器相關(guān)配置。
4、發(fā)送spark安裝包到各個(gè)從節(jié)點(diǎn)
輸入命令scp -r /usr/local/spark/ root@slave1:/usr/local/spark,將spark發(fā)送到slave節(jié)點(diǎn),發(fā)送到其他節(jié)點(diǎn)只需修改對(duì)應(yīng)主機(jī)名就行。同時(shí)修改系統(tǒng)環(huán)境變量,參照第2步。
5、啟動(dòng)spark集群
進(jìn)入SPARK_HOME/sbin目錄,輸入命令./start-all.sh,結(jié)果如下圖所示:

6、啟動(dòng)歷史服務(wù)器
首先確保歷史服務(wù)器日志存放文件夾已創(chuàng)建,然后進(jìn)入SPARK_HOME/sbin目錄,輸入命令./start-history-server.sh,結(jié)果如下圖所示:

7、檢查spark集群、歷史服務(wù)器是否啟動(dòng)成功
在主節(jié)點(diǎn)輸入jps,查看已啟動(dòng)的java進(jìn)程,如下圖所示,顯示master、historyserver啟動(dòng)成功:

分別進(jìn)入各個(gè)子節(jié)點(diǎn),查看worker是否啟動(dòng)成功,如下圖所示,則worker啟動(dòng)成功:

8、進(jìn)入集群管理、歷史服務(wù)器管理頁(yè)面
在瀏覽器地址欄輸入地址http://172.27.35.10:8080,此處172.27.35.10為master ip地址,進(jìn)入集群管理界面,成功進(jìn)入如下圖所示:

在瀏覽器地址欄輸入地址http://172.27.35.10:18080,進(jìn)入歷史服務(wù)器管理界面,成功進(jìn)入如下圖所示:

因?yàn)槲覀冞€沒(méi)有跑過(guò)程序,所以歷史服務(wù)器里記錄為空。
9、集群測(cè)試
下面我們嘗試在spark集群中跑個(gè)簡(jiǎn)單的測(cè)試程序,進(jìn)入目錄$SPARK_HOME/bin,此處SPARK_HOME為spark安裝目錄,輸入如下命令:
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:6066 \
--deploy-mode cluster \
--supervise \
--executor-memory 1G \
--total-executor-cores 2 \
../examples/jars/spark-examples_2.11-2.3.0.jar \
1000
如下圖所示:

然后進(jìn)入集群管理界面查看應(yīng)用運(yùn)行情況,如下圖所示:

上圖顯示應(yīng)用程序正在運(yùn)行。
當(dāng)應(yīng)用程序運(yùn)行結(jié)束后,進(jìn)入歷史服務(wù)器管理界面,如下圖所示:

點(diǎn)擊相應(yīng)應(yīng)用程序,可查看應(yīng)用程序具體運(yùn)行情況,如下圖所示:

結(jié)語(yǔ)
到此CentOS下Hadoop+Spark集群搭建已經(jīng)成功完成啦,讓我們開(kāi)啟愉快的大數(shù)據(jù)之旅吧!
寫(xiě)在最后
聊技術(shù),不止于技術(shù)。
歡迎大家關(guān)注我的個(gè)人公眾號(hào):WU雙,在這里我會(huì)與大家分享技術(shù)文章、管理知識(shí)以及個(gè)人的一些思想感悟。