您好,登錄后才能下訂單哦!
這篇文章主要講解了“hadoop Hdfs的數據磁盤大小不均衡怎么處理”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“hadoop Hdfs的數據磁盤大小不均衡怎么處理”吧!
現象描述
建集群的時候,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集群,過一定時間查看該目錄的大小,然后發現有數據寫入。
由此證明,想法是可行的。
此方法的缺點是,原有的數據不會進行均衡,增加目錄的方式只是增加了新數據寫入大磁盤的概率,但是這樣就可以了,等著原有數據自動刪除即可。
感謝各位的閱讀,以上就是“hadoop Hdfs的數據磁盤大小不均衡怎么處理”的內容了,經過本文的學習后,相信大家對hadoop Hdfs的數據磁盤大小不均衡怎么處理這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。