1.1 安裝環(huán)境
操作系統(tǒng)deepin 15.11, VMware Workstation,hadoop 3.1.3 版本。在deepin 操作系統(tǒng)中安裝 VMware Workstation,在 VMware Workstation中安裝兩個(gè)deepin系統(tǒng),采用兩個(gè)節(jié)點(diǎn)作為集群環(huán)境,一個(gè)作為Master節(jié)點(diǎn),一個(gè)作為Slave 節(jié)點(diǎn)。
1.2 hadoop的安裝準(zhǔn)備
在Master節(jié)點(diǎn)和Slave節(jié)點(diǎn)都需要進(jìn)行如下準(zhǔn)備工作,主要是配置hadoop用戶,安裝SSH server和安裝Java 環(huán)境。
在安裝虛擬機(jī)系統(tǒng)時(shí),每個(gè)系統(tǒng)都創(chuàng)建hadoop用戶。 選擇一個(gè)節(jié)點(diǎn)作為Master, ctrl+alt+t打開終端,通過命令行方式進(jìn)行安裝,更新apt,執(zhí)行如下命令。
sudo apt-get update
安裝vim ,用于后續(xù)修改配置文件。
sudo apt-get install vim
安裝SSH并登錄主機(jī)。
sudo apt-get install openssh-server
ssh localhost
配置SSH無密碼登錄,由于hadoop 遠(yuǎn)程登錄只能無密碼登錄,因此需要配置無密登錄。
退出登錄:
exit cd ~/.ssh/sh-keygen -t rsa
cat ./id_rsa.pub
>> ./authorized_keys
安裝Java 環(huán)境,采用jdk-8u162-linux-x64.tar.gz,在Documents/目錄下。
cd /usr/lib
sudo mkdir jvm
cd ~/Documents/
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm
配置環(huán)境變量,在配置文件開頭位置添加如下內(nèi)容。 打開配置文件:
cd ~vim ~/.bashrc
添加內(nèi)容:
export JAVA_HOME
= /usr/lib/jvm/jdk1.8.0_162
export JRE_HOME
= ${JAVA_HOME} /jre
export CLASSPATH
= .:
${JAVA_HOME} /lib:
${JRE_HOME} /lib
export PATH
= ${JAVA_HOME} /bin:
$PATH
查看jdk是否安裝成功。
Java -version
1.3 安裝Hadoop 在Master 節(jié)點(diǎn)安裝hadoop ,并把/usr/local/中的hadoop 文件夾復(fù)制到其他Slave節(jié)點(diǎn)的/usr/local目錄下。
hadoop-3.1.3.tar.gz 在目錄~/Documents/下,安裝到/usr/local目錄下。
cd ~/Documents/
sudo tar zxf hadoop3.1.3.tar.gz -C /usr/local
修改文件夾名,并修改文件的權(quán)限。
cd /usr/local/
sudo mv ./hadoop-3.1.3/ ./hadoop
sudo chown -R hadoop ./hadoop
查看是否安裝成功。
cd /usr/local/hadoop./bin/hadoop version
1.4 Hadoop集群配置
網(wǎng)絡(luò)配置,配置每個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò),采用橋接來實(shí)現(xiàn)節(jié)點(diǎn)之間的互聯(lián),通過NAT模式連接網(wǎng)絡(luò)。 1)通過Edit->Virtual Netwrok Editor,點(diǎn)擊Add Network添加一個(gè)網(wǎng)絡(luò),設(shè)置連接方式為橋接。 2)設(shè)置vmnet8中的子網(wǎng)號(hào)為192.168.138.0,子網(wǎng)掩碼255.255.255.0和網(wǎng)關(guān)192.168.138.133,點(diǎn)擊NAT Setting即可設(shè)置網(wǎng)關(guān)。
配置需要每個(gè)節(jié)點(diǎn)主機(jī)的IP 地址,在子網(wǎng)192.168.138.0下,設(shè)置IP地址,Master 節(jié)點(diǎn)的IP為:192.168.138.128, Slave節(jié)點(diǎn)的IP 為:192.168.138.131。 1)通過ifconfig來查看網(wǎng)卡的IP地址,如下圖所示,ens33即為橋接網(wǎng)卡。
2)節(jié)點(diǎn)計(jì)算機(jī)靜態(tài)IP 配置,執(zhí)行如下命令打開配置文件。 Master節(jié)點(diǎn):
sudo vim /etc/network/interfaces
添加內(nèi)容:
auto ens33
iface ens33 inet static
address 192.168.138.128
通過如下命令使設(shè)置生效,出現(xiàn)OK字樣則成功:
sudo /etc/init.d/networking restart
Slave節(jié)點(diǎn): 用同樣的方法設(shè)置,添加的內(nèi)容為:
auto ens33
iface ens33 inet static
address 192.168.138.131
修改主機(jī)名,將Master節(jié)點(diǎn)的主機(jī)名為Master,將Slave節(jié)點(diǎn)的主機(jī)名改為Slave,分別在兩個(gè)節(jié)點(diǎn)中執(zhí)行如下命令。 sudo vim /etc/hostname 在Master節(jié)點(diǎn)和Slave節(jié)點(diǎn)修改自己節(jié)點(diǎn)的IP 映射,添加如下相同內(nèi)容。 執(zhí)行如下命令,注釋掉文件中除127.0.0.1 localhost 的其他的IP 地址映射。
sudo vim /etc/hosts添加IP映射:192.168.138.128 Master192.168.138.131 Slave
重啟每個(gè)節(jié)點(diǎn),完成主機(jī)名更新。 測(cè)試每個(gè)節(jié)點(diǎn)是否能Ping 通,通過如下命令測(cè)試。
ping Master -c 3
ping Slave -c 3
SSH無密嗎登錄節(jié)點(diǎn),配置Master 節(jié)點(diǎn)可以遠(yuǎn)程登錄其他Slave節(jié)點(diǎn)。由于修改過主機(jī)名,所以需要?jiǎng)h除原來的SSH 公鑰。在Master節(jié)點(diǎn)執(zhí)行如下命令生成公鑰。
cd ~/.ssh
rm ./id_rsa*ssh-keygen -t rsa
讓Master 節(jié)點(diǎn)能無密登錄SSH 本機(jī),在Master節(jié)點(diǎn)執(zhí)行如下命令.
cat ./id_rsa.pub
>> ./authorized_keys
通過遠(yuǎn)程拷貝文件,將主機(jī)Master ssh公鑰傳輸?shù)絊lave 節(jié)點(diǎn)。
scp ~/.ssh/id_rsa.pub hadoop@Slave:/home/hadoop/
在Slave 節(jié)點(diǎn)將 ssh 公鑰加入授權(quán),執(zhí)行如下命令,需要?jiǎng)h除原先SSH公鑰。
mkdir ~/.ssh
cat ~/id_rsa.pub
>> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
11. 在Master 節(jié)點(diǎn)上測(cè)試遠(yuǎn)程登錄Slave 節(jié)點(diǎn),可以看到主機(jī)名改變?yōu)镾lave。
ssh Slave
12. 在Master節(jié)點(diǎn)配置hadoop 的PATH 變量,則可以直接使用hadoop,hdfs 相關(guān)命令而不需要轉(zhuǎn)到相關(guān)目錄。 打開配置文件:
vim ~/.bashrc添加內(nèi)容:
export PATH
= $PATH :/usr/local/hadoop/bin:/usr/loacl/hadoop/sbin使配置生效:
source ~/.bashrc
在Master節(jié)點(diǎn)修改配置目錄/usr/local/hadoop/etc/hadoop目錄下的5個(gè)配置文件。
workers 文件 Master作為NameNode,Slave作為 DataNode。將DataNode的主機(jī)名寫入workers 文件,刪除localhost。添加如下內(nèi)容。
Slave
core-site.xml 修改標(biāo)簽中的內(nèi)容如下。
< configuration
> < property
> < name
> fs.defaultFS
< /name
> < value
> hdfs://Master:9000
< /value
> < /property
> < property
> < name
> hadoop.tmp.dir
< /name
> < value
> file:/usr/local/hadoop/tmp
< /value
> < description
> Abase
for other temporary directories.
< /description
> < /property
> < /configuration
>
hdfs-site.xml 修改標(biāo)簽中的內(nèi)容如下。
< configuration
> < property
> < name
> dfs.namenode.secondary.http-address
< /name
> < value
> Master:50090
< /value
> < /property
> < property
> < name
> dfs.replication
< /name
> < value
> 1
< /value
> < /property
> < property
> < name
> dfs.namenode.name.dir
< /name
> < value
> file:/usr/local/hadoop/tmp/dfs/name
< /value
> < /property
> < property
> < name
> dfs.datanode.data.dir
< /name
> < value
> file:/usr/local/hadoop/tmp/dfs/data
< /value
> < /property
> < /configuration
>
mapred-site.xml 修改標(biāo)簽中的內(nèi)容如下。
< configuration
> < property
> < name
> mapreduce.framework.name
< /name
> < value
> yarn
< /value
> < /property
> < property
> < name
> mapreduce.jobhistory.address
< /name
> < value
> Master:10020
< /value
> < /property
> < property
> < name
> mapreduce.jobhistory.webapp.address
< /name
> < value
> Master:19888
< /value
> < /property
> < /configuration
>
yarn-site.xml 修改標(biāo)簽中的內(nèi)容如下。
< configuration
> < property
> < name
> yarn.resourcemanager.hostname
< /name
> < value
> Master
< /value
> < /property
> < property
> < name
> yarn.nodemanager.aux-services
< /name
> < value
> mapreduce_shuffle
< /value
> < /property
> < /configuration
>
在Master節(jié)點(diǎn)通過遠(yuǎn)程拷貝Master 節(jié)點(diǎn)的/usr/loacl/hadoop目錄到其他Slave 節(jié)點(diǎn)。首先先刪除之前的臨時(shí)文件和日志。
cd /usr/local
sudo rm -r ./hadoop/tmp
sudo rm -r ./hadoop/logs/*
tar -zcf ~/hadoop.master.tar.gz ./hadoop
cd ~
scp ./hadoop.master.tar.gz Slave:/home/hadoop
在Slave 節(jié)點(diǎn)解壓文件。
sudo rm -r /usr/local/hadoop
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/hadoop
在Master 節(jié)點(diǎn)執(zhí)行 NameNode 的格式化。
hdfs namenode -format
17. 在Master 節(jié)點(diǎn)上啟動(dòng)hadoop 集群,執(zhí)行如下命令。
start-dfs.shstart-yarn.shmr-jobhistory-daemon.sh start historyserver
18. 通過jps 查看集群的節(jié)點(diǎn)啟動(dòng)的進(jìn)程信息,分別在Master 和 Slave 節(jié)點(diǎn)執(zhí)行jps。 Master 節(jié)點(diǎn): Slave 節(jié)點(diǎn):
在Master節(jié)點(diǎn)查看集群的DataNode 是否正常啟動(dòng)。
hdfs dfsadmin -report
通過網(wǎng)頁查看Slave 節(jié)點(diǎn)的相關(guān)信息:
關(guān)閉hadoop集群。
stop-yarn.shstop-dfs.shmr-jobhistory-daemon.sh stop historyserver或者通過如下命令關(guān)閉集群。stop-all.sh
1.5 總結(jié)
問題1:
Master 節(jié)點(diǎn)NameNode 沒有啟 動(dòng),DataNode節(jié)點(diǎn)卻啟動(dòng)了; 執(zhí)行hdfs dfsadmin -report命令出現(xiàn)如下信息: report:Call From Master/192.168.138.128 to Master:9000 failed on connection exception: java.net.ConnectException:拒絕連接;For more details see :http://wiki.apache.org/hadoop/ConnectionRefused
解決:分析發(fā)現(xiàn),我沒有配置slaves文件,在hadoop3.1.3版本中,不存在slaves文件,通過網(wǎng)絡(luò)查詢資料以及和同學(xué)交流,我發(fā)現(xiàn)slaves文件更改成了workes文件,因此配置workes文件;由于前后操作不當(dāng),因此導(dǎo)致了此問題。通過如下方式解決: 關(guān)閉集群,刪除臨時(shí)文件和日志,重新執(zhí)行hdfs namenode -format.
問題2:
當(dāng)關(guān)機(jī)重啟后,集群無法啟動(dòng),無法ping 通 ;
解決:分析發(fā)現(xiàn)各節(jié)點(diǎn)的IP發(fā)生了變化,導(dǎo)致 集群無法啟動(dòng),是由于采用了NAT 進(jìn)行網(wǎng)絡(luò)連接,NAT模式在每次重啟計(jì)算機(jī)會(huì)動(dòng)態(tài)分配IP 地址;采用橋接來實(shí)現(xiàn)各節(jié)點(diǎn)的連通,配置靜態(tài)IP.
參考文獻(xiàn)
1.廈門大學(xué)數(shù)據(jù)庫實(shí)驗(yàn)室,http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/ 2.網(wǎng)絡(luò)配置,https://www.cnblogs.com/guangluwutu/p/9705136.html, https://www.cnblogs.com/lilongxin/p/9034245.html
總結(jié)
以上是生活随笔 為你收集整理的Hadoop分布式集群安装配置 的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。