CentOS下Hadoop+Spark集群環(huán)境搭建
硬件環(huán)境
虛擬機*3
每臺虛擬機配置:系統(tǒng)CentOS6.5 64位掺逼,內(nèi)存1g何缓,硬盤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)程登錄虛擬機棒呛。
java安裝
1、登錄master主機
使用xshell遠(yuǎn)程登錄master主機告唆,登錄成功后如下圖所示:
2棺弊、檢查虛擬機網(wǎng)絡(luò)連接是否正常
可以使用ping命令來檢查網(wǎng)絡(luò)問題:
ping www.baidu.com
如果ping成功,則網(wǎng)絡(luò)沒有問題悔详。
如果ping沒有成功镊屎,則輸入ifconfig
,查看網(wǎng)絡(luò)設(shè)置茄螃。如果顯示如下圖:
則說明網(wǎng)卡沒有設(shè)置啟動好缝驳,需設(shè)置網(wǎng)卡并啟動。
修改網(wǎng)卡設(shè)置:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改后如圖所示:
如上圖配置將master主機IP地址設(shè)置為靜態(tài)地址172.27.35.10,其余主機可以參照上述操作將IP地址設(shè)置為相應(yīng)靜態(tài)地址用狱。
然后配置DNS:
vim /etc/resolv.conf
配置后如圖所示:
注意:虛擬機中設(shè)置靜態(tài)IP地址時运怖,網(wǎng)關(guān)、子網(wǎng)掩碼要和宿主機一樣夏伊,IP地址也要和宿主機在同一個網(wǎng)段摇展,否則連不上網(wǎng),橋接模式要記得選擇網(wǎng)卡溺忧。
配置完成后輸入service network restart
重啟網(wǎng)卡咏连,便可成功連接網(wǎng)絡(luò)。如果使用的是虛擬機鲁森,并且子節(jié)點是從其他機器克隆的話祟滴,注意修改ifcfg-eht0中的HWADDR硬件地址,并且刪除/etc/udev/rules.d/70-persistent-net.rules歌溉,這個文件確定了網(wǎng)卡和MAC地址的信息之間的綁定垄懂,所以克隆后需刪除,待機器重啟后重新生成痛垛。
3草慧、更新軟件包
在終端程序輸入以下命令來更新軟件包:
yum upgrade
4、安裝java
在oracle官網(wǎng)下載對應(yīng)的jdk匙头,拷貝到master主節(jié)點上漫谷,這里用的版本為jdk-8u151-linux-x64.tar.gz。
輸入解壓縮命令:
tar -zxvf jdk-8u151-linux-x64.tar.gz
將解壓后文件夾重命名移動到/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é)點上
(1) 修改主節(jié)點、從節(jié)點hosts文件肘迎,修改后hosts文件如下圖所示:
(2) 配置各個節(jié)點ssh免密登陸
在master主節(jié)點上輸入命令ssh-keygen -t rsa
生成公鑰甥温,結(jié)果如圖所示:
然后輸入命令將公鑰發(fā)送到各個子節(jié)點上:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1
結(jié)果如圖所示:
上圖所示只是將公鑰從master主節(jié)點發(fā)送到slave1從節(jié)點的authorized_keys列表,發(fā)送到其他從節(jié)點只需改變主機名就可以了妓布。
輸入ssh slave1
驗證是否主節(jié)點到從節(jié)點免密登陸姻蚓,結(jié)果如圖所示:
說明主節(jié)點到slave1從節(jié)點免密登陸配置成功。
注意:除了配置主節(jié)點到各個子節(jié)點間免密登陸匣沼,我們最好也配置各個子節(jié)點到主節(jié)點間以及各個子節(jié)點間免密登陸狰挡,在需要配置到其他節(jié)點間免密登陸的主機上按照如上方法操作即可。
(3) 發(fā)送jdk到從節(jié)點
輸入命令scp -r /usr/local/java/ root@slave1:/usr/local/java/
,將jdk發(fā)送到slave1從節(jié)點上加叁,如下圖所示:
發(fā)送到其他子節(jié)點只需修改目標(biāo)主機名即可倦沧。
(4) 配置各個從節(jié)點系統(tǒng)變量
參照第5步所示方法。最后輸入java -version
驗證配置是否成功它匕。
Hadoop安裝
1展融、安裝Hadoop
到Hadoop官網(wǎng)下載Hadoop安裝包,拷貝到主節(jié)點上豫柬,這里用的版本為hadoop-2.7.6.tar.gz告希。
輸入解壓縮命令:
tar -zxvf hadoop-2.7.6.tar.gz
將解壓后文件夾重命名移動到/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
因為我們沒有用到hadoop的yarn與mapreduce,所以hadoop相關(guān)配置到此結(jié)束檬贰。
4姑廉、發(fā)送hadoop安裝包到各個從節(jié)點
輸入命令scp -r /usr/local/hadoop/ root@slave1:/usr/local/hadoop
,將hadoop安裝包發(fā)送到slave1節(jié)點翁涤,發(fā)送的其他節(jié)點只需修改相應(yīng)主機名即可桥言。
然后修改對應(yīng)從節(jié)點系統(tǒng)變量,方法參照第2步葵礼。
5号阿、格式化namenode
在master主節(jié)點輸入命令hadoop namenode -format
格式化namenode,如下圖所示:
6鸳粉、啟動hdfs
在master主節(jié)點輸入命令start-dfs.sh
,啟動hdfs扔涧,如下圖所示:
7、檢查hdfs是否啟動成功
在主節(jié)點輸入jps
,查看已啟動的java進(jìn)程届谈,如下圖所示枯夜,顯示namenode、sercondaryNamenode啟動成功:
分別進(jìn)入各個從節(jié)點艰山,查看datanode是否啟動成功湖雹,如下圖所示,則datanode啟動成功:
8曙搬、hdfs管理界面進(jìn)入
在地址欄輸入http://172.27.35.10:50070摔吏,此處172.27.35.10為namenode主機ip汤踏,嘗試進(jìn)入hdfs管理界面,如果無法進(jìn)入舔腾,一般是防火墻的問題溪胶,可以輸入命令service iptables stop
關(guān)閉防火墻,也可以進(jìn)一步輸入命令chkconfig iptables off
關(guān)閉防火墻開機自啟動稳诚,為了集群的順利運行哗脖,可以把集群中的機器防火墻都關(guān)閉掉。成功進(jìn)入hdfs管理界面如下圖所示:
scala安裝
1扳还、安裝scala
在安裝Spark之前才避,我們需要先安裝scala,到scala官網(wǎng)下載scala氨距,拷貝到主節(jié)點中桑逝,此處安裝版本為scala-2.11.12.tgz。
輸入解壓縮命令:
tar -zxvf scala-2.11.12.tgz
將解壓后文件夾重命名移動到/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
驗證安裝是否成功寡喝,如下圖所示:
3、發(fā)送scala到從節(jié)點
輸入命令scp -r /usr/local/scala/ root@slave1:/usr/local/scala
勒奇,將scala發(fā)送到slave1節(jié)點预鬓,發(fā)送到其他節(jié)點只需修改相應(yīng)主機名即可。同時修改系統(tǒng)環(huán)境變量赊颠,參照第2步格二。
Spark安裝
1、安裝Spark
到Spark官網(wǎng)下載Spark竣蹦,拷貝到主節(jié)點中顶猜,此處安裝版本為spark-2.3.0-bin-hadoop2.7.tgz。解壓縮并將解壓后文件夾重命名移動到/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灶芝,在啟動歷史服務(wù)器前一定要確保該文件夾存在郑原,
可以輸入hadoop fs -mkdir -p /historyServerForSpark/logs
來創(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安裝包到各個從節(jié)點
輸入命令scp -r /usr/local/spark/ root@slave1:/usr/local/spark
酸役,將spark發(fā)送到slave節(jié)點,發(fā)送到其他節(jié)點只需修改對應(yīng)主機名就行驾胆。同時修改系統(tǒng)環(huán)境變量涣澡,參照第2步。
5丧诺、啟動spark集群
進(jìn)入SPARK_HOME/sbin目錄入桂,輸入命令./start-all.sh
,結(jié)果如下圖所示:
6驳阎、啟動歷史服務(wù)器
首先確保歷史服務(wù)器日志存放文件夾已創(chuàng)建抗愁,然后進(jìn)入SPARK_HOME/sbin目錄,輸入命令./start-history-server.sh
呵晚,結(jié)果如下圖所示:
7驹愚、檢查spark集群、歷史服務(wù)器是否啟動成功
在主節(jié)點輸入jps
,查看已啟動的java進(jìn)程劣纲,如下圖所示逢捺,顯示master、historyserver啟動成功:
分別進(jìn)入各個子節(jié)點癞季,查看worker是否啟動成功劫瞳,如下圖所示,則worker啟動成功:
8绷柒、進(jìn)入集群管理志于、歷史服務(wù)器管理頁面
在瀏覽器地址欄輸入地址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)入如下圖所示:
因為我們還沒有跑過程序奈应,所以歷史服務(wù)器里記錄為空。
9购披、集群測試
下面我們嘗試在spark集群中跑個簡單的測試程序杖挣,進(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īng)用程序正在運行株汉。
當(dāng)應(yīng)用程序運行結(jié)束后,進(jìn)入歷史服務(wù)器管理界面歌殃,如下圖所示:
點擊相應(yīng)應(yīng)用程序乔妈,可查看應(yīng)用程序具體運行情況,如下圖所示:
結(jié)語
到此CentOS下Hadoop+Spark集群搭建已經(jīng)成功完成啦氓皱,讓我們開啟愉快的大數(shù)據(jù)之旅吧褒翰!
寫在最后
聊技術(shù),不止于技術(shù)匀泊。
歡迎大家關(guān)注我的個人公眾號:WU雙优训,在這里我會與大家分享技術(shù)文章、管理知識以及個人的一些思想感悟各聘。