CDH5之Balancer難以在快速增長的叢集上平衡大量的資料
背景:
公司線上上使用了CDH5叢集,一開始由於疏忽,忘記了在計劃任務中定期執行Balancer來平衡各節點的資料。
後來,在引入大量的Job之後,資料增長非常迅猛,有很多節點開始出現利用率超過99.9%的情況,部分Job甚至開始Failed。
於是我們便執行Balancer來清理資料,結果發現有26T的資料需要平衡,而Balancer每次只移動50G的資料,並且耗時30分鐘,而叢集每個小時新寫入的資料會導致又有40-60G的資料需要平衡。這樣一來,Balancer就根本無法勝任了。
- 14/10/14 20:31:11 INFO balancer.Balancer: Need to move 26.49 TB to make the cluster balanced.
- 14/10/14 20:31:11 INFO balancer.Balancer: Decided to move 10 GB bytes from 10.100.1.10:50010 to 10.100.1.60:50010
- 14/10/14 20:31:11 INFO balancer.Balancer: Decided to move 10 GB bytes from 10.100.1.20:50010 to 10.100.1.70:50010
- 14/10/14 20:31:11 INFO balancer.Balancer: Decided to move 10 GB bytes from 10.100.1.30:50010 to 10.100.1.80:50010
- 14/10/14 20:31:11 INFO balancer.Balancer: Decided to move 10 GB bytes from 10.100.1.40:50010 to 10.100.1.90:50010
- 14/10/14 20:31:11 INFO balancer.Balancer: Decided to move 10 GB bytes from 10.100.1.50:50010 to 10.100.1.100:50010
- 14/10/14 20:31:11 INFO balancer.Balancer: Will move 50 GB in this iteration
- .........
解決辦法:
1. 增加Balancer可操作的頻寬
我們思考,是否是因為Balancer的預設頻寬太小,所以效率低下,於是我們嘗試將Balancer的頻寬擴容到了500M/s:
hadoop dfsadmin -setBalancerBandwidth 524288000
但問題並沒有得到太大的改善。
2. 強行對節點進行Decommission
我們發現,當對一些節點進行Decommission操作時,上面的資料雖然有10-30T甚至更多,但總能在1天內全部Copy到其它的節點上,這裡面由於預設叢集副本數為3的原因,應該只有1/3的資料被複制了,但資料是完整的,並且被複製出去的資料也是平均分配到各個節點上的。那麼我們何不使用它來作為一個類似Balancer的功能來解決一些磁碟用量超過99.9%的節點呢?
事實證明,這個方法非常可行,我們針對線上8個節點進行了Decommission操作(注意要儘量一臺一臺進行),在完成下線之後再立刻格式化資料磁碟,並重新新增回叢集,新的資料也會非常快的平衡過來。比較完美的解決了之前頭疼的問題,並且只花費了不到4天的時間。
3. Hadoop對LVM磁碟卷的支援問題
在解決Balancer的問題時,我們還發現,Hadoop對LVM磁碟卷的支援不是很好,表現在如果在一塊磁碟上建立了邏輯卷/根分割槽等,再建立了邏輯卷/data1分割槽,Hadoop會一直將/data1寫到100%,然後導致一些Job提示沒有空間寫入。我們猜想Hadoop應該是物理卷為單位來控制用量的。因此,我們不得不將這些包含了邏輯卷資料磁碟的主機重新安裝,並分配單獨的物理卷,如/dev/sda3作為/data1掛載,便再也沒有以上問題。
轉:來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30089851/viewspace-2051560/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分片叢集平衡器Balancer
- Hadoop之 Balancer平衡速度Hadoop
- 使用 Terraform 在 AWS 上快速部署 MQTT 叢集ORMMQQT
- 在華為雲 OSC 上快速部署 EMQX MQTT 叢集MQQT
- 使用 Terraform 在阿里雲上快速部署 MQTT 叢集ORM阿里MQQT
- Flume採集資料時在HDFS上產生大量小檔案的問題
- 難以理解的AQS(上)AQS
- Hadoop大資料分析市場以13.0%的複合年增長率增長Hadoop大資料
- 給家庭 k8s 叢集用的 External Load BalancerK8S
- 大資料之CDH叢集搭建大資料
- 搭建5個節點的hadoop叢集環境(CDH5)HadoopH5
- 從難以普及的資料增強技術,看AI的價效比時代AI
- 以智慧資料架構,挖掘增長金礦架構
- SequoiaDB資料庫之叢集模式的對比資料庫模式
- Hadoop叢集安裝-CDH5(5臺伺服器叢集)HadoopH5伺服器
- Hadoop叢集安裝-CDH5(3臺伺服器叢集)HadoopH5伺服器
- 在多節點的叢集上執行Cassandra
- 快速建立POLARDB for PostgreSQL資料庫叢集教程SQL資料庫
- SequoiaDB資料庫之叢集管理資料庫
- 非平衡資料集的機器學習常用處理方法機器學習
- 400天活躍叢集從0到2萬+,什麼是TiDB Serverless快速增長的秘密?TiDBServer
- 在Google的GKE上建立支援Internal Load Balancer的ServiceGo
- Redis叢集 - cluster叢集、資料分片Redis
- 亞馬遜雲資料庫Redshift解決叢集難題WE亞馬遜資料庫
- 搞懂 ZooKeeper 叢集的資料同步
- Elasticsearch高階之-叢集搭建,資料分片Elasticsearch
- 資料增長愈演愈烈,4大措施應對管理難題
- 完全無事務的資料庫SCN增長之謎資料庫
- 大量資料需精確快速查詢時的資料結構?資料結構
- 資料庫叢集資料庫
- 在滴滴雲上搭建 MongoDB 叢集 (一):MongoDB
- 為什麼在 Plasma 上難以執行 EVMASM
- 時序資料庫的叢集方案?資料庫
- impala 資料表在叢集間遷移方案
- 易操作、可觀測的 MQTT Dashboard,叢集資料盡在掌握MQQT
- 高效採集資料,幫助應用業務增長
- 高效採集資料,伴隨應用業務增長
- CDH5 叢集安裝教程H5