001

  1. 环境配置说明:
  2. 5G内存
  3. 30G硬盘
  4. 遇到的问题:
  5. 在Hbase进行数据迁移的时候,出现RS宕机,HM宕机的现象

调优方向:

  1. 001
  2. HBase 客户端写入缓冲 将原来的2M 调至1M
  3. hbase.client.write.buffer
  4. ---
  5. 写入缓冲区大小(以字节为单位)。较大缓冲区需要客户端和服务器中有较大内存,因为服务器将实例化已通过的写入缓冲区并进行处理,这会降低远程过程调用 (RPC) 的数量。为了估计服务器已使用内存的数量,请用值“hbase.client.write.buffer”乘以“hbase.regionserver.handler.count”
  1. 002
  2. HBase Memstore 刷新大小 将原来的128M 调至 64M
  3. hbase.hregion.memstore.flush.size
  4. 如 memstore 大小超过此值(字节数),Memstore 将刷新到磁盘。通过运行由 hbase.server.thread.wakefrequency 指定的频率的线程检查此值。
  1. 003
  2. HBase RegionServer 的 Java 堆栈大小(字节) 将原来的4 吉字节 调至 50兆字节
  3. Java 进程堆栈内存的最大大小(以字节为单位)。已传递到 Java -Xmx。
  1. 004
  2. HBase RegionServer 的 Java 配置选项
  3. 这些参数将作为 Java 命令行的一部分传递。通常,垃圾回收标志、PermGen 或额外调试标志将传递到此处。
  4. -XX:+UseCompressedOops \\ 压缩指针,解决内存占用
  5. -XX:+UseParNewGC \\ 设置年轻代为并行收集
  6. -XX:+UseConcMarkSweepGC \\ 使用CMS内存收集
  7. -XX:+CMSClassUnloadingEnabled
  8. // 相对于并行收集器,CMS收集器默认不会对永久代进行垃圾回收。如果希望对永久代进行垃圾回收,可用设置标志-XX:+CMSClassUnloadingEnabled。 在早期JVM版本中,要求设置额外的标志-XX:+CMSPermGenSweepingEnabled。注意,即使没有设置这个标志,一旦永久代耗尽空 间也会尝试进行垃圾回收,但是收集不会是并行的,而再一次进行Full GC。
  9. -XX:+UseCMSCompactAtFullCollection // 使用并发收集器时,开启对年老代的压缩
  10. -XX:CMSFullGCsBeforeCompaction=0 //由于并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生”碎片”,使得运行效率降低.此值设置运行多少次GC以后对内存空间进行压缩,整理
  11. -XX:+CMSParallelRemarkEnabled // 降低标记停顿
  12. -XX:CMSInitiatingOccupancyFraction=75 // 使用cms作为垃圾回收使用75%后开始CMS收集
  13. -XX:SoftRefLRUPolicyMSPerMB=0 // 每兆堆空闲空间中SoftReference的存活时间