99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

RegionServer Offheap讀/寫路徑

2018-05-24 11:15 更新

RegionServer Offheap讀/寫路徑

Offheap讀取路徑

在hbase-2.0.0中,HBASE-11425更改了HBase讀取路徑,以便它可以保存讀取數(shù)據(jù),避免將緩存數(shù)據(jù)復(fù)制到j(luò)ava堆上。這減少了GC暫停,因?yàn)樯a(chǎn)的垃圾較少,所以清理的次數(shù)也較少。堆外讀取路徑的性能與堆內(nèi)LRU緩存相似/更好。該功能自HBase 2.0.0開始可用。如果BucketCache處于file模式下,則與原生堆LruBlockCache相比,抓取總是比較慢。

對(duì)于端到端的非堆積式讀取路徑,首先應(yīng)該有一個(gè)堆外備份的離堆塊緩存(BC)。在hbase-site.xml中將'hbase.bucketcache.ioengine'配置為off-heap 。還要指定使用hbase.bucketcache.size配置指定BC的總?cè)萘?。?qǐng)記住調(diào)整hbase-env.sh中的'HBASE_OFFHEAPSIZE'的值。這是我們?nèi)绾螢镽egionServer java進(jìn)程指定最大可能的堆外存儲(chǔ)器分配。這應(yīng)該比BC的堆外尺寸大。請(qǐng)記住,默認(rèn)情況下沒有默認(rèn)設(shè)置,hbase.bucketcache.ioengine默認(rèn)關(guān)閉BC。

接下來要調(diào)整的是RPC服務(wù)器端的ByteBuffer(字節(jié)緩沖區(qū))池。該池中的緩沖區(qū)將用于累積單元字節(jié),并創(chuàng)建一個(gè)結(jié)果單元塊以發(fā)送回客戶端。hbase.ipc.server.reservoir.enabled可以用來打開或關(guān)閉此池。默認(rèn)情況下,此池處于可用狀態(tài)。HBase將創(chuàng)建堆外ByteBuffers并將它們合并。如果您想在讀取路徑中進(jìn)行端到端的堆積,請(qǐng)確保不要將其關(guān)閉。如果關(guān)閉該池,服務(wù)器將在堆上創(chuàng)建臨時(shí)緩沖區(qū)以累積單元格字節(jié)并生成結(jié)果單元格塊。這可能會(huì)影響高度讀取的加載服務(wù)器上的GC。用戶可以根據(jù)池中有多少緩沖區(qū)以及每個(gè)ByteBuffer的大小來調(diào)整該池。使用配置hbase.ipc.server.reservoir.initial.buffer.size來調(diào)整每個(gè)緩沖區(qū)大小。默認(rèn)值是64 KB。

當(dāng)讀取模式是一個(gè)隨機(jī)行讀取負(fù)載,并且每個(gè)行的大小與64 KB相比較小時(shí),嘗試減少此數(shù)量。當(dāng)結(jié)果大小大于一個(gè)ByteBuffer大小時(shí),服務(wù)器將嘗試抓取多個(gè)緩沖區(qū),并將結(jié)果單元格塊取出。當(dāng)池用完緩沖區(qū)時(shí),服務(wù)器將最終創(chuàng)建臨時(shí)堆緩沖區(qū)。

可以使用配置'hbase.ipc.server.reservoir.initial.max'來調(diào)整池中的最大ByteBuffers數(shù)量。它的值默認(rèn)為配置了64 *個(gè)區(qū)域服務(wù)器處理程序。數(shù)學(xué)是這樣的,默認(rèn)情況下我們考慮2MB作為每個(gè)讀取結(jié)果的單元塊大小,每個(gè)處理程序?qū)⑻幚碜x取。對(duì)于2 MB大小,我們需要32個(gè)緩沖區(qū),每個(gè)大小為64 KB。所以每個(gè)處理程序有32個(gè)ByteBuffers(BB)。我們將這個(gè)大小分配為最大BB計(jì)數(shù)的兩倍,以便一個(gè)處理程序可以創(chuàng)建響應(yīng)并將其交給RPC響應(yīng)程序線程,然后處理新的請(qǐng)求,創(chuàng)建新的響應(yīng)單元塊(使用池緩沖區(qū))。即使響應(yīng)者不能立即發(fā)回第一個(gè)TCP響應(yīng),我們的計(jì)數(shù)應(yīng)該允許我們?cè)诔刂腥匀挥凶銐虻木彌_區(qū),而不必在堆上做臨時(shí)緩沖區(qū)。再次對(duì)于較小尺寸的隨機(jī)行讀數(shù),調(diào)整此最大數(shù)量。有懶惰地創(chuàng)建的緩沖區(qū),計(jì)數(shù)是要匯集的最大數(shù)量。

如果在完成端到端讀取路徑堆外后仍然看到GC出現(xiàn)問題,請(qǐng)?jiān)谶m當(dāng)?shù)木彌_池中查找問題。使用INFO級(jí)別檢查下面的RegionServer日志:

Pool already reached its max capacity : XXX and no free buffers now. Consider increasing the value for 'hbase.ipc.server.reservoir.initial.max' ?

hbase-env.sh中HBASE_OFFHEAPSIZE的設(shè)置在RPC端也應(yīng)考慮此關(guān)閉堆緩沖池。我們需要將RegionServer的這個(gè)最大堆外大小配置為比這個(gè)最大池大小和堆外緩存大小之和高一點(diǎn)。TCP層還需要為TCP通信創(chuàng)建直接的字節(jié)緩沖區(qū)。此外,DFS客戶端將需要一些堆外工作來完成其工作,特別是如果配置了短路讀取。為最大直接內(nèi)存大小分配額外的1 - 2 GB已在測(cè)試中工作。

如果您正在使用協(xié)處理器并在讀取結(jié)果中引用單元格,請(qǐng)不要將對(duì)這些單元格的引用存儲(chǔ)在CP掛接方法的范圍之外。某些時(shí)候,CP需要關(guān)于單元的存儲(chǔ)信息(像它的行鍵),以考慮下一個(gè)CP掛接調(diào)用等。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)