HBase 調查HBase不進行Balance

2021-10-25 15:18:22 字數 1807 閱讀 2223

有一台regionserver宕機了,恢復之後,始終不向這台regionserver上分配region。

首先出現這種問題,當然是去看一眼日誌了。

如果去看這台regionserver的日誌,大概是這樣的,啥都看不著。

其實應該去看active master節點的日誌,因為master負責集群的region和table哪種東西的管理。

但是master日誌大概也是什麼也看不到。因為hbase預設的日誌級別是info級別,可以下調日誌級別到trace。然後重啟一下master節點(如果不是ha,還是重啟集群吧。。。)

這時候就能看見日誌了。

可以找找這條日誌,說balance被跳過了,原因是balancer計算出來cost大於最小的cost

skipping load balancing because balanced cluster; total cost is 47.940677280639925, sum multiplier is 1102.0 min cost which need balance is 0.05
這時候可以去看原始碼了,檢視stochasticloadbalancer類的needsbalance方法。

@override

protected boolean needsbalance(cluster cluster)

if (!c.isneeded()) not needed", c.getclass().get******name());

continue;

}summultiplier += multiplier;

total += c.cost() * multiplier;

}if (total <= 0 || summultiplier <= 0

|| (summultiplier > 0 && (total / summultiplier) < mincostneedbalance))

return false;

}return true;

}

可以看到是最後的乙個判斷沒過。

通過上面的日誌可以看到total <= 0 || summultiplier <= 0 、summultiplier > 0這幾個判斷都過了,最後那個判斷為啥沒過呢。

這就要去看看total和summultiplier這兩個值是怎麼來的了。

我們看一下mincostneedbalance這個值是怎麼來的。其實是配置的。。。預設值0.5f

mincostneedbalance = conf.getfloat(min_cost_need_balance_key, mincostneedbalance);

protected static final string min_cost_need_balance_key =

"hbase.master.balancer.stochastic.mincostneedbalance";

此時聰明的你一定想到了直接改了hbase.master.balancer.stochastic.mincostneedbalance,(total / summultiplier) < mincostneedbalance,讓它成立不就好了。

是的,這個issue描述了這個問題,他給出的解決辦法就是改小這個配置。

接下來就可以重啟集群,如果你迫不及待可以去hbase shell 手動balance,不然就等幾分鐘,master會執行balancer程式。

HBASE部分 HBASE的架構

hbase的架構 包含訪問hbase的介面並維護cache來加快對hbase的訪問 zookeeper 保證任何時候,集群中只有乙個master 存貯所有region的定址入口。實時監控region server的上線和下線資訊。並實時通知master 儲存hbase的schema和table元資料...

Hbase 學習筆記 Hbase 概覽

hbase構建在 hdfs 之上,hbase內部管理的檔案全部儲存在hdfs 中 行鍵,table的主鍵,table中的記錄按照row key排序。型別為byte array 列簇,table在水平方向有乙個或者多個column family組成,乙個column family中可以由任意多個col...

HBase基礎 HBase邏輯結構

邏輯上,hbase的資料模型和關係型資料庫類似,資料儲存在一張表中,有行有列。注意,這個結構為邏輯結構,並非真正的儲存格式。是用來理解hbase。personal info office info row key name city phone telephone address row key1 ...