先调大堆内存
默认的RegionServer的内存才1GB,而Memstore默认是占40%,所以分配给Memstore的才400MB,在实际场景下,很容易就写阻塞了。可以通过指定HBASE_HEAPSIZE参数来调整所有HBase实例(不管是Master还是RegionServer)占用的内存大小。
修改$HBASE_HOME/conf/hbase-env.sh为
export HBASE_HEAPSIZE=8G
这个参数会影响所有HBase实例,包括Master和Region。这样的话Master和RegionServer都会占用8GB,建议用Master和RegionServer专有的参数来分别设定他们的内存大小。
PermSize的调整
hbase-env.sh中
提示
这两句配置的意思是Master和RegionServer的永久对象区(Permanent Generation,这个区域在非堆内存里面)占用了128MB的内存。根据注释的意思是这个配置存在的意义是为了在JDK 7下可以安全运行实例,所以如果你用的是JDK 8可以删掉这两行,并且由于JDK 8已经去除了PermGen,所以设置了也没用。
分别调master和regionserver的堆内村内存
这样就把Master的JVM内存设置为4GB,把RegionServer的内存设置为8GB了。
提示:永远至少留10