1. Hbase分區
HBase中,表會被劃分為1…n個Region,被託管在RegionServer中。Region二個重要的屬性:StartKey與 EndKey表示這個Region維護的rowKey范圍,當我們要讀/寫數據時,如果rowKey落在某個差大稿start-end key范圍內,那麼就會定位到目標region並且讀/寫到相關的數據。
默認地,當我們只是通過HBaseAdmin指定TableDescriptor來創建一張表時,start-end key無邊界,region的size越來越大時,大到 一定的閥值,就會找虛孝到一個midKey將region一分為二,成為2個region,這個過 程稱為分裂(region-split).而midKey則為這二個region的臨界
1.總是往最大start-key的region寫記錄,之前分裂出來的region不會再被寫數據,它們都處於半滿狀態
2.split是比較耗時耗資源
合理設計rowkey 能讓各個region 的並發請求 平均分配(趨於均勻) 使IO 效率達到最高
(預分區需要將hbase.hregion.max.filesize設置一個較大的值,默認是10G(0.94.3 ) 也就是說單個region 默認大小是10G)
shell
指明分割點
HexStringSplit指明分割策略,-c 10指明要分割的區域數量,-f指明表中的列族,用「:」分割。
根據文件創建分區並壓縮
COMPRESSION 默認值NONE,即不使用壓縮
建議採用SNAPPY壓縮
官方文檔給出的建表提示
TTL 默認是 2147483647 即:Integer.MAX_VALUE 值 大概是68年,這個參數是說明該列族數據的 存活時間,單位是s,超過存過時間的數據將在表中不在顯示,待下次major compact的時候再徹底刪除數據,
若設置MIN_VERSIONS=>』0』 TTL時間戳過期後,將全部徹底刪除該family 下所有的數據,如果MIN_VERSIONS 不等於0 那將保留最新的MIN_VERSIONS個版本的數據,其它的全部刪除,比如MIN_VERSIONS=>』1』 屆時將保留一個最新版本的數仿激據,其它版本的數據將不再保存。
VERSIONS 默認是3,這個參數的意思是數據保留三個 版本,如果數據隨時都在更新,或老版本的數據無價值,那將此參數設為1 能節約2/3的空間
RegionSplitter提供三個用於預分割的工具:HexStringSplit、SplitAlgorithm、UniformSplit。
HexStringSplit和UniformSplit是兩個預定義的靜態類,可以直接使用;而SplitAlgorithm是一個介面,需要開發人員自己實現相應的分隔策略。如果是以十六進制字元串作為行鍵rowkey或者行鍵rowkey的前綴是十六進制字元串,用HexStringSplit就比較合適;UniformSplit會把行鍵均勻地分割多個部分,如果行將rowkey是隨機的位元組數組,用UniformSplit就比較合適;或者開發者根據需要實現分割策略。
原文: https://blog.csdn.net/Nougats/article/details/72723172