HBase中的TTL与MinVersion的关系
HBase版本:1.3.1
MinVersion:如果当前存储的所有时间版本都早于TTL,至少MIN_VERSION个最新版本会保留下来。这样确保在你的查询以及数据早于TTL时有结果返回。
===先做一个实验===
1、创建一个表TEST1
包含两个列族df、ex,其中列族ex为测试对象:VERSIONS => 4, MIN_VERSIONS => 2, TTL => 3分钟
2、向该表中生产10条数据
生产数据的代码如下所示:
package api; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*; public class table_put_sample1 {
public static void main(String[] args) throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "192.168.1.80,192.168.1.81,192.168.1.82");
Connection connection = ConnectionFactory.createConnection(conf);
Table table = connection.getTable(TableName.valueOf(constants.TABLE_NAME)); for (int i = 0; i < 10; i++) {
Put put = new Put("row01".getBytes());
put.addColumn(constants.COLUMN_FAMILY_DF.getBytes(), "name".getBytes(), random.getName());
put.addColumn(constants.COLUMN_FAMILY_DF.getBytes(), "sex".getBytes(), random.getSex());
put.addColumn(constants.COLUMN_FAMILY_EX.getBytes(), "height".getBytes(), random.getHeight());
put.addColumn(constants.COLUMN_FAMILY_EX.getBytes(), "weight".getBytes(), random.getWeight());
table.put(put);
System.out.print("[------]put i=" + i + "\n");
Thread.sleep(1000);
}
table.close();
connection.close();
}
}
3、scan这个表看一下结果。
我们插入了10条数据,因为ex列族的最大半版本为4,所以,这里只保存了4个版本的数据。
4、过3分钟之后,再次扫描该表。
虽然从TTL来看,所有的数据都已经过期了,但是由于设置了MIN_VERSIONS => 2的原因,HBase仍然保留了2个版本的数据。以确保可以返回查询结果。
===再做一个实验===
1、将表的MIN_VERSIONS变更为0
变更命令:alter 'TEST1', {NAME => 'ex', MIN_VERSIONS => '0'}
3、清空TEST1表中的数据,然后再向表中插入10条数据。
《清空》
《插入10条记录》
查看命令:scan 'TEST1', {VERSIONS => 10}
4、过几分钟(TTL时间以上)再次scan表。
再次查看一下表发现ex列族的数据都被自动清理掉了。
===结论===
MinVersion:used when timeToLive is set
如果HBase中的表设置了TTL的时候,MinVersion才会起作用。
a)MIN_VERSION > 0时:
Cell至少有MIN_VERSION个最新版本会保留下来。这样确保在你的查询以及数据早于TTL时有结果返回。
b)MIN_VERSION = 0时:
Cell中的数据超过TTL时间时,全部清空,不保留最低版本。
--END--
HBase中的TTL与MinVersion的关系的更多相关文章
- 【转】HBase中Zookeeper,RegionServer,Master,Client之间关系
在2.0之前HDFS中只有一个NameNode,但对于在线的应用只有一个NameNode是不安全的,故在2.0中对NameNode进行抽象,抽象成NamService其下包含有多个NameNode,但 ...
- 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作
CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...
- HBase中MVCC的实现机制及应用情况
MVCC(Multi-Version Concurrent Control),即多版本并发控制协议,广泛使用于数据库系统.本文将介绍HBase中对于MVCC的实现及应用情况. MVCC基本原理 在介绍 ...
- [翻译]HBase 中的 ACID
同前面翻译的一篇关联的,同作者的另一篇:ACID in HBase 这一篇不是单纯地描述一个问题,而是以 ACID 为主题,介绍了其在 HBase 中各个部分的体现及实现. ACID,即:原子性(At ...
- 关于hbase中的hbase-site.xml 配置详解
该文档是用Hbase默认配置文件生成的,文件源是 hbase-default.xml hbase.rootdir 这个目录是region server的共享目录,用来持久化HBase.URL需要是'完 ...
- HBase中多Filter查询示例
在Hbase查询中有时需要用到多个Filter关联的查询. 代码如下: ArrayList<Filter> listForFilters = new ArrayList<Filter ...
- talend 将hbase中数据导入到mysql中
首先,解决talend连接hbase的问题: 公司使用的机器是HDP2.2的机器,上面配置好Hbase服务,在集群的/etc/hbase/conf/hbase-site.xml下,有如下配置: < ...
- 淘宝在hbase中的应用和优化
本文来自于NoSQLFan联合作者@koven2049,他在淘宝从事Hadoop及HBase相关的应用和优化. 对Hadoop.HBase都有深入的了解,本文就是其在工作中对HBase的应用优化小结, ...
- OpenTSDB在HBase中的底层数据结构设计
0.时序数据库 时间序列(Time Series):是一组按照时间发生先后顺序进行排列的数据点序列,通常一组时间序列的时间间隔为一恒定值(如1秒,5分钟,1小时等). 时间序列数据可被简称为时序数据. ...
随机推荐
- nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1109 > 1024
MySQL的一个系统参数:max_allowed_packet >mysql -u root -p //root登录 1. 查看系统参数:show VARIABLES like '%max_al ...
- Tool:Visual Studio
ylbtech-Tool:Visual Studio Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品.VS是一个基本完整的开发工具集,它包括了整个软件生命 ...
- 使用 Windows 运行时中异步性来始终保持应用程序能够快速流畅地运行
转自:http://blogs.msdn.com/b/windowsappdev_cn/archive/2012/03/26/windows.aspx 人类的思维方式在本质上不是同步的,这直接影响着我 ...
- 多个else if语句
public class demo { public static void main(String[] args) { boolean examIsDone = true; int score = ...
- java实现时钟方法汇总
import java.awt.Dimension; import java.text.SimpleDateFormat; import java.util.Calendar; import java ...
- C和指针 第三章--数据
简要概述: <C和指针>第三章对数据进行了描述. 其中主要讲解了---变量的三个属性:作用域.链接属性和存储类型. 这三个属性决定了该变量在“什么地方可以使用”以及“该变量的值能够保持多久 ...
- 阅读《名师讲坛--Android开发实战经典》
一,专心,快速阅读一本书,直到深入理解,把书读厚,再读薄,你定会有收获. 二,20171214开始阅读<名师讲坛--Android开发实战经典>,但愿自己有所收获.从今天开始养成刻录学习写 ...
- mysql 里的 ibdata1 文件不断的增长?
我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题.当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌就开始了 —— 就是说磁盘快要满了.一番调查 ...
- Android MVP模式简单易懂的介绍方式 (三)
Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 讲完M和P,接下来就要讲V了.View ...
- 利用Surprise包进行电影推荐
Surprise(Simple Python Recommendation System Engine)是一款推荐系统库,是scikit系列中的一个.简单易用,同时支持多种推荐算法(基础算法.协同过滤 ...