hbase 各个概念,region,storefile
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过多影响读性能。
最新文章
- 虚拟机利用Host-only实现在不插网线的情况下,虚拟机与主机实现双向通信,实现ssh连接以及samba服务实现共享
- svn清除已保存的用户名和密码
- struts2学习记录
- oracle之rownum(伪列)
- hdu 2639 Bone Collector II (01背包,求第k优解)
- Navicat Premium 未保存的SQL如何找回 ?
- rails第一次做项目
- 【Android - 进阶】之MultiDex的配置
- mac上访问samba服务器
- javascript预加载和延迟加载
- python 程序退出方式
- 论文笔记--PCN:Real-Time Rotation-Invariant Face Detection with Progressive Calibration Networks
- HTTP和SOAP完全就是两个不同的协议
- 解决ios10以上H5页面手势、双击缩放问题
- [Swift]LeetCode357. 计算各个位数不同的数字个数 | Count Numbers with Unique Digits
- 资源中心的ES 服务的COM.IFLYTEK.ERSP.API.RESOURCEAPI 接口注册ZOOKEEPER失败,解决记录
- BZOJ.1132.[POI2008]Tro(极角排序)
- Linux 关闭网络管理服务
- RMAN中%d %t %s %u,%p,%c 等代替变量的意义
- Android draw Rect 坐标图示
热门文章
- oracle 运维基础
- ibatis插入数据后返回自增长的主键
- Maven内置隐式变量(转)
- JavaScript【面向对象】-静态方法-私有方法-公有方法-特权方法
- 修改Jenkins启动衍生进程的生命周期
- 使用NodeJS将XML解析成JSON及性能比较
- redis在windows上的安装
- 视频最后用使用了function(i,ot)一笔带过,但我看不懂i和ot这2个参数的具体值是怎么获取得到的,能不能说一下参数传递过程?
- Using Redis as Django's session store and cache backend
- linux 多网卡 跃点数