我有一個包含 100 行中的 100 行的 HBASE 表,我們遇到了熱點問題。
我想用加鹽的行鍵重新創建這個表。
我試圖將“org.apache.hadoop.hbase.mapreduce.Import/CopyTable”放入一個新的加鹽表中,但它沒有在行鍵前加上鹽。
我在遷移帶有前綴的行時遇到的唯一解決方案是 Phoenix 查詢:
UPSERT INTO TABLE_SALTED SELECT * FROM TABLE
然而,這是非常低效的并且需要太長時間。
如何在最短的停機時間內對現有的 HBASE/Phoenix 表加鹽?
uj5u.com熱心網友回復:
通常 Hbase 使用拆分來處理“熱點”。
也就是說,您可以手動拆分表:
split '[table_to_split]', '[split point]'
當您使用 HBASE 附帶的工具并且不需要完全重寫時,這會更有效。它只會幫助您稍微推動針,但有時這足以使您一瘸一拐。
您可以使用許多設定來幫助解決問題。查看 RegionSplitPolicy,看看您是否可以在那里找到一些幫助。
如果你想看一篇關于拆分的非常好的文章,請閱讀這篇 cloudera 文章。
我不確定您在選擇分割方面投入了多少意圖,但您確實無法獲得比選擇可靠的預分割點來處理資料更好的優化。(如果你在加鹽,很可能你已經發現了資料中的偏斜,甚至在挑選分割時的合理意圖也不能處理偏斜。除非你已經知道偏斜。)
uj5u.com熱心網友回復:
如果這個熱點問題是由重復讀取引起的,為什么不嘗試增加 file.block.cache.size& hbase_regionserver_heapsize。
'file.block.cache.size' - 用于快取的堆部分。
hbase_regionserver_heapsize- 區域服務器堆的大小。
您可以增加,file.block.cache.size但最終可能會給堆帶來更大的壓力。
下一個明顯的問題是多少?所有性能優化的答案都是一樣的。請一位專家來嘗試計算它,或者只是繼續添加一點,直到空間用完/您不再看到改進為止。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/402263.html
