& lt; !——我的2013年8月19日12:45:45祝辞
, & lt; configuration>
,,& lt; property>
,,& lt; name> hbase.rpc.engine
,,& lt; value> org.apache.hadoop.hbase.ipc.WritableRpcEngine
, & lt;/property>
,,& lt; property>
,,& lt; name> hbase.hregion.max.filesize
,,& lt; value> 10737418240 & lt;/value>
& lt; !——默认值:256:说明:在当前ReigonServer上单个Reigon的最大存储空间,单个地区超过该值时,这个地区会被自动分裂成更小的地区。——在
, & lt;/property>
,,& lt; property>
,,& lt; name> hbase.rootdir
,,& lt; value> hdfs://hadoop01:8020/应用程序/hbase/data
, & lt;/property>
,,& lt; property>
,,& lt; name> hfile.block.cache.size
,,& lt; value> 0.40 & lt;/value>
& lt; !——默认值:0.2:说明:storefile的读缓存占用堆的大小百分比,0.2表示20%。该值直接影响数据读的性能
调优:当然是越大越好,如果写比读少很多,开到0.4 - -0.5也没问题。如果读写较均衡,0.3左右。如果写比读多,果断默认吧。
设置这个值的时,同时要参考hbase.regionserver.global.memstore。upperLimit,该值是memstore占堆的最大百分比,
两个参数一个影响读,一个影响写。如果两值加起来超过80 - 90%,会有伯父的风险,谨慎设置。——在
, & lt;/property>
,,& lt; property>
,,& lt; name> hbase.regionserver.global.memstore.upperLimit
,,& lt; value> 0.4 & lt;/value>
& lt; !——默认值:0.4/0.35 upperlimit说明:hbase.hregion.memstore.flush。尺寸这个参数的作用是当单个地区内所有的memstore大小总和超过指定值时,刷新该地区的所有memstore。
RegionServer的冲洗是通过将请求添加一个队列,模拟生产消费模式来异步处理的。那这里就有一个问题,当队列来不及消费,产生大量积压请求时,可能会导致内存陡增,最坏的情况是触发伯父。
,这个参数的作用是防止内存占用过大,当ReigonServer内所有地区的memstores所占用内存总和达到堆的40%时,HBase会强制块所有的更新并冲洗这些地区以释放所有memstore占用的内存。——在
, & lt;/property>
,,& lt; property>
,,& lt; name> hbase.regionserver.global.memstore.lowerLimit
,,& lt; value> 0.38 & lt;/value>
& lt; !——lowerLimit说明:同upperLimit,只不过lowerLimit在所有地区的memstores所占用内存达到堆的35%时,不冲洗所有的memstore。它会找一个memstore内存占用最大的地区,做个别冲水,此时写更新还是会被block.lowerLimit算是一个在所有地区强制平导致性能降低前的补救措施。
在日志中,表现为“* *内存刷新线程醒来高于较低的水。"
调优:这是一个堆内存保护参数,默认值已经能适用大多数场景。
,,参数调整会影响读写,如果写的压力大导致经常超过这个阀值,则调小读缓存hfile.block.cache。堆大小增大该阀值,或者余量较多时,不修改读缓存大小。
,,如果在高压情况下,也没超过这个阀值,那么建议你适当调小这个阀值再做压测,确保触发次数不要太多,然后还有较多堆余量的时候,调大hfile.block.cache.size提高读性能。——在
, & lt;/property>
, & lt; property>
,,& lt; name> hbase.hregion.memstore.block.multiplier
,,& lt; value> 2 & lt;/value>
& lt; !——默认值:2:说明:当一个区域里的memstore占用内存大小超过hbase.hregion.memstore.flush。大小两倍的大小时,阻止该地区的所有请求,进行冲洗,释放内存。
调优:这个参数的默认值还是比较靠谱的。如果你预估你的正常应用场景(不包括异常)不会出现突发写或写的量可控,那么保持默认值即可。
如果正常情况下,你的写请求量就会经常暴长到正常的几倍,那么你应该调大这个倍数并调整其他参数值,比如hfile.block.cache.size和hbase.regionserver.global.memstore。upperLimit/lowerLimit,以预留更多内存,防止HBase服务器OOM.——在
, & lt;/property>
,,& lt; property>
,,& lt; name> dfs.support.append
,,& lt; value> true
, & lt;/property>
,,& lt; property>
,,& lt; name> hbase.zookeeper.quorum
,,& lt; value> hadoop04、hadoop05 hadoop06, hadoop07
, & lt;/property>
,,& lt; property>
,,& lt; name> zookeeper.session.timeout
,,& lt; value> 60000 & lt;/value>
& lt; !——默认:180000:管理员会话超时时间,单位是毫秒——在
, & lt;/property>
,,& lt; property>
,,& lt; name> hbase.superuser