国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

HBase性能調整:架構設計

2018-09-25 15:01 更新

列族數(shù)

請參見HBase列族數(shù)量

鍵和屬性長度

請參閱:盡量減少行和列的大小。

表RegionSize

在某些表需要不同區(qū)域大小而不是配置的默認區(qū)域大小的情況下,可以通過在每個表的基礎上,通過HTableDescriptor的setFileSize來設置區(qū)域大小。

Bloom過濾器

Bloom過濾器是以其創(chuàng)建者Burton Howard Bloom的名字命名的,它是一種數(shù)據(jù)結構,用于預測給定元素是否屬于一組數(shù)據(jù)。Bloom過濾器的肯定結果并不總是準確的,但否定結果是準確的。Bloom過濾器被設計成對于數(shù)據(jù)集來說“足夠準確”,這些數(shù)據(jù)集非常大以至于傳統(tǒng)的哈希機制是不切實際的。有關Bloom過濾器的更多信息,請參閱http://en.wikipedia.org/wiki/Bloom_filter。

就HBase而言,Bloom過濾器提供了一個輕量級的內存結構,可以將給定Get操作(Bloom過濾器不能與Scans一起使用)的磁盤讀取次數(shù)減少到僅包含所需行的StoreFiles。潛在的性能增益隨著并行讀取的數(shù)量而增加。

Bloom過濾器本身存儲在每個HFile的元數(shù)據(jù)中,并且永遠不需要更新。當因為區(qū)域部署到RegionServer而打開HFile時,Bloom過濾器將加載到內存中。

HBase包括一些調整機制,用于折疊Bloom過濾器以減小大小并將誤報率保持在一個理想的范圍內。

Bloom過濾器在HBASE-1200中引入。從HBase 0.96開始,默認情況下啟用基于行的Bloom過濾器。(HBASE-8450

何時使用Bloom過濾器

從HBase 0.96開始,默認情況下啟用基于行的Bloom過濾器。您可以選擇禁用它們或更改某些表以使用行+列Bloom過濾器,具體取決于數(shù)據(jù)的特征以及如何將其加載到HBase中。

要確定Bloom過濾器是否會產生積極影響,請檢查RegionServer度量標準中的blockCacheHitRatio值。如果啟用了Bloom過濾器,則值blockCacheHitRatio應該增加,因為Bloom過濾器正在過濾掉絕對不需要的塊。

您可以選擇為行,或行+列組合來啟用Bloom過濾器。如果您通常掃描整行,則行+列組合不會提供任何好處?;谛械腂loom過濾器可以對行+列進行Get操作,但不能使用其他方法。但是,如果您有大量的列級別的Puts,以便每個StoreFile中可能存在一行,則基于行的過濾器將始終返回正結果并且不會帶來任何好處。除非每行有一列,否則行+列Bloom過濾器需要更多空間,以便存儲更多密鑰。當每個數(shù)據(jù)條目的大小至少為幾千字節(jié)時,Bloom過濾器效果最佳。

當您的數(shù)據(jù)存儲在幾個較大的StoreFiles中時,開銷將減少,以避免在低級掃描期間額外的磁盤IO找到特定的行。

Bloom過濾器需要在刪除時重建,因此可能不適合具有大量刪除的環(huán)境。

啟用Bloom過濾器

在列族上啟用Bloom過濾器。您可以使用HColumnDescriptor的setBloomFilterType方法或使用HBase API來完成此操作。有效值是NONE,ROW(默認值),或ROWCOL。

以下示例創(chuàng)建一個表,并在colfam1列族上啟用ROWCOL Bloom過濾器。

hbase> create 'mytable',{NAME => 'colfam1', BLOOMFILTER => 'ROWCOL'}

配置Bloom過濾器的服務器范圍行為

您可以在hbase-site.xml中配置以下設置。

參數(shù)默認值描述

io.storefile.bloom.enabled

yes

如果出現(xiàn)問題,設置為no以殺死服務器范圍內的Bloom過濾器

io.storefile.bloom.error.rate

.01

Bloom過濾器的平均誤報率。折疊用于維持誤報率。表示為百分比的十進制表示形式。

io.storefile.bloom.max.fold

7

保證最大折疊率。不需要更改此設置,不建議這樣做。

io.storefile.bloom.max.keys

1.28

對于默認(單個塊)Bloom過濾器,這指定了最大鍵數(shù)。

io.storefile.delete.family.bloom.enabled

true

主開關啟用Delete Family Bloom過濾器并將其存儲在StoreFile中。

io.storefile.bloom.block.size

131072

目標Bloom塊大小。大約這個大小的Bloom過濾器塊與數(shù)據(jù)塊交織。

hfile.block.bloom.cacheonwrite

false

為復合Bloom過濾器的內聯(lián)塊啟用寫入高速緩存。

ColumnFamily BlockSize

可以為表中的每個ColumnFamily配置塊大小,默認為64k。較大的單元值需要較大的塊大小。塊大小和生成的StoreFile索引之間存在反比關系(即,如果blocksize加倍,則結果索引應該大致減半)。

內存ColumnFamilies

ColumnFamilies可以選擇定義為內存中。數(shù)據(jù)仍然保留在磁盤上,就像任何其他ColumnFamily一樣。內存塊在塊緩存中具有最高優(yōu)先級,但不保證整個表將在內存中。

壓縮

生產系統(tǒng)應使用其ColumnFamily定義進行壓縮。

注意

壓縮會縮小磁盤上的數(shù)據(jù)。當它在內存中(例如,在MemStore中)或在線上(例如,在RegionServer和Client之間傳輸)時,它會膨脹。因此,雖然使用ColumnFamily壓縮是最佳做法,但它不會完全消除過大的Keys,過大的ColumnFamily名稱或過大的列名稱的影響。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號