多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
**演示一:手动进行minor compation合并** (1)创建emp_tb表 ```sql hbase(main):002:0> create 'emp_tb', NAME=>'addr' ``` (2)插入/更新数据 ```sql -- 插入数据 hbase(main):004:0> put 'emp_tb', 'r001', 'addr:city', 'beijing_001' -- 每次flush都是触发一次Minor Compaction 操作 hbase(main):006:0> flush 'emp_tb' -- 第1次更新数据 hbase(main):004:0> put 'emp_tb', 'r001', 'addr:city', 'beijing_002' hbase(main):006:0> flush 'emp_tb' ``` hdfs上查看已经有了两个版本的数据 hbase35 (3)合并两个HFile文件 ```sql hbase(main):013:0> compact 'emp_tb' ``` 在hdfs上查看依然是没有合并,因为HFile还没有达到Minor Compation的数量要求,默认至少要达到3个。 ![](https://img.kancloud.cn/26/31/2631bee993e963fb3283127b5bc02266_1482x235.png) (4)第2次更新数据 ```sql hbase(main):004:0> put 'emp_tb', 'r001', 'addr:city', 'beijing_003' hbase(main):006:0> flush 'emp_tb' ``` 在hdfs上查看已达到3个HFile文件数量。 ![](https://img.kancloud.cn/2c/59/2c59966c06667d9697413fcab07d9bd3_1479x278.png) (5)合并三个HFile文件 ```sql hbase(main):023:0> compact 'emp_tb' ``` 在hdfs上查看3个HFile文件合并为一个了。 ![](https://img.kancloud.cn/6a/84/6a84b3fef4ba6f8975b20a55f0abc5bd_1477x223.png) <br/> **演示二:进行minor compation合并不删除数据,只是添加墓碑标记;在major compation时数据才会被删除** (1)清空emp_tb表 ```sql hbase(main):050:0> truncate 'emp_tb' ``` (2)插入数据 ```sql -- 设置可以保存10个最新版本的数据 alter 'emp_tb', NAME=>'addr', VERSIONS=>10 -- 插入数据 hbase(main):004:0> put 'emp_tb', 'r001', 'addr:city', 'beijing_001' ``` (3)做5次数据更新 ```sql hbase(main):024:0> put 'emp_tb', 'r001', 'addr:city', 'beijing_002' hbase(main):025:0> put 'emp_tb', 'r001', 'addr:city', 'beijing_003' hbase(main):026:0> put 'emp_tb', 'r001', 'addr:city', 'beijing_004' hbase(main):027:0> put 'emp_tb', 'r001', 'addr:city', 'beijing_005' hbase(main):028:0> put 'emp_tb', 'r001', 'addr:city', 'beijing_006' -- 每次flush都是触发一次Minor Compaction 操作 hbase(main):006:0> flush 'emp_tb' ``` (4)查看 ```sql -- 查看当前最新版本的数据 hbase(main):087:0> scan 'emp_tb' ROW COLUMN+CELL r001 column=addr:city, timestamp=1608643095602, value=beijing_006 -- 查看最新的10个版本的数据 hbase(main):088:0> scan 'emp_tb', {RAW=>TRUE, VERSIONS=>10} ROW COLUMN+CELL r001 column=addr:city, timestamp=1608643095602, value=beijing_006 r001 column=addr:city, timestamp=1608643085718, value=beijing_005 r001 column=addr:city, timestamp=1608643070623, value=beijing_004 r001 column=addr:city, timestamp=1608643063183, value=beijing_003 r001 column=addr:city, timestamp=1608643053918, value=beijing_002 r001 column=addr:city, timestamp=1608643022925, value=beijing_001 ``` (5)第1次删除 ```sql -- 删除 hbase(main):089:0> delete 'emp_tb', 'r001', 'addr:city' -- 每次flush都是触发一次Minor Compaction 操作 hbase(main):006:0> flush 'emp_tb' ``` 在hdfs查看,delete,然后flush后多出了一个HFile文件 ![](https://img.kancloud.cn/7f/6b/7f6b89b3c9df6a18cb153e62cf6887dc_1469x248.png) ``` -- 查看当前最新版本的数据,可以看到最新版本由原来006变为005 hbase(main):090:0> scan 'emp_tb' ROW COLUMN+CELL r001 column=addr:city, timestamp=1608643085718, value=beijing_005 -- 查看最新的10个版本的数据,可以看到006上面有一个Delete标记 -- 只是做了一个标记并没有实际删除 hbase(main):091:0> scan 'emp_tb', {RAW=>TRUE, VERSIONS=>10} ROW COLUMN+CELL r001 column=addr:city, timestamp=1608643095602, type=Delete r001 column=addr:city, timestamp=1608643095602, value=beijing_006 r001 column=addr:city, timestamp=1608643085718, value=beijing_005 r001 column=addr:city, timestamp=1608643070623, value=beijing_004 r001 column=addr:city, timestamp=1608643063183, value=beijing_003 r001 column=addr:city, timestamp=1608643053918, value=beijing_002 r001 column=addr:city, timestamp=1608643022925, value=beijing_001 ``` (6)第2次删除 ```sql -- 删除 hbase(main):094:0> delete 'emp_tb', 'r001', 'addr:city' -- 每次flush都是触发一次Minor Compaction 操作 hbase(main):095:0> flush 'emp_tb' -- 查看当前最新版本的数据,可以看到最新版本由原来005变为004 hbase(main):096:0> scan 'emp_tb' ROW COLUMN+CELL r001 column=addr:city, timestamp=1608643070623, value=beijing_004 -- 查看最新的10个版本的数据,可以看到006和005上面有一个Delete标记 -- 只是做了一个标记并没有实际删除 hbase(main):097:0> scan 'emp_tb', {RAW=>TRUE, VERSIONS=>10} ROW COLUMN+CELL r001 column=addr:city, timestamp=1608643095602, type=Delete r001 column=addr:city, timestamp=1608643095602, value=beijing_006 r001 column=addr:city, timestamp=1608643085718, type=Delete r001 column=addr:city, timestamp=1608643085718, value=beijing_005 r001 column=addr:city, timestamp=1608643070623, value=beijing_004 r001 column=addr:city, timestamp=1608643063183, value=beijing_003 r001 column=addr:city, timestamp=1608643053918, value=beijing_002 r001 column=addr:city, timestamp=1608643022925, value=beijing_001 ``` 在hdfs查看有3个HFile文件了 ![](https://img.kancloud.cn/b9/df/b9dfde804adda82ac2d105a8586ee19a_1500x285.png) (7)进行Major Compaction ```sql hbase(main):098:0> major_compact 'emp_tb' -- 查看最新的10个版本的数据,可以看到006和005已经被删除了 hbase(main):099:0> scan 'emp_tb', {RAW=>TRUE, VERSIONS=>10} ROW COLUMN+CELL r001 column=addr:city, timestamp=1608643070623, value=beijing_004 r001 column=addr:city, timestamp=1608643063183, value=beijing_003 r001 column=addr:city, timestamp=1608643053918, value=beijing_002 r001 column=addr:city, timestamp=1608643022925, value=beijing_001 ``` 在hdfs查看3个HFile文件合并成了一个 ![](https://img.kancloud.cn/4e/c2/4ec2a6a4a647d02d42b4439994f56cf9_1494x197.png)