Ubuntu 18.04系統Hadoop集羣配置

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版本過新導致,可以不用理會

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章