HBase中有两张特殊的Table,-ROOT-和.META.
.META.:记录了用户表的Region信息,它可以有多高region(这的意思是说.META.表可以分 裂成多个region,和用户表一样)
-ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region(也就是说它不可分割)
Zookeeper中记录了-Root-表的location

region大小:

更大的Region可以使你集群上的Region的总数量较少。 一般来言,更少的Region可以使你的集群运行更加流畅。(你可以自己随时手工将大Region切割,这样单个热点Region就会被分布在集群的更多节点上)。默认情况下单个Region是256MB.你可以设置为1G。有些人使用更大的,4G甚至更多。可以调整hbase-site.xml中的hbase.hregion.max.filesize属性.

storefile:

hbase.hregion.max.filesize

默认值:256M

说明:在当前ReigonServer上单个Reigon的最大存储空间,单个Region超过该值时,这个Region会被自动split成更小的region。

调优:

小region对split和compaction友好,因为拆分region或compact小region里的storefile速度很快,内存占用低。缺点是split和compaction会很频繁。

特别是数量较多的小region不停地split, compaction,会导致集群响应时间波动很大,region数量太多不仅给管理上带来麻烦,甚至会引发一些Hbase的bug。

一般512以下的都算小region。

大region,则不太适合经常split和compaction,因为做一次compact和split会产生较长时间的停顿,对应用的读写性能冲击非常大。此外,大region意味着较大的storefile,compaction时对内存也是一个挑战。

当然,大region也有其用武之地。如果你的应用场景中,某个时间点的访问量较低,那么在此时做compact和split,既能顺利完成split和compaction,又能保证绝大多数时间平稳的读写性能。

既然split和compaction如此影响性能,有没有办法去掉?

compaction是无法避免的,split倒是可以从自动调整为手动。

只要通过将这个参数值调大到某个很难达到的值,比如100G,就可以间接禁用自动split(RegionServer不会对未到达100G的region做split)。

再配合RegionSplitter这个工具,在需要split时,手动split。

手动split在灵活性和稳定性上比起自动split要高很多,相反,管理成本增加不多,比较推荐online实时系统使用。

内存方面,小region在设置memstore的大小值上比较灵活,大region则过大过小都不行,过大会导致flush时app的IO wait增高,过小则因store file过多影响读性能。

最新文章

  1. 虚拟机利用Host-only实现在不插网线的情况下,虚拟机与主机实现双向通信,实现ssh连接以及samba服务实现共享
  2. svn清除已保存的用户名和密码
  3. struts2学习记录
  4. oracle之rownum(伪列)
  5. hdu 2639 Bone Collector II (01背包,求第k优解)
  6. Navicat Premium 未保存的SQL如何找回 ?
  7. rails第一次做项目
  8. 【Android - 进阶】之MultiDex的配置
  9. mac上访问samba服务器
  10. javascript预加载和延迟加载
  11. python 程序退出方式
  12. 论文笔记--PCN:Real-Time Rotation-Invariant Face Detection with Progressive Calibration Networks
  13. HTTP和SOAP完全就是两个不同的协议
  14. 解决ios10以上H5页面手势、双击缩放问题
  15. [Swift]LeetCode357. 计算各个位数不同的数字个数 | Count Numbers with Unique Digits
  16. 资源中心的ES 服务的COM.IFLYTEK.ERSP.API.RESOURCEAPI 接口注册ZOOKEEPER失败,解决记录
  17. BZOJ.1132.[POI2008]Tro(极角排序)
  18. Linux 关闭网络管理服务
  19. RMAN中%d %t %s %u,%p,%c 等代替变量的意义
  20. Android draw Rect 坐标图示

热门文章

  1. oracle 运维基础
  2. ibatis插入数据后返回自增长的主键
  3. Maven内置隐式变量(转)
  4. JavaScript【面向对象】-静态方法-私有方法-公有方法-特权方法
  5. 修改Jenkins启动衍生进程的生命周期
  6. 使用NodeJS将XML解析成JSON及性能比较
  7. redis在windows上的安装
  8. 视频最后用使用了function(i,ot)一笔带过,但我看不懂i和ot这2个参数的具体值是怎么获取得到的,能不能说一下参数传递过程?
  9. Using Redis as Django's session store and cache backend
  10. linux 多网卡 跃点数