HBase写性能优化之参数篇



 

  1. hbase.regionserver.handler.count (hbase-site.xml)
    默认值:10
    参数说明:每个Region Server上的RPC Handler的数量,提升RPC Handler的数量可以一定程度上提高HBase在处理大量并发时接收请求的能力

  2. HBASE_HEAPSIZE(hbase-env.sh)
    默认值:1000M
    参数说明:HBase对内存的消耗比较大,默认的内存分配太小了,建议将内存总大小的一半分配给HBASE_HEAPSIZE

  3. HBASE_OPTS(hbase-env.sh)
    默认值:UseConcMarkSweepGC
    参数说明:UseConcMarkSweepGC为并发收集器,并发收集在应用运行时进行收集,所以必须保证收集完成之前有足够的内存空间供程序使用,否则会出现“Concurrent Mode Failure”
    默认触发GC的时机是当年老代内存达到90%的时候,调整到70%~80%左右会比较好-XX:CMSInitiatingOccupancyFraction=<N>指定还有多少剩余堆时开始执行并发收集。
    主要是为了避免发生Full GC
    参考文章:http://hi.baidu.com/jiangyangw3r/item/402dc1abec3b859e15107383
  4. hbase.hregion.memstore.mslab.enabled (hbase-site.xml)
    默认值:
    在0.94版中(当前使用)默认值是 false,
    在0.92版中(当前使用)默认值是 true,
    在0.90版中(当前使用)默认值是 false
    参数说明:
    设置为true时,可以减少因内存碎片导致的Full GC,提高整体性能。
    原理:
    相当于预先分配内存,避免每一个值都要从堆里分配内存,减少内存碎片,默认会分配2MB大小的chunk(可以通过 hbase.hregion.memstore.mslab.chunksize 设定chunk的大小)在每个region上,当chunk满时会进行flush。
    但是也需要考虑mslab的大小= regions * number of column families * 2MB ,对于region数量过多会导致占有比较多的内存,是否会影响到应用的性能问题,这可能是导致apache官方对这个参数的默认值进行修订的原因
    官方解释:
             

你可能感兴趣的:(hbase)