亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBASE REGION SPLIT策略

發布時間:2020-03-04 17:32:34 來源:網絡 閱讀:1976 作者:誰伴我闖蕩 欄目:關系型數據庫

hbase 0.94.0版本中,對于region的split方式引入了一個非常方便的SplitPolicy,通過這個SplitPolicy,可以主動的干預控制region split的方式。在org.apache.Hadoop.hbase.regionserver包中,可以找到這么幾個自帶的splitPolicy: ConstantSizeRegionSplitPolicy, IncreasingToUpperBoundRegionSplitPolicy, and KeyPrefixRegionSplitPolicy。

從名字上就可以分辨出這三種split策略的適用場景:

ConstantSizeRegionSplitPolicy:按固定長度分割region,固定長度取值優先獲取table的”MAX_FILESIZE” 值,若沒有設定該屬性,則采用在hbase-site.xml中配置的hbase.hregion.max.filesize值,在0.94版本中這個值的缺省值已經被調整為:10 * 1024 * 1024 * 1024L 也就是10G,網上很多關于 hbase.hregion.max.filesize 默認值 1G的文章應該都是基于0.92的hbase的。這個在使用中需要明確具體的hbase版本號。這個策略是0.94版本之前默認使用的,采用該策略后,當table的某一region中的某一store大小超過了預定的最大固定長度時,對該region進行split。splitPoint算法的選擇還是依據“數據對半”原則,找到該region的最大store的中間長度的rowkey進行split。

 

IncreasingToUpperBoundRegionSplitPolicy:按照region數量累增劃分region,該策略為Hbase 0.94默認使用的策略,采用該策略分割的region大小是不相等的,每次新region的大小隨著region數量的增多而增大。具體增長方法為:Min (R^2 *  ”MEMSTORE_FLUSHSIZE”||”hbase.hregion.memstore.flush.size”, “hbase.hregion.max.filesize”);其中R 為當前這個region所在regionserver中對應此table的region數,MEMSTORE_FLUSHSIZE 為table創建時指定大小,若table指定了此屬性則忽略下面的hbase.hregion.memstore.flush.size 。

hbase.hregion.memstore.flush.size 為hbase-site中設定大小 默認128M

hbase.hregion.max.filesize 為hbase-site中設定的單個region大小,默認10G

每次region大小是取上述兩個size中較小的那個。

假設使用hbase.hregion.memstore.flush.size 128M, hregion.max.filesize為10G, 那么每次region增長情況為:512M,1152M,2G,3,2G,4,6G,6,2G,etc。當region增長到9個時,9*9*128M/1024=10.125G >10G,至此以后region split大小都固定為10G。

 

KeyPrefixRegionSplitPolicy:指定rowkey前綴位數劃分region,通過讀取table的prefix_split_key_policy.prefix_length屬性,該屬性為數字類型,表示前綴長度,

在進行split時,按此長度對splitPoint進行截取。個人理解是rowkey前綴不相等,則劃分region。此種策略比較適合固定前綴的rowkey。當table中沒有設置prefix_split_key_policy.prefix_length屬性,或prefix_split_key_policy.prefix_length屬性不為Integer類型時,指定此策略效果等同與使用IncreasingToUpperBoundRegionSplitPolicy。

 HBASE REGION SPLIT策略

附上代碼,在創建或修改table時,指定splicpolicy

[java] view plain copy

  1. // 更新現有表的split策略  

  2.          HBaseAdmin admin = new HBaseAdmin( conf);  

  3.          HTable hTable = new HTable( conf, ”test” );  

  4.          HTableDescriptor htd = hTable.getTableDescriptor();  

  5.          HTableDescriptor newHtd = new HTableDescriptor(htd);  

  6.           newHtd.setValue(HTableDescriptor. SPLIT_POLICY, KeyPrefixRegionSplitPolicy.class .getName());// 指定策略  

  7.           newHtd.setValue(“prefix_split_key_policy.prefix_length”, ”2″);  

  8.           newHtd.setValue(“MEMSTORE_FLUSHSIZE”, ”5242880″); // 5M  

  9.          admin.disableTable( ”test”);  

  10.          admin.modifyTable(Bytes. toBytes(“test”), newHtd);  

  11.          admin.enableTable( ”test”);  



目前使用的HBASE1.0.1.1使用的REGION SPLIT策略是IncreasingToUpperBoundRegionSplitPolicy。

驗證方式如下:通過HBASE前端查看系統中的TDC_TWEETS_201604表,發現該表被拆分成18個REGION,截圖如下:

HBASE REGION SPLIT策略


通過HADOOP命令查看每個REGION大小,發現最大的7.4G,最小的88M,符合REGION拆分邏輯,截圖如下:

HBASE REGION SPLIT策略

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德兴市| 延庆县| 额尔古纳市| 威海市| 白银市| 芜湖县| 南康市| 龙口市| 和龙市| 东丽区| 曲周县| 留坝县| 蒙阴县| 车险| 临潭县| 祁东县| 寿光市| 孟津县| 含山县| 申扎县| 山西省| 新田县| 刚察县| 左云县| 云霄县| 济阳县| 西林县| 区。| 乡宁县| 辽阳市| 仙居县| 乐陵市| 蒙阴县| 宣城市| 江都市| 滨海县| 论坛| 砚山县| 西峡县| 呼玛县| 永清县|