日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HBase总结(九)Bloom Filter概念和原理

發(fā)布時間:2024/1/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HBase总结(九)Bloom Filter概念和原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Bloom Filter是一種空間效率很高的隨機(jī)數(shù)據(jù)結(jié)構(gòu),它利用位數(shù)組很簡潔地表示一個集合,并能判斷一個元素是否屬于這個集合。Bloom Filter的這種高效是有一定代價的:在判斷一個元素是否屬于某個集合時,有可能會把不屬于這個集合的元素誤認(rèn)為屬于這個集合(false positive)。因此,Bloom Filter不適合那些“零錯誤”的應(yīng)用場合。而在能容忍低錯誤率的應(yīng)用場合下,Bloom Filter通過極少的錯誤換取了存儲空間的極大節(jié)省。

集合表示和元素查詢

下面我們具體來看Bloom Filter是如何用位數(shù)組表示集合的。初始狀態(tài)時,Bloom Filter是一個包含m位的位數(shù)組,每一位都置為0

為了表達(dá)S={x1, x2,…,xn}這樣一個n個元素的集合,Bloom Filter使用k個相互獨(dú)立的哈希函數(shù)(Hash Function),它們分別將集合中的每個元素映射到{1,…,m}的范圍中。對任意一個元素x,第i個哈希函數(shù)映射的位置hi(x)就會被置為11ik)。注意,如果一個位置多次被置為1,那么只有第一次會起作用,后面幾次將沒有任何效果。在下圖中,k=3,且有兩個哈希函數(shù)選中同一個位置(從左邊數(shù)第五位)。???

?

在判斷y是否屬于這個集合時,我們對y應(yīng)用k次哈希函數(shù),如果所有hi(y)的位置都是11ik),那么我們就認(rèn)為y是集合中的元素,否則就認(rèn)為y不是集合中的元素。下圖中y1就不是集合中的元素。y2或者屬于這個集合,或者剛好是一個false positive

錯誤率估計

前面我們已經(jīng)提到了,Bloom Filter在判斷一個元素是否屬于它表示的集合時會有一定的錯誤率(false positive rate),下面我們就來估計錯誤率的大小。在估計之前為了簡化模型,我們假設(shè)kn<m且各個哈希函數(shù)是完全隨機(jī)的。當(dāng)集合S={x1, x2,…,xn}的所有元素都被k個哈希函數(shù)映射到m位的位數(shù)組中時,這個位數(shù)組中某一位還是0的概率是:

其中1/m表示任意一個哈希函數(shù)選中這一位的概率(前提是哈希函數(shù)是完全隨機(jī)的),(1-1/m)表示哈希一次沒有選中這一位的概率。要把S完全映射到位數(shù)組中,需要做kn次哈希。某一位還是0意味著kn次哈希都沒有選中它,因此這個概率就是(1-1/m)的kn次方。令p = e-kn/m是為了簡化運(yùn)算,這里用到了計算e時常用的近似:

?

令ρ為位數(shù)組中0的比例,則ρ的數(shù)學(xué)期望E(ρ)=?p’。在ρ已知的情況下,要求的錯誤率(false positive rate)為:

(1-ρ)為位數(shù)組中1的比例,(1-ρ)k就表示k次哈希都剛好選中1的區(qū)域,即false positive rate。上式中第二步近似在前面已經(jīng)提到了,現(xiàn)在來看第一步近似。p’只是ρ的數(shù)學(xué)期望,在實(shí)際中ρ的值有可能偏離它的數(shù)學(xué)期望值。M. Mitzenmacher已經(jīng)證明[2]?,位數(shù)組中0的比例非常集中地分布在它的數(shù)學(xué)期望值的附近。因此,第一步的近似得以成立。分別將pp’代入上式中,得:

???

???

相比p’f’,使用pf通常在分析中更為方便。

最優(yōu)的哈希函數(shù)個數(shù)

既然Bloom Filter要靠多個哈希函數(shù)將集合映射到位數(shù)組中,那么應(yīng)該選擇幾個哈希函數(shù)才能使元素查詢時的錯誤率降到最低呢?這里有兩個互斥的理由:如果哈希函數(shù)的個數(shù)多,那么在對一個不屬于集合的元素進(jìn)行查詢時得到0的概率就大;但另一方面,如果哈希函數(shù)的個數(shù)少,那么位數(shù)組中的0就多。為了得到最優(yōu)的哈希函數(shù)個數(shù),我們需要根據(jù)上一小節(jié)中的錯誤率公式進(jìn)行計算。

?

先用pf進(jìn)行計算。注意到f = exp(k ln(1 ? e?kn/m)),我們令g = k ln(1 ? e?kn/m),只要讓g取到最小,f自然也取到最小。由于p = e-kn/m,我們可以將g寫成

根據(jù)對稱性法則可以很容易看出當(dāng)p = 1/2,也就是k = ln2· (m/n)時,g取得最小值。在這種情況下,最小錯誤率f等于(1/2)k??(0.6185)m/n。另外,注意到p是位數(shù)組中某一位仍是0的概率,所以p = 1/2對應(yīng)著位數(shù)組中0和1各一半。換句話說,要想保持錯誤率低,最好讓位數(shù)組有一半還空著。

?

需要強(qiáng)調(diào)的一點(diǎn)是,p = 1/2時錯誤率最小這個結(jié)果并不依賴于近似值pf。同樣對于f’ = exp(k ln(1 ? (1 ? 1/m)kn))g’ = k ln(1 ? (1 ? 1/m)kn)p’ = (1 ? 1/m)kn,我們可以將g’寫成

同樣根據(jù)對稱性法則可以得到當(dāng)p’ = 1/2時,g’取得最小值。

位數(shù)組的大小

下面我們來看看,在不超過一定錯誤率的情況下,Bloom Filter至少需要多少位才能表示全集中任意n個元素的集合。假設(shè)全集中共有u個元素,允許的最大錯誤率為?,下面我們來求位數(shù)組的位數(shù)m

?

假設(shè)X為全集中任取n個元素的集合,F(X)是表示X的位數(shù)組。那么對于集合X中任意一個元素x,在s = F(X)中查詢x都能得到肯定的結(jié)果,即s能夠接受x。顯然,由于Bloom Filter引入了錯誤,s能夠接受的不僅僅是X中的元素,它還能夠? (u - n)false positive。因此,對于一個確定的位數(shù)組來說,它能夠接受總共n + ? (u - n)個元素。在n + ? (u - n)個元素中,s真正表示的只有其中n個,所以一個確定的位數(shù)組可以表示

個集合。m位的位數(shù)組共有2m個不同的組合,進(jìn)而可以推出,m位的位數(shù)組可以表示

???

個集合。全集中n個元素的集合總共有

???

個,因此要讓m位的位數(shù)組能夠表示所有n個元素的集合,必須有

???

即:

???

上式中的近似前提是n?u相比很小,這也是實(shí)際情況中常常發(fā)生的。根據(jù)上式,我們得出結(jié)論:在錯誤率不大于?的情況下,m至少要等于n log2(1/?)才能表示任意n個元素的集合。

?

上一小節(jié)中我們曾算出當(dāng)k = ln2· (m/n)時錯誤率f最小,這時f = (1/2)k?= (1/2)mln2 / n。現(xiàn)在令f?,可以推出

這個結(jié)果比前面我們算得的下界n log2(1/?)大了log2?e??1.44倍。這說明在哈希函數(shù)的個數(shù)取到最優(yōu)時,要讓錯誤率不超過?m至少需要取到最小值的1.44倍。

總結(jié)

在計算機(jī)科學(xué)中,我們常常會碰到時間換空間或者空間換時間的情況,即為了達(dá)到某一個方面的最優(yōu)而犧牲另一個方面。Bloom Filter在時間空間這兩個因素之外又引入了另一個因素:錯誤率。在使用Bloom Filter判斷一個元素是否屬于某個集合時,會有一定的錯誤率。也就是說,有可能把不屬于這個集合的元素誤認(rèn)為屬于這個集合(False Positive),但不會把屬于這個集合的元素誤認(rèn)為不屬于這個集合(False Negative)。在增加了錯誤率這個因素之后,Bloom Filter通過允許少量的錯誤來節(jié)省大量的存儲空間。

?

自從Burton Bloom70年代提出Bloom Filter之后,Bloom Filter就被廣泛用于拼寫檢查和數(shù)據(jù)庫系統(tǒng)中。近一二十年,伴隨著網(wǎng)絡(luò)的普及和發(fā)展,Bloom Filter在網(wǎng)絡(luò)領(lǐng)域獲得了新生,各種Bloom Filter變種和新的應(yīng)用不斷出現(xiàn)。可以預(yù)見,隨著網(wǎng)絡(luò)應(yīng)用的不斷深入,新的變種和應(yīng)用將會繼續(xù)出現(xiàn),Bloom Filter必將獲得更大的發(fā)展。

參考資料

[1] A. Broder and M. Mitzenmacher.?Network applications of bloom filters: A survey. Internet Mathematics, 1(4):485–509, 2005.

[2] M. Mitzenmacher.?Compressed Bloom Filters. IEEE/ACM Transactions on Networking 10:5 (2002), 604—612.

[3]?www.cs.jhu.edu/~fabian/courses/CS600.624/slides/bloomslides.pdf

[4]?http://166.111.248.20/seminar/2006_11_23/hash_2_yaxuan.ppt


原文:http://blog.csdn.net/jiaomeng/article/details/1495500

總結(jié)

以上是生活随笔為你收集整理的HBase总结(九)Bloom Filter概念和原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。