您好,登錄后才能下訂單哦!
這篇文章主要介紹“HBase1.x優(yōu)化本地數(shù)據(jù)舉例分析”,在日常操作中,相信很多人在HBase1.x優(yōu)化本地數(shù)據(jù)舉例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”HBase1.x優(yōu)化本地數(shù)據(jù)舉例分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
現(xiàn)象:
由于同事反應生產(chǎn)上在HBase Shell中,通過 get ‘表’,‘rowkey’ 獲取數(shù)據(jù)的時候,經(jīng)常會出現(xiàn),連續(xù)多次執(zhí)行同一條get命令,前面N-1次可能沒問題,到了第N次就卡住了,時間一長就報超時的錯誤。
我看了下后臺日志也沒有太明顯的錯誤,其他方法都試了也沒解決掉這個問題,后來好好想了下,這個集群最近一段時間通過BulkLoad方式導入了40TB左右的數(shù)據(jù),里面肯定會有很多小的HFile和需要清理的文件。由于生產(chǎn)環(huán)境major compation都是關(guān)閉掉的,都是通過手動執(zhí)行。
于是我百度找了個Shell批量執(zhí)行腳本,晚上對所有表跑了下major compaction,大約執(zhí)行了有2個多小時,第二天早上發(fā)現(xiàn)問題已修復,且HBase監(jiān)控界面的RegionSrever數(shù)據(jù)本地化率(data locality),從原來的19%提升到了99%,于是我找了找相關(guān)的東西。
1.什么是HBase的數(shù)據(jù)本地化率?
Data Locality用來衡量region服務的數(shù)據(jù)即region的HFile位于本地的百分比。
在hadoop生產(chǎn)環(huán)境中, hdfs通常為設置為三個副本,假如當前RegionA處于datanode1,當數(shù)據(jù)a通過從Memstore中Flush到HFile時,三副本為(datanode1,datanode2,datanode3),數(shù)據(jù)b寫入三副本是(datanode1,datanode3,datanode5),數(shù)據(jù)c寫入三副本(datanode1,datanode4,datanode6),可以看出來a、b、c三份數(shù)據(jù)寫入的時候肯定會在本地datanode1上寫入一份,其他兩份按照datanode的寫入機制進行分配;數(shù)據(jù)都在本地可以讀到,因此數(shù)據(jù)本地率是100%。現(xiàn)在假設RegionA被遷移到了datanode2上,只有數(shù)據(jù)a有一份數(shù)據(jù)在該節(jié)點上,其他數(shù)據(jù)(b和c)讀取只能遠程跨節(jié)點讀,本地率就為33%(假設a,b和c的數(shù)據(jù)大小相同)。
2.數(shù)據(jù)本地化率低的原因
由本地化率的定義我們知道,數(shù)據(jù)本地化率低的原因肯定是region和hfile數(shù)據(jù)不在同一個節(jié)點上,會產(chǎn)生大量的跨網(wǎng)絡IO請求,必然會導致讀請求延遲較高,那什么時候才會導致region的遷移呢?下面是我個人的理解,可能理解的不太全面,如果后面有更深層次的問題我會給大家完善進來。
1).當數(shù)據(jù)持續(xù)寫入,單個region的大小達到hbase.hregion.max.filesize(默認值10GB)會自動進行Split,假如一直向RegionA持續(xù)寫入數(shù)據(jù),當RegionA大小超過10GB,會分離成兩個子RegionB、RegionC,如果我們集群開啟了
2).其他情況也可能導致Region的遷移,Regionserver服務宕機,手動move使region遷移到其他節(jié)點,導致數(shù)據(jù)本地化率降低。
3.如何提升數(shù)據(jù)本地化率
1.關(guān)閉HBase的Region負債均衡(balance)
2.regionserver重啟后,手動move到原來節(jié)點(如果生產(chǎn)region比較多,這個操作比較繁瑣)
3.major compaction的時候,使得一個region擁有的所有數(shù)據(jù)都轉(zhuǎn)移到region這臺機子上來,從而確保本地化,major compaction時間會持續(xù)比較長,整個過程會消耗大量系統(tǒng)資源,對上層業(yè)務有比較大的影響。因此線上業(yè)務都會將關(guān)閉自動觸發(fā)Major Compaction功能,改為手動在業(yè)務低峰期觸發(fā)大合并。
Region拆分詳解請查看我的另外一篇文章:
注意:
如果RegionServer接手了一個Region,那么大多數(shù)數(shù)據(jù)塊不在本地的NameNode上,讀寫性能會有下降,但會在后續(xù)的Compact過程中逐漸將文件寫入本地的DataNode,從而恢復Data Locality。
到此,關(guān)于“HBase1.x優(yōu)化本地數(shù)據(jù)舉例分析”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。