HBase分享系列(2)--写入细节
2015-08-04 16:10
281 查看
写入细节
写入过程
flush: MemStore->StoreFilecompaction:合并StroreFile->更大的StroreFile
split:一个region->两个region
用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。当StoreFiles Compact后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前Region Split成2个Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。
一、flush
1.启动
后台线程检测,间隔时间=hbase.server.thread.wakefrequency
size>设定值 ( hbase.hregion.memstore.flush.size)
2.其他影响因素
(1)单regionserver的memstore最大值
hbase.regionserver.global.memstore.upperLimit
(2)超过最大值,则强制flush
单regionserver的memstore最小值
hbase.regionserver.global.memstore.lowerLimit
强制flush,<时停止
Hlog数量大于默认值
hbase.regionserver.maxlogs
Hlog大小大于大于默认值
hbase.regionserver.hlog.blocksize*
hbase.regionserver.logroll.multiplier
(3).META.先flush
用户表先检查再flush
二、compaction
1.minor
(1)局部
(2)达到条件就压缩
(3)不会删除数据
2.major
Major操作是对Region下的HStore下的所有StoreFile执行合并操作,最终的结果是整理合并出一个文件。
(1)全局
(2)有间隔时间,默认一天
(3)会删除数据
(4)可以禁用
(5)1 Store -> 1StroeFile
3.启动
(1)达到检查周期
局部检查周期=hbase.regionserver.thread.splitcompactcheckfrequency
全局周期=hbase.hregion.majorcompaction
(2)Store里StoreFile数量达到设定值,设定值=hbase.hstore.compactionThreshold
三、split
1.启动
(1)达到检查周期
检查周期=hbase.regionserver.thread.splitcompactcheckfrequency
(2)Store里StoreFile大小超过设定值
设定值=hbase.hregion.max.filesize
2.过程
(1)设置状态
(2)关闭compaction&&flush
(3)来一次flush
(4)关闭列族
(5)关闭表
(6)新建两个daughter region
(7)offline parent
(8)online daughters
(9)minor compaction
3.例外
超过限定值,但是与上次写入数据是同一行
4.建议
关闭自动split,手动split
相关文章推荐
- Hibernate 学习笔记
- R语言饼图的绘制
- Android4.4深入浅出之SurfaceFlinger总体结构
- js前台分页显示后端JAVA数据响应
- 区间覆盖问题 SDUT2074
- uva 1613 Keep the Customer Satisfied
- GUI编程,单选按钮、复选框、消息框、消息响应函数的使用
- webdriver查找元素的几种方法
- NC保存报dirty解决方法
- nginx 403 forbidden 二种原因
- leetcode 084 —— Largest Rectangle in Histogram
- 红黑树
- 马云的名片进程
- 快速排序分析
- shell常用命令
- NineOldAnimations 源码解析
- codeforces 385C Bear and Prime Numbers
- 【前端学习笔记】深入学习Javascript:DOM机制
- 关于iOS推送中点击通知的几点(备忘)
- 多态(Polymoorphism)