第二十三章 HDFS—叢集擴容及縮容
阿新 • • 發佈:2021-09-10
一、新增白名單
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