HBase是三維有序存儲的,是指rowkey(行鍵),column key(column family和qualifier)和TimeStamp(時間戳)這個三個維度是依照ASCII碼表排序的。
HBase中,表會被划分為1...n個Region,被托管在RegionServer中。Region二個重要的屬性:StartKey與EndKey表示這個Region維護的rowKey范圍,當我們要讀/寫數據時,如果rowKey落在某個start-end key范圍內,那么就會定位到目標region並且讀/寫到相關的數據。簡單地說,有那么一點點類似人群划分,1-15歲為小朋友,16-39歲為年輕人,40-64為中年人,65歲以上為老年人。(這些數值都是拍腦袋出來的,只是舉例,非真實),然后某人找隊伍,然后根據年齡,處於哪個范圍,就找到它所屬的隊伍。
然后,默認地,當我們只是通過HBaseAdmin指定TableDescriptor來創建一張表時,只有一個region,正處於混沌時期,start-end key無邊界,可謂海納百川。啥樣的rowKey都可以接受,都往這個region里裝,然而,當數據越來越多,region的size越來越大時,大到一定的閥值,hbase認為再往這個region里塞數據已經不合適了,就會找到一個midKey將region一分為二,成為2個region,這個過程稱為分裂(region-split).而midKey則為這二個region的臨界,左為N無下界,右為M無上界。< midKey則為陰被塞到N區,> midKey則會被塞到M區。
參考:https://blog.csdn.net/zhaominpro/article/details/79423328
https://www.cnblogs.com/bdifn/p/3801737.html