CentOS下Hadoop+Spark集群搭建

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è)人的一些思想感悟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容