1.设置RegionServer Handler数量
参数1:hbase.regionserver.handler.count
作用:用于RegionServer可以同时处理多少请求的线程数。
默认10
开启RPC级别的日志:
1.HBase Web--> Log Level
2.进入Log Level->org.apache.hadoop.ipc
3.更改RPC日志级别
在第二行 第一个文本框输入”org.apache.hadoop.ipc“,第二个文本框输入”DEBUG“,点击SetLogLevel
调整BlockCache大小
参数:hfile.block.cache.size
作用:读缓存占用堆内存大小百分比 默认0.25,表示25%
该参数直接影响数据查询操作的性能
RegionServer的堆内存两个部分
一个部分作为Memstore 主要用来写
另一个部分:BlockCache 主要用于读
写请求:先写入MemStore,RegionServer会给每个Region提供一个MemStore
RegionServer会给每个Region提供一个Memstore,当每个Memstore,当每MemStore满128MB以后,会启动flush刷新到磁盘
当MemStore的总大小超过限制时(heapsize*hbase.regionserver.global.memstore.upperLimit*0.9)会强制启动flush
读请求:先到Memstore中查数据,查不到就到BlockCache中查,再查不到就会到磁盘上读,并把结果放入BlockCache
由于BlockCache采用的是LRU策略,因此BlockCache达到上限
(heapsize*hfile.block.cache.size*0.85)后,会启动淘汰机制,淘汰掉最老一批数据
注意:
1.BlockCache和MemStore占比总和不能超过堆内存的80%
2.以读为主的业务多,则调整该值(调到0.4是可以的)
反之,使用默认配置即可
3.不要关闭BlockCache(hbase.block.cache.size 设置为0)
RegionServer会花很多时间不停加载HFile索引,增大磁盘I/O开销
设置MemStore的上下限
1.MemStore上限
hbase.regionserver.global.memstore.upperLimit,
表示:RegionServer上所有Region的MemStore的大小的上限,默认值是0.4
即:当某个RegionServer上所有的RegionMemStore的大小达到40%时,触发全局flush操作。
hbase.hregion.memstore.flush.size:
参数:当单个Region内所有的MemStore大小总和超过指定值时,触发flush操作(默认值:128M)
hbase.regionserver.global.memstore.size
MemStore下限:
hbase.regionserver.global.memstore.lowerLimit,
RegionServer上所有Region的MemStore的大小的下限,默认值0.35
即当某个RegionServer上所有Region的MemStore的大小达到35%时,并不触发全局flush操作
hbase.regionserver.global.memstore.size.lower.limit
调整影响合并的文件数
HStore 阻塞存储文件
hbase.hstore.blockingStoreFiles
默认子:10
超过7个StoreFile触发合并操作
调整MemStore的flush因子
HBase Memstore 刷新大小
hbase.hregion.memstore.flush.size
当某个Region的MemStore占用内存大小超过hbase.hregion.memstore.flush.size倍数时,阻塞该Region的所有请求,触发flush操作,释放内存。
如果存在写入经常暴涨到正常的几倍,那么应该该数,并且预留更多的内存
调整单个文件大小
HBase 文件最大大小
hbase.hregion.max.filesize
作用:用于定义单个HStoreFile的大小,该默认值:10GB
当单个Region文件大小超过该值时,会触发Split操作,将该文件分裂为多个更小的Region文件。
调整Zookeeper Session的有效时长
ZooKeeper 会话超时
zookeeper.session.timeout
作用:
定义连接Zookeeper的Session的有效时长,默认值180秒
1.某个RegionServer宕机,HMaster至少180秒才能察觉到,然后开始恢复
2.客户端读写过程中,如果服务端不能提供服务,客户端直到180秒后才能察觉到