1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      hbase中的位圖索引--布隆過濾器

         在hbase中,讀業(yè)務(wù)是非常頻繁的。很多操作都是客戶端根據(jù)meta表定位到具體的regionserver然后再查詢r(jià)egion中的具體的數(shù)據(jù)。

      創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司,專注成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站營銷推廣,域名申請,網(wǎng)絡(luò)空間,綿陽服務(wù)器托管有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問題,請聯(lián)系創(chuàng)新互聯(lián)。

         但是現(xiàn)在問題來了,一個(gè)region由一個(gè)memstore以及多個(gè)filestore組成,memstore類似緩存在服務(wù)器內(nèi)存中,可以提高插入的效率,當(dāng)memstore達(dá)到一定大小(由hbase.hregion.memstore.flush.size設(shè)置)或者說用戶手動flush之后,就會固化存儲在hdfs之類的磁盤系統(tǒng)上。也就是說一個(gè)region可以對應(yīng)很多有著有效數(shù)據(jù)的文件,雖然文件內(nèi)的數(shù)據(jù)是按照rowkey進(jìn)行排序的,但是文件之間的rowkey并沒有任何順序(除非經(jīng)過一次major_compact合并為一個(gè)文件)。

         如果用戶現(xiàn)在提出的請求是查看一個(gè)rowkey(row1)的隨意某個(gè)列(cf1:col1)

         即使用 get 'tab','row1','cf1:col1'這樣命令

         很有可能的一種現(xiàn)象是,row1在每個(gè)文件的startkey以及endkey之間,因此regionserver需要掃描每個(gè)文件的相關(guān)數(shù)據(jù)塊,進(jìn)行多次物理IO。可是并不能確保每個(gè)文件中一定有row1這樣的行健,很多物理IO都是無效的,這樣以來對性能就有很大的影響。于是乎就有了布隆過濾器,在一定程度上判別文件中是否有指定的行健。

         布隆過濾器分為row以及rowcol兩種,原理差不多,以rowcol類型為例:

         在memstore寫入到hdfs形成文件時(shí),文件內(nèi)有一個(gè)部分叫做meta,在寫入的過程中遵循如下算法:

          1.首先會初始化一個(gè)比較長的bit數(shù)組不妨叫做bit arr[n]={0};

          2.利用k個(gè)hash函數(shù)(k

          3.假設(shè)某個(gè)hash函數(shù)的運(yùn)算結(jié)果為r,則設(shè)置arr[r]=1,這樣每個(gè)(row:cf:col)差不多都可以有k個(gè)結(jié)果,并將arr數(shù)據(jù)相應(yīng)位置設(shè)置為1;

          4.如此反復(fù)知道所有的數(shù)據(jù)都被寫入文件,然后將arr寫入文件中的meta部分

         由于位圖索引本身的結(jié)構(gòu)特點(diǎn),可以保證arr[n]不會很大;所以即使被緩存到內(nèi)存中(不是memstore)也不會占用太大空間,雖然在關(guān)系型數(shù)據(jù)庫中,尤其是oltp系統(tǒng),位圖索引會造成大量鎖現(xiàn)象,但是在hbase中,已經(jīng)寫入的文件除非compact否則幾乎不會修改。

         現(xiàn)在再來看 get 'tab','row1','cf1:col1',在判斷某個(gè)文件是否含有(row1:cf1:col1)時(shí),只需要將row1:cf1:col1進(jìn)行k個(gè)hash運(yùn)算,并判斷是否每個(gè)結(jié)果對應(yīng)的arr數(shù)組值是不是1,如果有一個(gè)不是,則可以表明文件中不存在這一列數(shù)據(jù)(當(dāng)然即使全部都是1也不一定代表就有),這樣可以避免讀不必要的文件,提高查詢效率。

         從上可見布隆過濾器可以在一定程度上避免讀不必要的文件,可是由于是基于hash函數(shù)的,所以也不能說是完全準(zhǔn)確的,而且對于大規(guī)模的scan這樣的操作,完全沒有必要使用布隆過濾器。

                              2017.1.15


      當(dāng)前文章:hbase中的位圖索引--布隆過濾器
      分享URL:http://ef60e0e.cn/article/gssdpc.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        葫芦岛市| 扎兰屯市| 德格县| 呈贡县| 南川市| 邓州市| 科技| 师宗县| 石楼县| 高尔夫| 乌拉特前旗| 武邑县| 长汀县| 荔波县| 津市市| 青田县| 卢氏县| 鹤岗市| 嘉定区| 涟水县| 闸北区| 自贡市| 逊克县| 鄂温| 榕江县| 漠河县| 呈贡县| 镇江市| 三亚市| 内黄县| 若尔盖县| 黎川县| 柳州市| 乌鲁木齐县| 电白县| 温泉县| 康保县| 宁晋县| 昭通市| 公安县| 肃北|