HBase2.1.x TTL 作者:马育民 • 2021-11-28 10:15 • 阅读:10178 # 说明 TTL缩写Time To Live,即生存期。 TTL是作用于 **列族** 的,它设置了一个基于时间戳的临界值, 内部的管理会自动检查TTL值是否达到上限,如果 达到上限,即 **数据过期**,那么就查询不到该数据。 TTL的单位是 **秒**,默认值是 `Integer.MAX_VALUE`,即 `2^31-1=2 147 483 647` 秒,大约68年。 使用TTL默认值的数据可以理解为 **永久** 保存,即:`FOREVER` ### 作用 设置合理的 TTL,可以释放空间 ### 什么时候删除? 在 `major Compaction ` 合并过程中时间戳被判定为 **超过TTL的数据会被自动删除**,即:将数据从文件中删除。 # 查看 TTL ``` desc 'user2' ``` 如下图红框处: [![](https://www.malaoshi.top/upload/pic/hbase/Snipaste_2021-11-28_10-44-56.png)](https://www.malaoshi.top/upload/pic/hbase/Snipaste_2021-11-28_10-44-56.png) # 创建表指定 TTL 创建 `test_ttl` 表,列族 `info`, TTL设置 `10` 秒过期 ``` create 'test_ttl',{NAME => 'info', TTL=>'10'} ``` 查看: ``` desc 'test_ttl' ``` [![](https://www.malaoshi.top/upload/pic/hbase/Snipaste_2021-11-28_10-55-20.png)](https://www.malaoshi.top/upload/pic/hbase/Snipaste_2021-11-28_10-55-20.png) 看到 `TTL => '10 SECONDS'` ### 测试:添加数据 ``` put 'test_ttl','1000','info:name','lilei' ``` ##### 立即扫描表 ``` scan 'test_ttl' ``` 有 `lilei` 这条数据 ##### 10秒后扫描表 `lilei` 这条数据由于 TTL 过期,被删除了 ### RAW 扫描表 ``` scan 'test',{ RAW => true} ``` 是可以看到 TTL过期数据的,如下: ``` ROW COLUMN+CELL 1000 column=info:name, timestamp=1638068502991, value=lilei 1002 column=info:name, timestamp=1638068535350, value=lilei 2 row(s) Took 0.0138 seconds ``` # 修改表的 TTL ### 查看表结构 ``` desc "student" ``` 看到 `TTL => 'FOREVER',FOREVER` 永不过期 ### 添加测试数据 ``` put 'student','1000','info:name','lilei' ``` ``` put 'student','1001','info:name','lucy' ``` ### 先禁用表 **注意:** - 修改之前,需要先 `disable` 表,否则表中的记录被清空。 - **亲测,过期数据还是会被清空**,即:在2.1.x版本中,本步骤可略 ``` disable "student" ``` ### 再修改表的 TTL `5秒` 后过期: ``` alter "student",NAME=>'info',TTL=>'5' ``` 设置TTL值,作用于列族data ### 最后启用表 ``` enable "student" ``` ### 再次查看 ``` desc "student" ``` 可以看到 `TTL => '5 SECONDS'` 秒 ### 扫描表 ``` scan "student" ``` 由于数据 TTL过期,被清空 ### 再次修改表的 TTL `1小时` 后过期: ``` alter "student",NAME=>'info',TTL=>'3600' ``` 扫描表 ``` scan "student" ``` 由于数据 TTL 没有过期,数据都还在 ### 测试添加 同上 # 修改表的 TTL 为永久 ``` alter "student",NAME=>'info',TTL=>'FOREVER' ``` 原文出处:http://malaoshi.top/show_1IX2JClZMsIE.html