W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
在hbase-2.0.0中,HBASE-11425更改了HBase讀取路徑,以便它可以保存讀取數據,避免將緩存數據復制到java堆上。這減少了GC暫停,因為生產的垃圾較少,所以清理的次數也較少。堆外讀取路徑的性能與堆內LRU緩存相似/更好。該功能自HBase 2.0.0開始可用。如果BucketCache處于file模式下,則與原生堆LruBlockCache相比,抓取總是比較慢。
對于端到端的非堆積式讀取路徑,首先應該有一個堆外備份的離堆塊緩存(BC)。在hbase-site.xml中將'hbase.bucketcache.ioengine'配置為off-heap 。還要指定使用hbase.bucketcache.size配置指定BC的總容量。請記住調整hbase-env.sh中的'HBASE_OFFHEAPSIZE'的值。這是我們如何為RegionServer java進程指定最大可能的堆外存儲器分配。這應該比BC的堆外尺寸大。請記住,默認情況下沒有默認設置,hbase.bucketcache.ioengine默認關閉BC。
接下來要調整的是RPC服務器端的ByteBuffer(字節(jié)緩沖區(qū))池。該池中的緩沖區(qū)將用于累積單元字節(jié),并創(chuàng)建一個結果單元塊以發(fā)送回客戶端。hbase.ipc.server.reservoir.enabled可以用來打開或關閉此池。默認情況下,此池處于可用狀態(tài)。HBase將創(chuàng)建堆外ByteBuffers并將它們合并。如果您想在讀取路徑中進行端到端的堆積,請確保不要將其關閉。如果關閉該池,服務器將在堆上創(chuàng)建臨時緩沖區(qū)以累積單元格字節(jié)并生成結果單元格塊。這可能會影響高度讀取的加載服務器上的GC。用戶可以根據池中有多少緩沖區(qū)以及每個ByteBuffer的大小來調整該池。使用配置hbase.ipc.server.reservoir.initial.buffer.size來調整每個緩沖區(qū)大小。默認值是64 KB。
當讀取模式是一個隨機行讀取負載,并且每個行的大小與64 KB相比較小時,嘗試減少此數量。當結果大小大于一個ByteBuffer大小時,服務器將嘗試抓取多個緩沖區(qū),并將結果單元格塊取出。當池用完緩沖區(qū)時,服務器將最終創(chuàng)建臨時堆緩沖區(qū)。
可以使用配置'hbase.ipc.server.reservoir.initial.max'來調整池中的最大ByteBuffers數量。它的值默認為配置了64 *個區(qū)域服務器處理程序。數學是這樣的,默認情況下我們考慮2MB作為每個讀取結果的單元塊大小,每個處理程序將處理讀取。對于2 MB大小,我們需要32個緩沖區(qū),每個大小為64 KB。所以每個處理程序有32個ByteBuffers(BB)。我們將這個大小分配為最大BB計數的兩倍,以便一個處理程序可以創(chuàng)建響應并將其交給RPC響應程序線程,然后處理新的請求,創(chuàng)建新的響應單元塊(使用池緩沖區(qū))。即使響應者不能立即發(fā)回第一個TCP響應,我們的計數應該允許我們在池中仍然有足夠的緩沖區(qū),而不必在堆上做臨時緩沖區(qū)。再次對于較小尺寸的隨機行讀數,調整此最大數量。有懶惰地創(chuàng)建的緩沖區(qū),計數是要匯集的最大數量。
如果在完成端到端讀取路徑堆外后仍然看到GC出現(xiàn)問題,請在適當的緩沖池中查找問題。使用INFO級別檢查下面的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的設置在RPC端也應考慮此關閉堆緩沖池。我們需要將RegionServer的這個最大堆外大小配置為比這個最大池大小和堆外緩存大小之和高一點。TCP層還需要為TCP通信創(chuàng)建直接的字節(jié)緩沖區(qū)。此外,DFS客戶端將需要一些堆外工作來完成其工作,特別是如果配置了短路讀取。為最大直接內存大小分配額外的1 - 2 GB已在測試中工作。
如果您正在使用協(xié)處理器并在讀取結果中引用單元格,請不要將對這些單元格的引用存儲在CP掛接方法的范圍之外。某些時候,CP需要關于單元的存儲信息(像它的行鍵),以考慮下一個CP掛接調用等。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: