--- 資料儲存
rowkey的作用:
1> table中的所有行都按照row key的字典序排列
hbase是三維有序儲存的,是指rowkey(行鍵),column key(column family和qualifier)和timestamp(時間戳)這個三個維度是依照ascii碼表排序的 (比如a排在a前面)
2> table 在行的方向上分割為多個hregion[表的行範圍資料]3> hregion中儲存的就是對應表的一段資料 (startkey endkey)4> region中的行資料中可能有多個列族 , 每個列族都是乙個資料夾 , 資料夾中儲存的是當前列族的資料[在指定的hfds中以hfile的形式儲存]5> hfile是儲存在hdfs中的一種特殊格式的檔案 , 這個檔案中儲存的是k:v: 資料使用hbase hflie -p -f 可以解析的資料
6> 資料在進行插入的時候會記錄操作行為日誌 ;日誌是儲存在hdfs中的, 保證資料的安全性
*** region按大小分割的,每個表一開始只有乙個region,隨著資料不斷插入表,region不斷增大,當增大到乙個閥值的時候,hregion就會等分會兩個新的hregion。當table中的行不斷增多,就會有越來越多的hregion
*** hregion是hbase中分布式儲存和負載均衡的最小單元。最小單元就表示不同的hregion可以分布在不同的hregion server上。但乙個hregion是不會拆分到多個server上的
*** hregion雖然是分布式儲存的最小單元,但並不是儲存的最小單元。事實上,hregion由乙個或者多個store組成,每個store儲存乙個columns family,如果一張表的列族過多,那麼響應的stroe就會過多
每個strore又由乙個memstore和0至多個storefile組成 storefile以hfile格式儲存在hdfs上
--- region拆分策略
預設的拆分策略(大小)
當region的大小達到一定大小的時候會被拆分
補充說明:當乙個region變的過大後,會觸發split操作,將乙個region**成兩個子region
region split並不會真正將父region的hfile檔案資料移到子region目錄中
split過程僅僅是在子region中建立了到父region的hfile的引用檔案,子region1中的引用檔案指向原hfile的上部
而子region2的引用檔案指向原hfile2的下部 資料的真正搬遷工作是在compaction過程完成的
split策略實現類
hbase.regionserver.region.split.policy
org.apache.hadoop.hbase.regionserver.increasingtoupperboundregionsplitpolicy
當hbase表在regionserver上的region,如果region的大小到達乙個閾值,這個region將會分為兩個
計算公式為:min
如果預設值情況下,乙個表在乙個regionserver上split的閾值是:256mb(第一次split),2gb(第二次),6.75gb(第三次),10gb(第四次),10gb... 10gb
hbase.hregion.max.filesize
10737418240
hbase.regionserver.regionsplitlimit
1000
HBase 1 HBase介紹和工作原理
hbase是乙個分布式的 面向列的開源資料庫,該技術 於 fay chang 所撰寫的google bigtable 乙個結構化資料的分布式儲存系統 就像bigtable利用了google檔案系統 file system 所提供的分布式資料儲存一樣,hbase在hadoop之上提供了類似於bigta...
HBase 1 HBase介紹和工作原理
hbase是乙個分布式的 面向列的開源資料庫,該技術 於 fay chang 所撰寫的google bigtable 乙個結構化資料的分布式儲存系統 就像bigtable利用了google檔案系統 file system 所提供的分布式資料儲存一樣,hbase在hadoop之上提供了類似於bigta...
HBase篇 1 設計與應用場景
每日五分鐘搞定大資料 系列,hbase第一篇 講完了zookeeper,接下來我們來說下google三駕馬車之一bigtable的開源實現 hbase,要講得內容如下 1.寫密集型應用,每天寫入量巨大,而相對讀數量較小的應用2.不需要複雜查詢條件來查詢資料的應用使用rowkey,單條記錄或者小範圍的...