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