1. 程式人生 > 其它 >HADOOP 優化(2):HDFS (2)多目錄/叢集擴容及縮容

HADOOP 優化(2):HDFS (2)多目錄/叢集擴容及縮容

3HDFS—多目錄

3.1 NameNode目錄配置

1)NameNode本地目錄可以配置成多個,每個目錄存放內容相同增加了可靠性

2)具體配置如下

1)在hdfs-site.xml檔案新增如下內容

<property>
     <name>dfs.namenode.name.dir</name>
     <value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name2</value>
</property>

注意因為每臺伺服器節點的磁碟情況不同

所以這個配置配完之後,可以選擇不分發

2)停止叢集,刪除三臺節點的datalogs中所有資料。

[atguigu@hadoop102 hadoop-3.1.3]$ rm -rf data/ logs/

[atguigu@hadoop103 hadoop-3.1.3]$ rm -rf data/ logs/

[atguigu@hadoop104 hadoop-3.1.3]$ rm -rf data/ logs/

3)格式化叢集並啟動。

[atguigu@hadoop102 hadoop-3.1.3]$ bin/hdfs namenode -format

[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh

3)檢視結果

[atguigu@hadoop102 dfs]$ ll

總用量 12

drwx------. 3 atguigu atguigu 4096 1211 08:03 data

drwxrwxr-x. 3 atguigu atguigu 4096 1211 08:03 name1

drwxrwxr-x. 3 atguigu atguigu 4096 1211 08:03 name2

檢查name1name2裡面的內容,發現一模一樣。

3.2DataNode目錄配置

1DataNode可以配置成多個目錄,每個目錄儲存的資料不一樣資料不是副本

2)具體配置如下

在hdfs-site.xml檔案

新增如下內容

<property>
     <name>dfs.datanode.data.dir</name>
     <value>file://${hadoop.tmp.dir}/dfs/data1,file://${hadoop.tmp.dir}/dfs/data2</value>
</property>

3)檢視結果

[atguigu@hadoop102 dfs]$ ll
總用量 12
drwx------. 3 atguigu atguigu 4096 4月   4 14:22 data1
drwx------. 3 atguigu atguigu 4096 4月   4 14:22 data2
drwxrwxr-x. 3 atguigu atguigu 4096 12月 11 08:03 name1
drwxrwxr-x. 3 atguigu atguigu 4096 12月 11 08:03 name2

4)向叢集上傳一個檔案,再次觀察兩個資料夾裡面的內容發現不一致(一個有數一個沒有)

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -put wcinput/word.txt /

3.3叢集資料均衡之磁碟間資料均衡

生產環境,由於硬碟空間不足,往往需要增加一塊硬碟。剛載入的硬碟沒有資料時,可以執行磁碟資料均衡命令。(Hadoop3.x新特性)

1)生成均衡計劃我們只有一塊磁碟,不會生成計劃

hdfs diskbalancer -plan hadoop103

2)執行均衡計劃

hdfs diskbalancer -execute hadoop103.plan.json

3)檢視當前均衡任務的執行情況

hdfs diskbalancer -query hadoop103

4)取消均衡任務

hdfs diskbalancer -cancel hadoop103.plan.json

4HDFS—叢集擴容及縮容

4.1新增白名單

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

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

配置白名單步驟如下:

1)在NameNode節點的/opt/module/hadoop-3.1.3/etc/hadoop目錄分別創whitelist blacklist檔案

1)建立白名單

[atguigu@hadoop102 hadoop]$ vimwhitelist

whitelist中新增如下主機名稱,假如叢集正常工作的節點為102 103

hadoop102

hadoop103

2)建立黑名單

[atguigu@hadoop102 hadoop]$ touch blacklist

保持空的就可以

2)在hdfs-site.xml配置檔案中增加dfs.hosts配置引數

<!-- 白名單 -->
<property>
     <name>dfs.hosts</name>
     <value>/opt/module/hadoop-3.1.3/etc/hadoop/whitelist</value>
</property>

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

3)分發配置檔案whitelisthdfs-site.xml

[atguigu@hadoop104 hadoop]$ xsync hdfs-site.xml whitelist

4)第一次新增白名單必須重啟叢集,不是第一次,只需要重新整理NameNode節點即可

[atguigu@hadoop102 hadoop-3.1.3]$ myhadoop.sh stop

[atguigu@hadoop102 hadoop-3.1.3]$ myhadoop.sh start

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

6)在hadoop104上執行上傳資料資料失敗

[atguigu@hadoop104 hadoop-3.1.3]$ hadoop fs -put NOTICE.txt /

7)二次修改白名單,增加hadoop104

[atguigu@hadoop102 hadoop]$ vimwhitelist

修改為如下內容

hadoop102

hadoop103

hadoop104

8)重新整理NameNode

[atguigu@hadoop102 hadoop-3.1.3]$ hdfs dfsadmin -refreshNodes

Refresh nodes successful

9)在web瀏覽器上檢視DNhttp://hadoop102:9870/dfshealth.html#tab-datanode

4.2服役新伺服器

1需求

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

2環境準備

1)在hadoop100主機克隆一臺hadoop105主機

2)修改IP地址和主機名稱

[root@hadoop105 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

[root@hadoop105 ~]# vim /etc/hostname

3拷貝hadoop102/opt/module目錄和/etc/profile.d/my_env.shhadoop105

[atguigu@hadoop102 opt]$ scp -r module/* atguigu@hadoop105:/opt/module/

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

[atguigu@hadoop105 hadoop-3.1.3]$ source /etc/profile

4)刪除hadoop105Hadoop的歷史資料,datalog資料

[atguigu@hadoop105 hadoop-3.1.3]$ rm -rf data/ logs/

5)配置hadoop102hadoop103hadoop105ssh無密登入

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop105

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

3)服役新節點具體步驟

1)直接啟動DataNode即可關聯到叢集

[atguigu@hadoop105 hadoop-3.1.3]$ hdfs --daemon start datanode

[atguigu@hadoop105 hadoop-3.1.3]$ yarn --daemon start nodemanager

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

1)在白名單whitelist中增加hadoop104、hadoop105,並重啟叢集

[atguigu@hadoop102 hadoop]$ vim whitelist

修改為如下內容

hadoop102

hadoop103

hadoop104

hadoop105

2)分發

[atguigu@hadoop102 hadoop]$ xsync whitelist

3)重新整理NameNode

[atguigu@hadoop102 hadoop-3.1.3]$ hdfs dfsadmin -refreshNodes

Refresh nodes successful

5)在hadoop105上上傳檔案

[atguigu@hadoop105 hadoop-3.1.3]$ hadoop fs -put /opt/module/hadoop-3.1.3/LICENSE.txt /

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

4.3伺服器間資料均衡

1)企業經驗:

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

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

2)開啟資料均衡命令:

[atguigu@hadoop105 hadoop-3.1.3]$ sbin/start-balancer.sh -threshold 10

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

3)停止資料均衡命令:

[atguigu@hadoop105 hadoop-3.1.3]$ sbin/stop-balancer.sh

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

4.4 黑名單退役伺服器

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

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

黑名單配置步驟如下:

1)編輯/opt/module/hadoop-3.1.3/etc/hadoop目錄blacklist檔案

[atguigu@hadoop102hadoop]vim blacklist

新增如下主機名稱(要退役的節點)

hadoop105

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

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

2)分發配置檔案blacklisthdfs-site.xml

[atguigu@hadoop104 hadoop]$ xsync hdfs-site.xml blacklist

3)第一次新增黑名單必須重啟叢集,不是第一次,只需要重新整理NameNode節點即可

[atguigu@hadoop102 hadoop-3.1.3]$ hdfs dfsadmin -refreshNodes

Refresh nodes successful

4)檢查Web瀏覽器,退役節點的狀態為decommission in progress(退役),說明資料節點正在複製塊到其他節點

5)等待退役節點狀態decommissioned所有塊已經複製完成),停止該節點及節點資源管理器。注意:如果副本數是3服役的節點小於等於3,是不能退役成功的,需要修改副本數後才能退役

[atguigu@hadoop105 hadoop-3.1.3]$ hdfs --daemon stop datanode

stopping datanode

[atguigu@hadoop105 hadoop-3.1.3]$ yarn--daemon stop nodemanager

stopping nodemanager

6)如果資料不均衡,可以用命令實現叢集的再平衡

[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-balancer.sh -threshold 10

本文來自部落格園,作者:秋華,轉載請註明原文連結:https://www.cnblogs.com/qiu-hua/p/15229240.html