您好,登錄后才能下訂單哦!
本篇內容主要講解“HDFS免重啟掛載新磁盤的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“HDFS免重啟掛載新磁盤的方法”吧!
在生產環境中,集群節點磁盤大小不同,其使用率也會不同,HDFS雖有均衡策略,但也會有數據不平衡的情況,有些節點磁盤就會被打滿,然后這個節點就不健康了(Unhealthy Nodes),Yarn的磁盤閾值檢查(yarn.nodemanager.disk-health-checker.min-healthy-disks),默認是90%,超過這個值就會不健康,集群有個節點不健康,就會導致任務運行緩慢,之后任務再擠壓,Yarn資源被集中占用,最終影響上層服務。
磁盤空間不足,待擴容,可動態增刪磁盤
yarn資源不足,待優化,可動態調整
官方文檔:DataNode Hot Swap Drive
DataNode Hot Swap Drive
Datanode supports hot swappable drives. The user can add or replace HDFS data volumes without shutting down the DataNode. The following briefly describes the typical hot swapping drive procedure:
If there are new storage directories, the user should format them and mount them appropriately.
The user updates the DataNode configuration
dfs.datanode.data.dir
to reflect the data volume directories that will be actively in use.The user runs
dfsadmin -reconfig datanode HOST:PORT start
to start the reconfiguration process. The user can usedfsadmin -reconfig datanode HOST:PORT status
to query the running status of the reconfiguration task.Once the reconfiguration task has completed, the user can safely
umount
the removed data volume directories and physically remove the disks.
經過谷歌翻譯如下:
DataNode 熱插拔驅動器
Datanode 支持熱插拔驅動器。用戶可以在不關閉 DataNode 的情況下添加或替換 HDFS 數據卷。下面簡要介紹典型的熱插拔驅動器過程:
如果有新的存儲目錄,用戶應該格式化它們并適當地掛載它們。
用戶更新 DataNode 配置
dfs.datanode.data.dir
以反映將被積極使用的數據卷目錄。用戶運行
dfsadmin -reconfig datanode HOST:PORT start
來啟動重新配置過程。用戶可以使用dfsadmin -reconfig datanode HOST:PORT status
查詢重配置任務的運行狀態。重新配置任務完成后,用戶可以安全地卸載已移除的數據卷目錄并物理移除磁盤。
我們先說添加新的磁盤,大意就是不需要重啟任何節點,在需要添加磁盤的節點上,添加好磁盤,這個需要運維操作,就是掛載一個新目錄,文檔中是說要配置DataNode的目錄,這里我們建議加上NameNode的目錄dfs.namenode.name.dir
,然后再執行一個使配置生效的命令,最后查看配置狀態。
這里假設已有集群,需要加磁盤的節點為node2。運維也已經幫我們掛載好磁盤,新磁盤目錄為/data2
。
在node2上添加新目錄,數據目錄和元數據目錄
mkdir -p /data2/soft/hadoop/tmp/dfs/data
mkdir -p /data2/soft/hadoop/tmp/dfs/name
修改節點node2的配置文件hdfs-site.xml,主要兩個屬性
修改前
<!--指定hdfs中namenode的存儲位置--> <property> <name>dfs.namenode.name.dir</name> <value>/data/soft/hadoop/tmp/dfs/name</value> </property> <!--指定hdfs中datanode的存儲位置--> <property> <name>dfs.datanode.data.dir</name> <value>/data/soft/hadoop/tmp/dfs/data</value> </property>
修改后
<!--指定hdfs中namenode的存儲位置--> <property> <name>dfs.namenode.name.dir</name> <value>/data/soft/hadoop/tmp/dfs/name,/data2/soft/hadoop/tmp/dfs/name</value> </property> <!--指定hdfs中datanode的存儲位置--> <property> <name>dfs.datanode.data.dir</name> <value>/data/soft/hadoop/tmp/dfs/data,/data2/soft/hadoop/tmp/dfs/data</value> </property>
重新配置DataNode的配置,使配置生效。
hdfs dfsadmin -reconfig datanode node2:50020 start
hdfs dfsadmin -reconfig datanode node2:50020 status
HDFS數據本身并不總是均勻的放置在DataNode中,在添加新磁盤后,我們需要重新平衡下數據,HDFS為我們提供了一個工具,可以分析數據塊放的位置和跨 DataNode 重新平衡數據:balancer
官方文檔:hdfs balancer
hdfs balancer [-threshold <threshold>]:磁盤容量百分百,判斷集群是否平衡的目標參數,每一個 datanode 存儲使用率和集群總存儲使用率的差值都應該小于這個閥值,越小越平衡,默認10,越大平衡越快。 [-policy <policy>]:datanode(默認):如果每個數據節點都是平衡的,則集群是平衡的。blockpool:如果每個數據節點中的每個塊池都是平衡的,則集群是平衡的。 [-exclude [-f <hosts-file> | <comma-separated list of hosts>]]:將指定的數據節點排除在平衡器的平衡之外。 [-include [-f <hosts-file> | <comma-separated list of hosts>]]:僅包括要由平衡器平衡的指定數據節點。 [-idleiterations <idleiterations>]:rebalanecing server啟動的線程數,默認5。
在平衡時受帶寬影響,每個數據節點每秒使用的最大字節數是有限的,所以我們先臨時設置這個值,此值會覆蓋hdfs-site.xml中dfs.datanode.balance.bandwidthPerSec
的值,默認是1M,本操作命令不會持久,命令如下:
hdfs dfsadmin -setBalancerBandwidth 104857600
其他值:1024*1024=1M(1048576),52428800=50M,104857600=100M
本次執行平衡命令,磁盤平衡目標數為20 nohup hdfs balancer -threshold 20 > balancer.log &
平衡所有節點 nohup hdfs balancer > balancer.log &
平衡指定節點,磁盤平衡目標數為10 nohup hdfs balancer -include node7,node9,node10,node11 -threshold 10 > balancer.log &
平衡指定節點,磁盤平衡目標數,啟動線程數為10 nohup hdfs balancer -include node7,node9,node10,node11 -threshold 10 -idleiterations 10 > balancer.log &
注(可選):一般在平衡時,可以先停止存儲比較高的節點上的NodeManager,這樣在該節點上就不會受本地NodeManager落數據到本地,使得本地存儲迅速增加的影響。
yarn-daemon.sh stop nodemanager
yarn-daemon.sh start nodemanager
到此,相信大家對“HDFS免重啟掛載新磁盤的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。