文章目錄
Hadoop集羣配置
本文檔演示採用Ubuntu 18.04系統,下載地址:http://mirrors.aliyun.com/ubuntu-releases/18.04
桌面虛擬計算機軟件採用VMware workstation 15.5.0
參考:https://www.cnblogs.com/guangluwutu/p/9705136.html
Java和Hadoop安裝及環境變量配置請參考其他教程 (注意jdk及Hadoop版本不同導致的安裝目錄不同的問題),請完成後再進行Hadoop集羣配置。
如無特別說明,則該操作是在主機上完成
前置準備
可選:拍攝快照,如配置失敗可方便回滾
更新apt:
sudo apt-get update
安裝net-tools:
sudo apt install net-tools
完整克隆若干份已經安裝配置好java和Hadoop的虛擬機作爲從機
網絡配置
修改主機名(主機和從機都要操作)
sudo gedit /etc/hostname
刪除原本的主機名
將主機的主機名修改爲master或其他
將從機1的主機名修改爲slave1或其他
以此類推
例:
master
保存後重啓
將虛擬機改爲靜態IP(主機和從機都要操作)
ifconfig
記錄下inet和netmask
依次點擊
修改losts
sudo gedit /etc/hosts
在末尾添加:
主機inet 主機主機名
從機1inet 從機1主機名
……
例:
192.168.159.130 master
192.168.159.131 salve1
配置SSH無密碼登陸節點
安裝及啓動SSH服務(主機和從機都要操作)
安裝服務(一路回車即可):
sudo apt-get install openssh-server
啓動服務:
sudo /etc/init.d/ssh restart
關閉防火牆:
sudo ufw disable
執行以下命令看是否成功運行:
ps -e | grep ssh
如果成功會出現如下倆個進程:
生成SSH公鑰
cd ~/.ssh # 如果沒有該目錄,先執行一次ssh localhost
rm ./id_rsa* # 刪除之前生成的公匙(如果有)
ssh-keygen -t rsa # 一直按回車就可以
讓 master 節點可以無密碼 SSH 本機:
cat ./id_rsa.pub >> ./authorized_keys
驗證:
ssh 主機主機名
如成功會出現如下字符:
退出:
exit
傳輸公鑰(過程中需要輸入從機的密碼)
scp ~/.ssh/id_rsa.pub 從機用戶名@從機主機名:/home/從機用戶名/
例:
scp ~/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop/
把公鑰加入授權(在從機操作)
mkdir ~/.ssh # 如果不存在該文件夾需先創建,若已存在則忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
驗證:
ssh 從機主機名
如成功會出現如下字符:
退出:
exit
配置分佈式集羣環境
修改配置文件
修改slaves:
sudo gedit /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/slaves
此文件記錄的是將要作爲 Datanode 節點的名字,將從機主機名寫入。如果想讓主機同時作爲 Datanode 節點則保留localhost。
從機1主機名
從機2主機名
……
例:
slave1
修改core-site.xml:
sudo gedit /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/core-site.xml
覆蓋<configuration>標籤:
<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:
sudo gedit /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/hdfs-site.xml
dfs.replication爲從機數量,請根據實際更改
覆蓋<configuration>標籤:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</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:
sudo gedit /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/mapred-site.xml
可能默認文件名爲 mapred-site.xml.template ,此時需要重命名:
mv mapred-site.xml.template mapred-site.xml
覆蓋<configuration>標籤:
<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:
sudo gedit /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/yarn-site.xml
覆蓋<configuration>標籤:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
將主機的/usr/local/hadoop文件夾傳輸到從機:
在主機執行:
cd /usr/local
sudo rm -r ./hadoop/tmp # 刪除 Hadoop 臨時文件
sudo rm -r ./hadoop//hadoop-2.9.2/logs/* # 刪除日誌文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先壓縮再複製
cd ~ #跳轉到有壓縮包的路徑下
scp ./hadoop.master.tar.gz 從機主機名:/home/從機用戶名
例:
scp ./hadoop.master.tar.gz slave1:/home/hadoop
在從機執行:
sudo rm -r /usr/local/hadoop
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R 從機用戶名 /usr/local/hadoop
例:
sudo chown -R hadoop /usr/local/hadoop
啓動Hadoop
首次啓動需要格式化:
hdfs namenode -format
啓動:
start-all.sh
mr-jobhistory-daemon.sh start historyserver
驗證(主機和從機都要操作):
jps
如成功,NameNode節點應有NameNode、ResourceManager、SecondrryNameNode、JobHistoryServe 4個進程,DataNode節點應有DataNode、 NodeManager 2個進程,缺一不可。
主機:
從機:
檢查DataNode節點數量:
hdfs dfsadmin -report
若成功,則Live datanode數量與實際數量相等。
附錄
從機沒有DataNode進程解決方案
原因
主機和從機的clusterID不一致
解決方法
將主機和從機的/usr/local/hadoop/tmp文件夾和/usr/local/hadoop/hadoop-2.9.2/logs文件夾刪除,主機再次格式化即可解決問題
WARNING: An illegal……原因
JDK版本過新導致,可以不用理會