優化Hadoop Balancer平衡的速度

2021-07-22 05:49:39 字數 2094 閱讀 5091

之前我在部落格中介紹了hdfs

的block

資料balancer

重分布實戰

內容:本篇文章我們再來簡單介紹一下優化hadoop balancer

平衡的速度

涉及到的幾個重要引數。

1.  dfs.datanode.max.transfer.threads

修改dfs.datanode.max.transfer.threads=4096 (如果執行hbase的話建議為16384),指定用於在datanode間傳輸block資料的最大執行緒數,老版本的對應引數為dfs.datanode.max.xcievers。

2.  dfs.datanode.balance.bandwidthpersec

修改dfs.datanode.balance.bandwidthpersec=52428800,指定datanode用於balancer的頻寬為50mb,這個根據情況而定,如果交換機效能好點的,完全可以設定100mb,單位是byte,如果機器的網絡卡和交換機的頻寬有限,可以適當降低該速度,比如10mb,預設是1048576(1mb)。

hdfs dfsadmin-setbalancerbandwidth 52428800

之前遇到一位朋友,他們公司的hadoop生產環境上,hdfs分配非常不均勻,而且有的datanode節點的磁碟使用率幾乎100%了,導致一些作業報錯。後來公司採取hadoop balancer來對資料進行平衡操作,但是資料量太大,高達50t作業,所以採用hadoop balancer方法進行平衡,需要的時間太長。

後來這位朋友諮詢我,剛開始我是讓他調整hadoop halancer的引數,比如執行緒數,頻寬等,效果都沒有那麼明顯,畢竟資料量太大。後面考慮到他們的資料副本為3,所以可以考慮將一些datanode磁碟利用率太高的節點先下線操作(必須逐個節點操作,不可同時下線多個節點,防止資料丟失),即decommission datanode。完成下線後,再進行格式化資料磁碟操作,然後再將此datanode新增到集群中,這樣新的資料就會較快地同步過來。

最後,我們補充點decommission datanode相關知識。

decommission datanode主要有兩個步驟:

1.  在namenode上,把需要decommission的datanode的機器名加入到dfs.hosts.exclude(該配置項在hdfs-site.xml)所指定檔案中,也就是告訴namenode哪些datanode要被decommission。

把需要decommission的節點寫到檔案/etc/hadoop/conf/dfs.exclude中去。

dfs.hosts.exclude

/etc/hadoop/conf/dfs_decommission.exclude

2.  用如下命令啟動decommission

hdfs dfsadmin -refreshnodes

decommission datanode的時候需要保證在該datanode移除以後,hdfs上的檔案還能滿足replica factor的最低要求。

比如,乙個只有3個datanode的hdfs集群,檔案預設replica factor(dfs.replication引數設定)是3,那麼移除任何乙個datanode都會導致某些檔案不能滿足replica factor的最低要求。當試圖移除乙個datanode的時候,會一直處在decommissioning的狀態,因為它找不到別的機器來遷移它的資料了。這個問題通常容易出現在小集群上。

乙個解決辦法就是臨時把相應檔案的replica factor調低。

1. 用如下命令來檢視hdfs中所有檔案的replica factor

hdfsfsck / -files -blocks

其中repl=1表示該檔案的該block的replica factor為1。通過這個命令就可以找到那些replica factor比較高的檔案了。

2 . 調整檔案的replicafactor 

我們需要注意的是,replica factor是檔案的屬性,而不是集群的屬性,也就是說同乙個集群中的檔案可以有不同的replica factor。因此,我們需要針對檔案修改replica factor。對應的命令是:

hdfs dfs -setrep [-r] [-w]

其中

Mysql limit 優化優化

mysql 效能到底能有多高?用了php半年多,真正如此深入的去思考這個問題還是從前天開始。有過痛苦有過絕望,到現在充滿信心!mysql 這個資料庫絕對是適合dba級的高手去玩的,一般做一點1萬篇新聞的小型系統怎麼寫都可以,用xx框架可以實現快速開發。可是資料量到了10萬,百萬至千萬,他的效能還能那...

php優化 nginx優化 mysql優化

php優化 1 將類的方法定義為static。2 盡量使用單引號。3 修改php fpm程序數。4 修改單個指令碼最大可使用記憶體。5 大的陣列使用完之後要及時釋放。6 迴圈的時候,制定最大迴圈次數 7 不使用 遮蔽錯誤 8 盡量採用大量的 php 內建函式 9 使用require代替require...

約瑟夫問題(優化優化再優化)

約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。1 模擬方法 2 數學方法 模擬方法就是所謂的乙個個模擬,乙個乙個出列...