您好,登錄后才能下訂單哦!
本篇內容介紹了“如何處理Hdfs的DN節點數據磁盤大小不均衡的問題”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
現象描述
建集群的時候,datanode的節點數據磁盤總共是四塊磁盤做矩陣成了一個7.2TB的sdb1(data1),兩塊通過矩陣做了一個3.6TB的sdc1(data2)磁盤,運維做的,歷史原因。剛開始沒有發現,然后集群過了一段時間,隨著數據量的增加,發現集群有很多磁盤超過使用率90%告警,浪尖設置磁盤告警閾值是90%,超過閾值就會發短信或者微信告警,提醒我們磁盤將要滿了進行預處理,但是通過hadoop的監控指標獲取的磁盤利用率維持在55%+,這種情況下不應該發生告警的。磁盤的使用率在hadoop的hdfs的namnode的web ui也可以看到,如下:
這個時候,大家的懷疑會集中于hdfs的某些datanode節點數據存儲過于集中,導致某些節點磁盤告警。但是大家都知道,hdfs允許datanode節點接入時datanode之間磁盤異構,數據存儲hadoop會自動在datanode之間進行均衡。所以這個懷疑可以排除。
登錄告警節點,發現確實data2磁盤使用率超過了90%,但是data1使用率維持在不足50%。
這時候問題就顯而易見了,hadoop3.0之前hdfs數據存儲只支持在datanode節點之間均衡,而不支持datanode內部磁盤間的數據存儲均衡。
那么這個時候怎么辦呢?
起初
浪尖想的是將data1那個矩陣,拆分成兩塊由兩塊磁盤組成的矩陣,然后重新滾動上下線Datanode(數據遷移或者通過副本變動讓其進行均衡)。但是,后來很快否定了這種方法,原因是很簡單。幾百TB的數據,在集群中均衡,即使是滾動重啟,那么多機器也要持續好久,然后在數據遷移或者均衡的時候,整個幾群的帶寬和磁盤都是會增加很大負擔,導致集群的可用性降低。
接著
通過hadoop官網發現hadoop 3.0不僅支持datanode之間的數據均衡,也支持datanode內部管理的多磁盤的之間的數據均衡。
這個時候,可以考慮升級hadoop集群到hadoop3.0,但是思考再三浪尖覺得浪費時間,不劃算,最終放棄這種方案。
最后
幾經思考,終于想出了一個原本就很簡單的方案,只需要重啟datanode,就可以實現提高大磁盤利用率的方法。首先,要知道的是datanode管理磁盤,是根據我們dfs.data.dir參數指定的目錄。那么,我們的思路就很簡單了,給data1多個目錄,不就可以增加其寫入的概率,進而提升磁盤的使用率了么。配置方式如下:
<property> <name>dfs.data.dir</name> <value>/data1/dfs/dn,/data1/dfs/dn1,/data2/dfs/dn</value></property>
配置結束之后,重啟datanode集群,過一定時間查看該目錄的大小,然后發現有數據寫入。
由此證明,想法是可行的。
此方法的缺點是,原有的數據不會進行均衡,增加目錄的方式只是增加了新數據寫入大磁盤的概率,但是這樣就可以了,等著原有數據自動刪除即可。
“如何處理Hdfs的DN節點數據磁盤大小不均衡的問題”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。