HBase操作过程中需要大量的内存开销,毕竟Table是可以缓存在内存中的,一般会分配整个可用内存的70%给HBase的Java堆。但是不建议分配非常大的堆内存,因为GC过程持续太久会导致RegionServer处于长期不可用状态,一般16~48G内存就可以了,如果因为框架占用内存过高导致系统内存不足,框架一样会被系统服务拖死。
[victor@hadoop102 ~]$ export HBASE_OPTS="$HBASE_OPTS \
-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=60 \
-XX:+UseParNewGC -XX:ParallelGCThreads=6"
[victor@hadoop102 ~]$ export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE \
-Xmx2000m -Xms2000m -Xmn750m -XX:+UseParNewGC \
-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70"
[victor@hadoop102 ~]$ export HBASE_REGIONSERVER_OPTS=" \
$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE \
-Xmx20000m -Xms20000m -Xmn1000m -XX:+UseParNewGC \
-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70"