1 介紹
1.1 系統(tǒng)版本介紹
此文檔編寫使用的系統(tǒng)為ubuntu-18.04.1-live-server-amd64.iso版本秒咨。
1.2 軟件版本介紹
軟件 | 版本 |
---|---|
jdk | jdk-8u181-linux-x64.tar.gz |
hadoop | hadoop-2.7.7.tar.gz |
1.3 ubuntu集群服務(wù)器
主機名 | IP地址 | 服務(wù) |
---|---|---|
Master | 10.168.1.216 | ResourceManager疾忍、SecondaryNameNode识啦、NameNode |
slave01 | 10.168.1.217 | NodeManager、DataNode |
slave02 | 10.168.1.218 | NodeManager纵装、DataNode |
slave03 | 10.168.1.219 | NodeManager僚碎、DataNode |
1.4 說明
本文檔安裝jdk和ssh略過狸窘。
2 安裝hadoop集群
2.1 全局配置
2.1.1 解壓hadoop
創(chuàng)建一個hadoop的文件夾,用戶存放hadoop文件
mkdir /usr/local/hadoop
通過ftp工具把下載好的hadoop安裝包上傳到hadoop文件夾下烟号。
解壓:
cd /usr/local/hadoop
tar -vxzf hadoop-2.7.7.tar.gz
解壓完成:
移動hadoop-2.7.7文件下的文件到當前的目錄
mv ./hadoop-2.7.7/* ./
刪除hadoop-2.7.7文件夾
rm -rf ./hadoop-2.7.7
查看文件夾的所有者以及用戶組绊谭,最重要的是擁有者是否是當前用戶
如果擁有者不是當前用戶,則修改為當前用戶:
chown -R 當前用戶名 ./hadoop
2.1.2 配置hadoop
設(shè)置環(huán)境變量:
vim /etc/profile
在末尾添加:
JAVA_HOME=/usr/local/java/jdk1.8.0_181
HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME
export PATH
export HADOOP_HOME
重新加載環(huán)境變量的配置文件:
source /etc/profile
檢測:
hadoop version
2.1.3 修改配置文件
在core-site.xml 中添加
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
在 hdfs-site.xml 中添加
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
<!--副本的數(shù)量-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
在 hadoop-env.sh
中更改 JAVA_HOME
注釋掉:
export JAVA_HOME=${JAVA_HOME}
添加:
export JAVA_HOME=/usr/local/java/jdk1.8.0_181
修改slaves
文件汪拥,添加如下信息:
vim /usr/local/Hadoop/etc/Hadoop/slaves
1.2 特殊配置
2.2.1 復(fù)制三臺主機
2.2.2 設(shè)置靜態(tài)ip地址
前言
Ubuntu 18.04不再使用ifupdown
配置網(wǎng)絡(luò)龙誊,而改用netplan。在/etc/network/interfaces
配置固定IP是無效的喷楣,重啟網(wǎng)絡(luò)的命令services network restrart
或/etc/init.d/networking restart
也是無效的趟大。
使用ifupdown配置網(wǎng)絡(luò)
如果要使用之前的方式配置網(wǎng)絡(luò),需要重新安裝ifupdown:
apt install ifupdown
修改配置文件/etc/network/interfaces
:
vim /etc/network/interfaces
配置文件修改如下:
iface ens160 inet static
address 210.72.92.25
gateway 210.72.92.254
netmask 255.255.255.0
dns-nameservers 8.8.8.8
重啟網(wǎng)絡(luò)服務(wù)使配置生效
services network restrart
使用netplan配置網(wǎng)絡(luò)
Ubuntu 18.04使用netplan配置網(wǎng)絡(luò)铣焊,其配置文件是yaml格式的逊朽。安裝好Ubuntu 18.04之后,在/etc/netplan/
目錄下默認的配置文件名是50-cloud-init.yaml
曲伊,我們通過VIM修改它:
vim /etc/netplan/50-cloud-init.yaml
配置文件修改如下:
network:
ethernets:
ens160:
addresses: [10.168.1.216/24]
dhcp4: false
gateway4: 10.168.1.254
version: 2
無論是ifupdown還是netplan叽讳,配置的思路都是一致的,在配置文件里面按照規(guī)則填入IP坟募、掩碼岛蚤、網(wǎng)關(guān)、DNS等信息懈糯。注意yaml是層次結(jié)構(gòu)涤妒,需要縮進,冒號(:)表示字典赚哗,連字符(-)表示列表她紫。
重啟網(wǎng)絡(luò)服務(wù)使配置生效:
netplan apply
2.2.3 配置hosts文件
vim /etc/hosts
添加master和slaves信息:
2.2.4 本地主機名配置
首先修改
vim /etc/cloud/cloud.cfg
將disable_root:false
修改為true
:
修改主機名:
vim /etc/hostname
將10.168.1.216主機名修改為master硅堆。
將其他機器也修改為對應(yīng)的名稱,重啟所有服務(wù)器贿讹。
2.2.5 多服務(wù)器ssh免密碼登陸
由于Hadoop啟動以后渐逃,namenode是通過SSH
(Secure Shell)來啟動和停止各個節(jié)點上的各種守護進程的,這就需要在節(jié)點之間執(zhí)行指令的時候是不需要輸入密碼的方式民褂,故我們需要配置SSH使用無密碼公鑰認證的方式(安裝ssh茄菊,配置ssh遠程連接過程略過。)赊堪。
所有服務(wù)器使用rsa算法生成秘鑰和公鑰對:
ssh-keygen -t rsa
然后把master服務(wù)器中公鑰加入到授權(quán)中:
cat ./id_rsa.pub >> ./authorized_keys
使用ssh localhost
驗證是否無密碼登陸买羞。
把slave服務(wù)器中的id_rsa.pub
復(fù)制到master中:
scp .ssh/id_rsa.pub root@master:/
查看公鑰是否復(fù)制成功:
將公鑰添加到master的授權(quán)文件中:
cat /id_rsa.pub >> ~/.ssh/authorized_keys
重復(fù)上面步驟,直到所有的slave公鑰都添加到了授權(quán)文件中雹食。
將授權(quán)文件分發(fā)到每臺服務(wù)器上:
scp ~/.ssh/authorized_keys username@hostname: ~/.ssh/authorized_keys
測試通過ssh相互之間登錄:
ssh hostname
username:服務(wù)器用戶名畜普。
hostname:服務(wù)器主機名。
測試完畢重啟服務(wù)器群叶。
2.2.6 啟動hadoop
在master服務(wù)器上格式化namenode節(jié)點:
hadoop namenode -format
啟動hdfs
start-all.sh
查看相應(yīng)的進程:
jps
master:
確定3個進程全部啟動吃挑。
slave:
確定2個進程全部啟動。
訪問測試:
10.168.1.216:50070
1.3 添加datanode節(jié)點
配置一臺新的slave機器街立,根據(jù)前面的步驟配置網(wǎng)絡(luò)IP舶衬。
啟動datanode服務(wù):
hadoop-daemon.sh start datanode
啟動nodemanager服務(wù):
yarn-daemon.sh start nodemanager
如果需要在name節(jié)點啟動的時候,同時也啟動這臺新加的data節(jié)點赎离,那么需要根據(jù)特殊配置的步驟逛犹,修改hosts文件、服務(wù)器主機名梁剔、以及ssh免密登錄等虽画,才能通過name來啟動data節(jié)點。
1.4 刪除datanode節(jié)點
首先需要在hdfs-site.xml添加:
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/etc/hadoop/excludes</value>
</property>
然后在對應(yīng)位置創(chuàng)建文件:
vim /usr/local/hadoop/etc/hadoop/excludes
在文件中加入要刪除的節(jié)點名稱:
例如要刪除的節(jié)點是slave03
在NameNode上刷新所有DataNode:
hdfs dfsadmin -refreshNodes #刷新節(jié)點信息
start-balancer.sh #同步節(jié)點的數(shù)據(jù)
如下圖:表示與該節(jié)點已經(jīng)斷開了連接(因為hadoop心跳檢測是10分鐘荣病,所以如果是data節(jié)點宕機码撰,就會一直檢測,直到超時)个盆。
接下來就可以關(guān)閉data節(jié)點了:
關(guān)閉datanode服務(wù):
hadoop-daemon.sh stop datanode
關(guān)閉nodemanager服務(wù):
yarn-daemon.sh stop nodemanager