小編給大家分享一下HBase負(fù)載均衡和性能指標(biāo)的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
目前累計(jì)服務(wù)客戶超過(guò)千家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。成都創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過(guò)對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。HBase負(fù)載均衡和性能指標(biāo)
在分布式系統(tǒng)中,負(fù)載均衡是一個(gè)非常重要的功能,HBase通過(guò)Region的數(shù)量實(shí)現(xiàn)負(fù)載均衡,即通過(guò)hbase.master.loadbalancer.class實(shí)現(xiàn)自定義負(fù)載均衡算法。
HBase系統(tǒng)負(fù)載均衡是一個(gè)周期性的操作,通過(guò)負(fù)載均衡來(lái)均勻分配Region到各個(gè)RegionServer上,通過(guò)hbase.balancer.period屬性來(lái)控制負(fù)載均衡的時(shí)間間隔,默認(rèn)是5分鐘。觸發(fā)負(fù)載均衡操作是有條件的,但是如果發(fā)生以下情況則不會(huì)觸發(fā)負(fù)載均衡操作:
l 負(fù)載均衡自動(dòng)操作balance_switch關(guān)閉,即:balance_switch false;
l HBase Master節(jié)點(diǎn)正在初始化操作;
l HBase集群中正在執(zhí)行RIT,即Region正在遷移中;
l HBase集群正在處理離線的RegionServer;
HBase執(zhí)行負(fù)載均衡操作的時(shí)候,如何判斷各個(gè)RegionServer節(jié)點(diǎn)上的Region個(gè)數(shù)是否均衡,這里通過(guò)以下步驟來(lái)判斷:
l 計(jì)算均衡值的區(qū)間范圍,通過(guò)總Region個(gè)數(shù)以及RegionServer節(jié)點(diǎn)個(gè)數(shù),算出平均Region個(gè)數(shù),然后在此基礎(chǔ)上計(jì)算最小值和大值;
l 遍歷超過(guò)Region大值的RegionServer節(jié)點(diǎn),將該節(jié)點(diǎn)上的Region值遷移出去,直到該節(jié)點(diǎn)的Region個(gè)數(shù)小于等于大值的Region;
l 遍歷低于Region最小值的RegionServer節(jié)點(diǎn),分配集群中的Region到這些RegionServer上,直到大于等于最小值的Region;
l 負(fù)責(zé)上述操作,直到集群中所有的RegionServer上的Region個(gè)數(shù)在最小值與大值之間,集群才算到達(dá)負(fù)載均衡,之后,即使再次手動(dòng)執(zhí)行均衡命令,HBase底層邏輯判斷會(huì)執(zhí)行忽略操作。
下面筆者通過(guò)實(shí)際的應(yīng)用場(chǎng)景來(lái)給大家剖析HBase負(fù)載均衡算法的實(shí)現(xiàn)流程。舉個(gè)例子,假如我們當(dāng)前有一個(gè)5臺(tái)節(jié)點(diǎn)規(guī)模的HBase集群(包含Master和RegionServer),其中2臺(tái)Master和3臺(tái)RegionServer組成,每臺(tái)RegionServer上的Region個(gè)數(shù),如圖所示:
圖1
執(zhí)行負(fù)載均衡操作之前,首先計(jì)算集群中總的Region個(gè)數(shù),當(dāng)前實(shí)例中集群中的Region總個(gè)數(shù)為175+56+99=330,然后計(jì)算每個(gè)RegionServer需要容納的Region平均值,計(jì)算結(jié)果:
平均值(110) = 總Region個(gè)數(shù)(330) / RegionServers總數(shù)(3)
計(jì)算最小值和大值來(lái)判斷HBase集群是否需要進(jìn)行負(fù)載均衡操作,計(jì)算公式:
# hbase.regions.slop 權(quán)重值,默認(rèn)為0.2
最小值 = Math.floor(平均值 * (1-0.2))
大值 = Math.ceil(平均值 * (1+0.2))
HBase集群如果判斷各個(gè)RegionServer中的最小Region個(gè)數(shù)大于計(jì)算后的最小值,并且大Region個(gè)數(shù)小于大值,這是直接返回不會(huì)觸發(fā)負(fù)載均衡操作。根據(jù)實(shí)例中給出的Region數(shù),計(jì)算得出最小值Region為88,大值Region為120。
由于實(shí)例中RegionServer2的Region個(gè)數(shù)為56,小于最小值Region數(shù)88,而RegionServer1的Region個(gè)數(shù)為175,大于了大值Region數(shù)120,所以需要負(fù)載均衡操作。
HBase系統(tǒng)提供管理員命令來(lái)操作負(fù)載均衡,具體操作命令:
# 使用hbase shell命令進(jìn)入到HBase控制臺(tái),然后開啟自動(dòng)執(zhí)行負(fù)載均衡
hbase(main):001:0> balance_switch true
balance_switch命令底層實(shí)現(xiàn)balance_switch.rb和admin.rb文件源碼:
圖2
此命令輸出的是之前負(fù)載均衡器balancer的開關(guān)設(shè)置,再看balance_switch命令處理實(shí)現(xiàn)源碼:
圖3
此時(shí)HBase負(fù)載均衡自動(dòng)操作就開啟完畢,但是如果我們需要立即均衡集群的Region個(gè)數(shù)怎么辦?這里HBase也提供管理命令,通過(guò)balancer命令來(lái)實(shí)現(xiàn),操作命令:
hbase(main):001:0> balancer
balancer命令實(shí)現(xiàn)查看balancer.rb和admin.rb文件源碼:
圖4
圖5
該命令通過(guò)調(diào)用負(fù)載均衡器balancer的balanceCluster()方法生成負(fù)載均衡計(jì)劃執(zhí)行集群的負(fù)載均衡操作,Master實(shí)現(xiàn)負(fù)載均衡底層源碼:
圖6-1
圖6-2
但是這樣每次手動(dòng)執(zhí)行,每次均衡的個(gè)數(shù)不一定能滿足要求,那么我們可以通過(guò)封裝該命令,用腳本來(lái)調(diào)度執(zhí)行,具體實(shí)現(xiàn)代碼:
圖7
此腳本默認(rèn)執(zhí)行20次,可以通過(guò)輸入整型參數(shù)來(lái)自定義執(zhí)行次數(shù)。
當(dāng)HBase集群檢查完所有的RegionServer上的Region個(gè)數(shù)已打要求,那么此時(shí)集群的負(fù)載均衡操作就已經(jīng)完成了。如果沒有達(dá)到要求,可以再次執(zhí)行上述腳本,直到所有的Region個(gè)數(shù)在最小值和大值之間為止。當(dāng)HBase集群中所有的RegionServer完成負(fù)載均衡后,實(shí)例中的各個(gè)RegionServer上的Region個(gè)數(shù)分布,如圖所示:
圖8
此時(shí)各個(gè)RegionServer節(jié)點(diǎn)上的Region個(gè)數(shù)均在最小值和大值范圍內(nèi),HBase集群各個(gè)RegionServer節(jié)點(diǎn)上的Region處理均衡狀態(tài)。
HBase系統(tǒng)有一個(gè)非常重要的性能指標(biāo),那就是集群處理請(qǐng)求的延時(shí)。HBase系統(tǒng)為了反應(yīng)集群內(nèi)部處理請(qǐng)求所耗費(fèi)的時(shí)間提供一個(gè)工具類即:
org.apache.hadoop.hbase.tool.Canary
此類主要用戶檢查HBase系統(tǒng)的耗時(shí)狀態(tài)。如果不知道使用方法,通過(guò)help命令來(lái)查看具體的用法,操作命令:
hbase org.apache.hadoop.hbase.tool.Canary -help
(1)查看集群中每個(gè)表中每個(gè)Region的耗時(shí)情況
hbase org.apache.hadoop.hbase.tool.Canary
(2) 查看money表中每個(gè)Region的耗時(shí)情況,多個(gè)表之間使用空格分割
# 查看money表和person表
hbase org.apache.hadoop.hbase.tool.Canary money person
(3) 查看每個(gè)RegionServer的耗時(shí)情況
hbase org.apache.hadoop.hbase.tool.Canary -regionserver dn1
通常情況下我們比較關(guān)注每個(gè)RegionServer節(jié)點(diǎn)的耗時(shí)情況,將該命令封裝一下,然后打印集群中每個(gè)RegionServer的耗時(shí)情況,腳本實(shí)現(xiàn):
以上是“HBase負(fù)載均衡和性能指標(biāo)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
當(dāng)前標(biāo)題:HBase負(fù)載均衡和性能指標(biāo)的示例分析-創(chuàng)新互聯(lián)
鏈接URL:http://vcdvsql.cn/article44/iieee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版、品牌網(wǎng)站設(shè)計(jì)、企業(yè)建站、建站公司、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)