我正在尝试优化我的HBase集群,以进行非常频繁的并发写入和扫描 . 我已经看过很多关于这个主题的帖子,但鉴于最新版本的HBase,JAVA以及当前的内存可用性状态,其中很多都显得过时了 .
假设每个Region Server可以说128GB或更多的内存,以下变量的推荐参数是什么 .
我正在使用HBase v 1.4x和JAVA 8 .
到目前为止,我已经在_1833186中尝试了以下内容:
export HBASE_HEAPSIZE=(tried up to 64G)
export HBASE_OFFHEAPSIZE=(tried up to 32G)
export HBASE_OPTS="-XX:+UseConcMarkSweepGC -Xms2048G -Xmx2048g" (depending on the HEAPSIZE setting above)
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xms2G -Xmx2g" (again, depending on the HEAPSIZE setting above)
到目前为止,我已经注意到将堆大小增加到像64GB这样大的东西可以提高大扫描和频繁扫描的扫描性能,但会恶化响应时间的变化,特别是对于Writes .
我试图最大化响应速度和内存使用,同时避免GC延迟 . 用例是批量式加载/数据处理(即给定时间段的突发类型活动) .
谢谢!