BloomFilter
* 默認值為 NONE,布隆過濾器的作用是可以過濾掉大部分不存在目標查詢值的 HFile(即略去不必要的磁盤掃描),可以有助于降低讀取延遲。 配置方式: create 'table',{BLOOMFILTER =>'ROW |ROWCOL'} * ROW,表示對 Rowkey 進行布隆過濾,Rowkey 的哈希值在每次寫入行時會被添加到布隆過濾器中,在讀的時候就會通過布隆過濾器過濾掉大部分無效目標。 * ROWCOL 表示行鍵 + 列簇 + 列的哈希將在每次插入行時添加到布隆。
Versions
* 默認值為 1 ,我們知道 HBase 是一個多版本共存的數據庫,多次寫入相同的 rowkey + cf + col 則會產生多個版本的數據,在有些場景下多版本數據是有用的,需要把寫入的數據做一個對比或者其他操作;但是如果我們不想保留那么多數據,只是想要覆蓋原有值,那么將此參數設為 1 能節約 2/3 的空間。所以第一步搞清楚你的需求,是否需要多版本共存。 * 配置方式 create 'table',{VERSIONS=>'2'}
Compression
* 默認值為 NONE ,常用的壓縮方式是 Snappy 和 LZO,它們的特點是用于熱數據壓縮,占用 CPU 少,解壓/壓縮速度較其他壓縮方式快,但是壓縮率較低。Snappy 與 LZO 相比,Snappy 整體性能優于 LZO,解壓/壓縮速度更快,但是壓縮率稍低。各種壓縮各有不同的特點,需要根據需求作出選擇。 * create 'table',{NAME=>'info',COMPRESSION=>'snappy'}
HBase 預分區
默認情況下,在創建 HBase 表的時候會自動創建一個 Region 分區,當導入數據的時候, 所有的 HBase 客戶端都向這一個 Region 寫數據,直到這個 Region 足夠大了才進行切分。這樣的局限是很容易造成數據傾斜,影響讀寫效率。預分區是一種比較好的解決這些問題的方案,即預先創建一些空的 Regions,定義好每個 Region 存儲的數據的范圍,這樣可以有效避免數據傾斜問題,多個 Region 同時工作,使得可以在集群內做數據的負載均衡。
* 指定 rowkey 分割的點 create 'table1','f1',SPLITS => ['\x10\x00', '\x20\x00', '\x30\x00', '\x40\x00'] * rowkey 前綴完全隨機 create 'table2','f1', { NUMREGIONS => 8 , SPLITALGO => 'UniformSplit' } * rowkey 是十六進制的字符串作為前綴的 create 'table3','f1', { NUMREGIONS => 10, SPLITALGO => 'HexStringSplit' } 其中,NUMREGIONS 為 region 的個數,一般按每個 egion 10GB 左右來計算 Region 數量,集群規模大,Region 數量可以適當取大一些。
更多關于“大數據培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。