1. 程式人生 > 其它 >第二十三章 HDFS—叢集擴容及縮容

第二十三章 HDFS—叢集擴容及縮容

一、新增白名單

1.概述

白名單:表示在白名單的主機IP地址可以,用來儲存資料。

企業中:配置白名單,可以儘量防止黑客惡意訪問攻擊。

2.具體配置

#1.在NameNode節點的/opt/module/hadoop/etc/hadoop目錄下分別建立whitelist和blacklist檔案
1)建立白名單
[delopy@hadoop102 hadoop]$ vim whitelist
在whitelist中新增如下主機名稱,假如叢集正常工作的節點為102 103 
hadoop102
hadoop103

2)建立黑名單
[delopy@hadoop102 hadoop]$ touch blacklist
保持空的就可以

#2.在hdfs-site.xml配置檔案中增加dfs.hosts配置引數
<!-- 白名單 -->
<property>
     <name>dfs.hosts</name>
     <value>/opt/module/hadoop/etc/hadoop/whitelist</value>
</property>

<!-- 黑名單 -->
<property>
     <name>dfs.hosts.exclude</name>
     <value>/opt/module/hadoop/etc/hadoop/blacklist</value>
</property>

3.分發配置

# 分發配置檔案whitelist,hdfs-site.xml
[delopy@hadoop102 hadoop]$ xsync hdfs-site.xml whitelist

4.重啟叢集

# 第一次新增白名單必須重啟叢集,不是第一次,只需要重新整理NameNode節點即可
[delopy@hadoop102 hadoop]$ myhadoop.sh stop
[delopy@hadoop102 hadoop]$ myhadoop.sh start

5.瀏覽器訪問測試

# 在web瀏覽器上檢視DN,http://hadoop102:9870/dfshealth.html#tab-datanode

6.測試結果

#1.在hadoop104上執行上傳資料資料失敗
[delopy@hadoop104 hadoop]$ hadoop fs -put NOTICE.txt /

#2.二次修改白名單,增加hadoop104
[delopy@hadoop102 hadoop]$ vim whitelist
修改為如下內容
hadoop102
hadoop103
hadoop104

#3.分發配置
[delopy@hadoop102 hadoop]$ xsync hdfs-site.xml whitelist

#4.重新整理NameNode
[delopy@hadoop102 hadoop]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful

#5.在web瀏覽器上檢視DN,http://hadoop102:9870/dfshealth.html#tab-datanode

二、服役新伺服器

1.需求

隨著公司業務的增長,資料量越來越大,原有的資料節點的容量已經不能滿足儲存資料的需求,需要在原有叢集基礎上動態新增新的資料節點。

2.環境準備

#1.在hadoop100主機上再克隆一臺hadoop105主機

#2.修改IP地址和主機名稱並建立部署使用者
[root@hadoop105 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@hadoop105 ~]# vim /etc/hostname
[root@hadoop105 ~]# useradd delopy
[root@hadoop105 ~]# passwd delopy

#3.拷貝hadoop102的/opt/module目錄和/etc/profile.d/my_env.sh到hadoop105
[delopy@hadoop102 opt]$ scp -r module/* delopy@hadoop105:/opt/module/

[delopy@hadoop102 opt]$ sudo scp /etc/profile.d/my_env.sh root@hadoop105:/etc/profile.d/my_env.sh

[delopy@hadoop105 hadoop]$ source /etc/profile

#4.刪除hadoop105上Hadoop的歷史資料,data和log資料
[delopy@hadoop105 hadoop]$ rm -rf data/ logs/

#5.配置hadoop102和hadoop103到hadoop105的ssh無密登入
[delopy@hadoop102 .ssh]$ ssh-copy-id hadoop105

[delopy@hadoop103 .ssh]$ ssh-copy-id hadoop105

3.服役新節點具體步驟

#1.直接啟動DataNode,即可關聯到叢集
[delopy@hadoop105 ~]$ hdfs --daemon start datanode
[delopy@hadoop105 ~]$ yarn --daemon start nodemanager

4.在白名單中增加新服役的伺服器

#1.在白名單whitelist中增加hadoop104、hadoop105,並重啟叢集
[delopy@hadoop102 hadoop]$ vim whitelist
修改為如下內容
hadoop102
hadoop103
hadoop104
hadoop105

#2.分發配置檔案
[delopy@hadoop102 hadoop]$ xsync whitelist

#3.重新整理NameNode
[delopy@hadoop102 hadoop]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful

5.在hadoop105上上傳檔案

[delopy@hadoop105 ~]$ hadoop fs -put /opt/module/hadoop/LICENSE.txt /

思考:如果資料不均衡(hadoop105資料少,其他節點資料多),怎麼處理?

三、伺服器間資料均衡

1.企業經驗

在企業開發中,如果經常在hadoop102和hadoop104上提交任務,且副本數為2,由於資料本地性原則,就會導致hadoop102和hadoop104資料過多,hadoop103儲存的資料量小。

另一種情況,就是新服役的伺服器資料量比較少,需要執行叢集均衡命令。

2.開啟資料均衡命令

[delopy@hadoop105 hadoop]$ start-balancer.sh -threshold 10

對於引數10,代表的是叢集中各個節點的磁碟空間利用率相差不超過10%,可根據實際情況進行調整。

3.停止資料均衡命令

[delopy@hadoop105 hadoop]$ stop-balancer.sh

ps:由於HDFS需要啟動單獨的Rebalance Server來執行Rebalance操作,所以儘量不要在NameNode上執行start-balancer.sh,而是找一臺比較空閒的機器。

四、黑名單退役伺服器

1.概述

黑名單:表示在黑名單的主機IP地址不可以,用來儲存資料。

企業中:配置黑名單,用來退役伺服器。

2.具體配置

#1.編輯/opt/module/hadoop/etc/hadoop目錄下的blacklist檔案
[delopy@hadoop102 hadoop] vim blacklist
新增如下主機名稱(要退役的節點)
hadoop105

ps:如果白名單中沒有配置,需要在hdfs-site.xml配置檔案中增加dfs.hosts配置引數

<!-- 黑名單 -->
<property>
     <name>dfs.hosts.exclude</name>
     <value>/opt/module/hadoop/etc/hadoop/blacklist</value>
</property>

#2.分發配置檔案blacklist,hdfs-site.xml
[delopy@hadoop102 hadoop]$ xsync hdfs-site.xml blacklist

#3.第一次新增黑名單必須重啟叢集,不是第一次,只需要重新整理NameNode節點即可
[delopy@hadoop102 hadoop]$ myhadoop.sh stop
[delopy@hadoop102 hadoop]$ myhadoop.sh start
[delopy@hadoop102 hadoop]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful

#4.檢查Web瀏覽器,退役節點的狀態為decommission in progress(退役中),說明資料節點正在複製塊到其他節點
#5.等待退役節點狀態為decommissioned(所有塊已經複製完成),停止該節點及節點資源管理器。注意:如果副本數是3,服役的節點小於等於3,是不能退役成功的,需要修改副本數後才能退役
[delopy@hadoop105 hadoop]$ hdfs --daemon stop datanode
stopping datanode

[delopy@hadoop105 hadoop]$ yarn --daemon stop nodemanager
stopping nodemanager

#6.如果資料不均衡,可以用命令實現叢集的再平衡
[delopy@hadoop102 hadoop]$ sbin/start-balancer.sh -threshold 10