HBase 操作和性能設置選項

感謝平臺分享-http://bjbsair.com/2020-04-10/tech-info/53321.html

調試HBase服務器RPC處理

  • 設置 hbase.regionserver.handler.count(在 hbase-site.xml)爲用於併發的核心 x 軸。
  • 可選地,將調用隊列分成單獨的讀取和寫入隊列以用於區分服務。該參數 hbase.ipc.server.callqueue.handler.factor 指定調用隊列的數量:

  • 0 意味着單個共享隊列。

  • 1 意味着每個處理程序的一個隊列。

  • 一個0和1之間的值,按處理程序的數量成比例地分配隊列數。例如,0.5 的值在每個處理程序之間共享一個隊列。

  • 使用 hbase.ipc.server.callqueue.read.ratio(hbase.ipc.server.callqueue.read.share在0.98中)將調用隊列分成讀寫隊列:

  • 0.5 意味着將有相同數量的讀寫隊列。

  • <0.5 表示爲讀多於寫。

  • >0.5 表示寫多於讀。

  • 設置 hbase.ipc.server.callqueue.scan.ratio(HBase 1.0+)將讀取調用隊列分爲短讀取和長讀取隊列:

  • 0.5 意味着將有相同數量的短讀取和長讀取隊列。

  • <0.5表示更多的短讀取隊列。

  • >0.5表示更多的長讀取隊列。

禁用RPC的Nagle

禁用 Nagle 的算法。延遲的 ACKs 可以增加到200毫秒的 RPC 往返時間。設置以下參數:

  • 在 Hadoop 的 core-site.xml 中:

  • ipc.server.tcpnodelay = true

  • ipc.client.tcpnodelay = true

  • 在 HBase 的 hbase-site.xml 中:

  • hbase.ipc.client.tcpnodelay = true

  • hbase.ipc.server.tcpnodelay = true

限制服務器故障影響

儘可能快地檢測區域服務器故障。設置以下參數:

  • 在 hbase-site.xml 中設置 zookeeper.session.timeout 爲30秒或更短的時間內進行故障檢測(20-30秒是一個好的開始)。
  • 檢測並避免不健康或失敗的 HDFS 數據節點:in hdfs-site.xml 和 hbase-site.xml 設置以下參數:

  • dfs.namenode.avoid.read.stale.datanode = true

  • dfs.namenode.avoid.write.stale.datanode = true

針對低延遲優化服務器端

  • 跳過本地塊的網絡。在 hbase-site.xml 中,設置以下參數:

  • dfs.client.read.shortcircuit = true

  • dfs.client.read.shortcircuit.buffer.size = 131072 (重要的是避免 OOME)

  • 確保數據局部性。在 hbase-site.xml 中,設置 hbase.hstore.min.locality.to.skip.major.compact = 0.7(意味着 0.7 <= n <= 1)
  • 確保 DataNode 有足夠的處理程序進行塊傳輸。在 hdfs-site.xml 中,設置以下參數:

  • dfs.datanode.max.xcievers >= 8192

  • dfs.datanode.handler.count = 主軸數量

JVM調優

調整JVM GC以獲取低收集延遲

  • 使用 CMS 收集器: -XX:+UseConcMarkSweepGC
  • 保持 eden 空間儘可能小,以減少平均收集時間。例:-XX:CMSInitiatingOccupancyFraction = 70
  • 優化低收集延遲而不是吞吐量: -Xmn512m
  • 並行收集 eden: -XX:+UseParNewGC
  • 避免在壓力下收集: -XX:+UseCMSInitiatingOccupancyOnly
  • 限制每個請求掃描器的結果大小,所以一切都適合倖存者空間,但沒有任職期限。在 hbase-site.xml 中,設置 hbase.client.scanner.max.result.size 爲 eden 空間的1/8(使用 - Xmn512m,這裏是〜51MB)
  • 設置 max.result.sizex handler.count 小於 survivor 空間

OS級調整

  • 關閉透明的大頁面(THP):

HBase 操作和性能配置選項

  • 設置 vm.swappiness = 0
  • 設置 vm.min_free_kbytes 爲至少 1GB(較大內存系統爲 8GB)
  • 使用 vm.zone_reclaim_mode = 0 禁用 NUMA 區域回收。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章