1.设置RegionServer Handler数量

  1. 参数1hbase.regionserver.handler.count
  2. 作用:用于RegionServer可以同时处理多少请求的线程数。
  3. 默认10
  4. 开启RPC级别的日志:
  5. 1.HBase Web--> Log Level
  6. 2.进入Log Level->org.apache.hadoop.ipc
  7. 3.更改RPC日志级别
  8. 在第二行 第一个文本框输入”org.apache.hadoop.ipc“,第二个文本框输入”DEBUG“,点击SetLogLevel

调整BlockCache大小

  1. 参数:hfile.block.cache.size
  2. 作用:读缓存占用堆内存大小百分比 默认0.25,表示25%
  3. 该参数直接影响数据查询操作的性能
  4. RegionServer的堆内存两个部分
  5. 一个部分作为Memstore 主要用来写
  6. 另一个部分:BlockCache 主要用于读
  7. 写请求:先写入MemStore,RegionServer会给每个Region提供一个MemStore
  8. RegionServer会给每个Region提供一个Memstore,当每个Memstore,当每MemStore128MB以后,会启动flush刷新到磁盘
  9. MemStore的总大小超过限制时(heapsize*hbase.regionserver.global.memstore.upperLimit*0.9)会强制启动flush
  10. 读请求:先到Memstore中查数据,查不到就到BlockCache中查,再查不到就会到磁盘上读,并把结果放入BlockCache
  11. 由于BlockCache采用的是LRU策略,因此BlockCache达到上限
  12. heapsize*hfile.block.cache.size*0.85)后,会启动淘汰机制,淘汰掉最老一批数据
  13. 注意:
  14. 1.BlockCacheMemStore占比总和不能超过堆内存的80%
  15. 2.以读为主的业务多,则调整该值(调到0.4是可以的)
  16. 反之,使用默认配置即可
  17. 3.不要关闭BlockCache(hbase.block.cache.size 设置为0
  18. RegionServer会花很多时间不停加载HFile索引,增大磁盘I/O开销

设置MemStore的上下限

  1. 1.MemStore上限
  2. hbase.regionserver.global.memstore.upperLimit,
  3. 表示:RegionServer上所有RegionMemStore的大小的上限,默认值是0.4
  4. 即:当某个RegionServer上所有的RegionMemStore的大小达到40%时,触发全局flush操作。
  5. hbase.hregion.memstore.flush.size
  6. 参数:当单个Region内所有的MemStore大小总和超过指定值时,触发flush操作(默认值:128M
  7. hbase.regionserver.global.memstore.size
  8. MemStore下限:
  9. hbase.regionserver.global.memstore.lowerLimit,
  10. RegionServer上所有RegionMemStore的大小的下限,默认值0.35
  11. 即当某个RegionServer上所有RegionMemStore的大小达到35%时,并不触发全局flush操作
  12. hbase.regionserver.global.memstore.size.lower.limit

调整影响合并的文件数

  1. HStore 阻塞存储文件
  2. hbase.hstore.blockingStoreFiles
  3. 默认子:10
  4. 超过7StoreFile触发合并操作

调整MemStore的flush因子

  1. HBase Memstore 刷新大小
  2. hbase.hregion.memstore.flush.size
  3. 当某个RegionMemStore占用内存大小超过hbase.hregion.memstore.flush.size倍数时,阻塞该Region的所有请求,触发flush操作,释放内存。
  4. 如果存在写入经常暴涨到正常的几倍,那么应该该数,并且预留更多的内存

调整单个文件大小

  1. HBase 文件最大大小
  2. hbase.hregion.max.filesize
  3. 作用:用于定义单个HStoreFile的大小,该默认值:10GB
  4. 当单个Region文件大小超过该值时,会触发Split操作,将该文件分裂为多个更小的Region文件。

调整Zookeeper Session的有效时长

  1. ZooKeeper 会话超时
  2. zookeeper.session.timeout
  3. 作用:
  4. 定义连接ZookeeperSession的有效时长,默认值180
  5. 1.某个RegionServer宕机,HMaster至少180秒才能察觉到,然后开始恢复
  6. 2.客户端读写过程中,如果服务端不能提供服务,客户端直到180秒后才能察觉到