关于hbase 的一些基本概念
包含访问hbase的接口,client维护着一些cache来加快对hbase的访问,比如regione的位置信息。
MasterServer
HBase的压缩
当由内存将文件flush到硬盘上时,会创建很多的hfile文件,对这些hfile文件需要压缩,包含minor compactions and major compactions
minor压缩,是将多个小的文件合并成大的文件,执行n路合并。
major压缩,是指将一个column family的文件都存储为一个大文件,同时他还扫描删除标示,或者过期的版本信息。
HBASE的删除 HBASE的删除意义hbase的delete命令,并不是真的删除了文件,而是设置一个标记(delete marker)。用户在检索数据的时候,会过滤掉这些标示的数据。
HBASE的删除种类HBase的删除标记有三种:
1. version delete marker 删除指定version的某个qualifier对应的value
2. column delete marker 删除某个qualifier的所有version的数据
3. family delete marker 删除column family 下所有qualifier对应的所有version的数据
如何基于时间查询已经查询的数据还可以再column和family delete marker上打上时间戳,这时,只有小于这个时间戳的version才会被影响到。
HBase允许进行基于时间的查询从而得到指定时间段的历史数据。查询时间T的数据即查询[0,T+1)的数据。这样就带来了一个潜在的问题。当一个delete marker被set上,所有被它影响到的数据都不再可见。如果你在时间T put了一个qualifier为C的数据,接着在T+X的时间点删除这个qualifier,此时查询[0,T+1)时间段的数据将不会返回qualifier为C的这个KV对。
HBASE-4536 https://issues.apache.org/jira/browse/HBASE-4536解决了这个问题,可以通过在shell里建表时加上 KEEP_DELETED_CELLS= true或在java client上调用时加上HColumnDescriptor.setKeepDeletedCells(true)。这样,被删除的数据在基于时间的历史数据查询中依然可见(当然要保证delete marker的时间戳不在历史查询的时间范围内)。就刚才的例子来说,加上这个支持后,查询[0,T+1)时间段的数据将会返回C,而查询[0,T+X+1)时间段的数据将不会返回C,因为在该时间点,C也已经被删除了。
将表的属性KEEP_DELETED_CELLS设置为on,是为了使 flashback queries能返回正确的结果
第十二届 BigData NoSQL Meetup — 基于hbase的New sql落地实践 立即下载
相关文章
- hbase 1.+版本集成zeppelin 0.8.2
- HBase基本原理
- HBase 快速入门(安装和命令操作)
- Hbase(三) hbase协处理器与二级索引详解大数据
- Hbase(六) hbase Java API详解大数据
- Hbase(七)hbase高级编程详解大数据
- Hadoop综合练习第十节–HBase安装部署详解大数据
- HBase学习之路 (一)HBase基础介绍详解大数据
- MapReduce操作HBase详解大数据
- HBase-1.2.1之HRegionServer启动源码学习详解大数据
- HBase特征详解大数据
- HBase数据迁移到Kafka实战详解大数据
- 高可用Hadoop平台-HBase集群搭建详解大数据
- 如何在Linux上启动HBase?(linux启动hbase)
- HBase在Linux上的应用及调优(hbaselinux)
- hbase数据迁移至oracle的实践之旅(hbase转oracle)
- Apache HBase MTTR 优化实践:减少恢复时长