HBase中Bloomfilter类型的设置及使用的理解
生活随笔
收集整理的這篇文章主要介紹了
HBase中Bloomfilter类型的设置及使用的理解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.Bloomfilter的原理?
?
可參考? http://hi.baidu.com/yizhizaitaobi/blog/item/cc1290a0a0cd69974610646f.html ?
2.Bloomfilter在HBase中的作用? ?
HBase利用Bloomfilter來提高隨機(jī)讀(Get)的性能,對于順序讀(Scan)而言,設(shè)置Bloomfilter是沒有作用的(0.92以后,如果設(shè)置了bloomfilter為ROWCOL,對于指定了qualifier的Scan有一定的優(yōu)化,但不是那種直接過濾文件,排除在查找范圍的形式)?
3.Bloomfilter在HBase中的開銷? ?
Bloomfilter是一個(gè)列族(cf)級別的配置屬性,如果你在表中設(shè)置了Bloomfilter,那么HBase會(huì)在生成StoreFile時(shí)包含一份bloomfilter結(jié)構(gòu)的數(shù)據(jù),稱其為MetaBlock;MetaBlock與DataBlock(真實(shí)的KeyValue數(shù)據(jù))一起由LRUBlockCache維護(hù)。所以,開啟bloomfilter會(huì)有一定的存儲及內(nèi)存cache開銷。?
4.Bloomfilter如何提高隨機(jī)讀(Get)的性能? ?
對于某個(gè)region的隨機(jī)讀,HBase會(huì)遍歷讀memstore及storefile(按照一定的順序),將結(jié)果合并返回給客戶端。如果你設(shè)置了bloomfilter,那么在遍歷讀storefile時(shí),就可以利用bloomfilter,忽略某些storefile。?
5.HBase中的Bloomfilter的類型及使用? ?
a)ROW, 根據(jù)KeyValue中的row來過濾storefile?
舉例:假設(shè)有2個(gè)storefile文件sf1和sf2,?
sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v)?
sf2包含kv3(r3 cf:q1 v)、kv4(r4 cf:q1 v)?
如果設(shè)置了CF屬性中的bloomfilter為ROW,那么get(r1)時(shí)就會(huì)過濾sf2,get(r3)就會(huì)過濾sf1?
b)ROWCOL,根據(jù)KeyValue中的row+qualifier來過濾storefile?
舉例:假設(shè)有2個(gè)storefile文件sf1和sf2,?
sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v)?
sf2包含kv3(r1 cf:q2 v)、kv4(r2 cf:q2 v)?
如果設(shè)置了CF屬性中的bloomfilter為ROW,無論get(r1,q1)還是get(r1,q2),都會(huì)讀取sf1+sf2;而如果設(shè)置了CF屬性中的bloomfilter為ROWCOL,那么get(r1,q1)就會(huì)過濾sf2,get(r1,q2)就會(huì)過濾sf1?
6.ROWCOL一定比ROW效果好么? ?
不一定?
a)ROWCOL只對指定列(Qualifier)的隨機(jī)讀(Get)有效,如果應(yīng)用中的隨機(jī)讀get,只含row,而沒有指定讀哪個(gè)qualifier,那么設(shè)置ROWCOL是沒有效果的,這種場景就應(yīng)該使用ROW?
b)如果隨機(jī)讀中指定的列(Qualifier)的數(shù)目大于等于2,在0.90版本中ROWCOL是無效的,而在0.92版本以后,HBASE-2794對這一情景作了優(yōu)化,是有效的(通過KeyValueScanner#seekExactly)?
c)如果同一row多個(gè)列的數(shù)據(jù)在應(yīng)用上是同一時(shí)間put的,那么ROW與ROWCOL的效果近似相同,而ROWCOL只對指定了列的隨機(jī)讀才會(huì)有效,所以設(shè)置為ROW更佳?
7.ROWCOL與ROW只在名稱上有聯(lián)系,ROWCOL并不是ROW的擴(kuò)展,不能取代ROW?
8.region下的storefile數(shù)目越多,bloomfilter的效果越好?
9.region下的storefile數(shù)目越少,HBase讀性能越好 ?
可參考? http://hi.baidu.com/yizhizaitaobi/blog/item/cc1290a0a0cd69974610646f.html ?
2.Bloomfilter在HBase中的作用? ?
HBase利用Bloomfilter來提高隨機(jī)讀(Get)的性能,對于順序讀(Scan)而言,設(shè)置Bloomfilter是沒有作用的(0.92以后,如果設(shè)置了bloomfilter為ROWCOL,對于指定了qualifier的Scan有一定的優(yōu)化,但不是那種直接過濾文件,排除在查找范圍的形式)?
3.Bloomfilter在HBase中的開銷? ?
Bloomfilter是一個(gè)列族(cf)級別的配置屬性,如果你在表中設(shè)置了Bloomfilter,那么HBase會(huì)在生成StoreFile時(shí)包含一份bloomfilter結(jié)構(gòu)的數(shù)據(jù),稱其為MetaBlock;MetaBlock與DataBlock(真實(shí)的KeyValue數(shù)據(jù))一起由LRUBlockCache維護(hù)。所以,開啟bloomfilter會(huì)有一定的存儲及內(nèi)存cache開銷。?
4.Bloomfilter如何提高隨機(jī)讀(Get)的性能? ?
對于某個(gè)region的隨機(jī)讀,HBase會(huì)遍歷讀memstore及storefile(按照一定的順序),將結(jié)果合并返回給客戶端。如果你設(shè)置了bloomfilter,那么在遍歷讀storefile時(shí),就可以利用bloomfilter,忽略某些storefile。?
5.HBase中的Bloomfilter的類型及使用? ?
a)ROW, 根據(jù)KeyValue中的row來過濾storefile?
舉例:假設(shè)有2個(gè)storefile文件sf1和sf2,?
sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v)?
sf2包含kv3(r3 cf:q1 v)、kv4(r4 cf:q1 v)?
如果設(shè)置了CF屬性中的bloomfilter為ROW,那么get(r1)時(shí)就會(huì)過濾sf2,get(r3)就會(huì)過濾sf1?
b)ROWCOL,根據(jù)KeyValue中的row+qualifier來過濾storefile?
舉例:假設(shè)有2個(gè)storefile文件sf1和sf2,?
sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v)?
sf2包含kv3(r1 cf:q2 v)、kv4(r2 cf:q2 v)?
如果設(shè)置了CF屬性中的bloomfilter為ROW,無論get(r1,q1)還是get(r1,q2),都會(huì)讀取sf1+sf2;而如果設(shè)置了CF屬性中的bloomfilter為ROWCOL,那么get(r1,q1)就會(huì)過濾sf2,get(r1,q2)就會(huì)過濾sf1?
6.ROWCOL一定比ROW效果好么? ?
不一定?
a)ROWCOL只對指定列(Qualifier)的隨機(jī)讀(Get)有效,如果應(yīng)用中的隨機(jī)讀get,只含row,而沒有指定讀哪個(gè)qualifier,那么設(shè)置ROWCOL是沒有效果的,這種場景就應(yīng)該使用ROW?
b)如果隨機(jī)讀中指定的列(Qualifier)的數(shù)目大于等于2,在0.90版本中ROWCOL是無效的,而在0.92版本以后,HBASE-2794對這一情景作了優(yōu)化,是有效的(通過KeyValueScanner#seekExactly)?
c)如果同一row多個(gè)列的數(shù)據(jù)在應(yīng)用上是同一時(shí)間put的,那么ROW與ROWCOL的效果近似相同,而ROWCOL只對指定了列的隨機(jī)讀才會(huì)有效,所以設(shè)置為ROW更佳?
7.ROWCOL與ROW只在名稱上有聯(lián)系,ROWCOL并不是ROW的擴(kuò)展,不能取代ROW?
8.region下的storefile數(shù)目越多,bloomfilter的效果越好?
9.region下的storefile數(shù)目越少,HBase讀性能越好 ?
總結(jié)
以上是生活随笔為你收集整理的HBase中Bloomfilter类型的设置及使用的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: compose配置文件参数详解
- 下一篇: Hbase 高级特性Bloom filt