一、清除之前检查

1.表的region分配情况;

2.表的大小(grafana可以看到);

二、清除之前备份

hbase(main):001:0> disable 'gx_rpt:msg_push_taskid_group_name'
0 row(s) in 2.1140 seconds

hbase(main):002:0> snapshot 'gx_rpt:msg_push_taskid_group_name','gx_rpt.msg_push_taskid_group_name_20171115'
0 row(s) in 1.2060 seconds

hbase(main):004:0> list_snapshots
SNAPSHOT TABLE + CREATION TIME
gx_rpt.msg_push_taskid_group_name gx_rpt:msg_push_taskid_group_name_20171115  (Wed Nov 15 16:24:47 +0800 2017)

三、清空表数据

有两个命令可选:

hbase(main):003:0> help 'truncate'
Disables, drops and recreates the specified table.
hbase(main):004:0> help 'truncate_preserve'
Disables, drops and recreates the specified table while still maintaing the previous region boundaries.

选择truncate_preserve

hbase(main):008:0> truncate_preserve 'gx_rpt:msg_push_taskid_group_name'

Truncating 'gx_rpt:msg_push_taskid_group_name' table (it may take a while):
- Disabling table...
- Truncating table...
0 row(s) in 7.5620 seconds

hbase(main):009:0> describe 'gx_rpt:msg_push_taskid_group_name'
Table gx_rpt:msg_push_taskid_group_name is ENABLED
gx_rpt:msg_push_taskid_group_name
COLUMN FAMILIES DESCRIPTION
{NAME => 'inf', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '3', COMPRESSION => 'NONE'
, MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'tr
ue'}
1 row(s) in 0.0440 seconds

hbase(main):014:0> count 'gx_rpt:msg_push_taskid_group_name'
0 row(s) in 0.6100 seconds

=> 0

################################################

HBase Snapshots允许你对一个表进行快照(即可用副本),它不会对Region Servers产生很大的影响,它进行复制和 恢复操作的时候不包括数据拷贝。导出快照到另外的集群也不会对Region Servers产生影响。 下面告诉你如何使用Snapshots功能

1.开启快照支持功能,在0.95+之后的版本都是默认开启的,在0.94.6+是默认关闭

<property><name>hbase.snapshot.enabled</name><value>true</value>
</property>

2.给表建立快照,不管表是启用或者禁用状态,这个操作不会进行数据拷贝

$ ./bin/hbase shell
hbase> snapshot 'myTable', 'myTableSnapshot-122112'

3.列出已经存在的快照

$ ./bin/hbase shell
hbase> list_snapshots

4.删除快照

$ ./bin/hbase shell
hbase> delete_snapshot 'myTableSnapshot-122112'

5.从快照复制生成一个新表

$ ./bin/hbase shell
hbase> clone_snapshot 'myTableSnapshot-122112', 'myNewTestTable'

6.用快照恢复数据,它需要先禁用表,再进行恢复

$ ./bin/hbase shell
hbase> disable 'myTable'
hbase> restore_snapshot 'myTableSnapshot-122112'

提示:因为备份(replication)是系统日志级别的,而快照是文件系统级别的,当使用快照恢复之后,副本会和master出于不同的状态,如果你需要使用恢复的话,你要停止备份,并且重置bootstrap。

如果是因为不正确的客户端行为导致数据丢失,全表恢复又需要表被禁用,可以采用快照生成一个新表,然后从新表中把需要的数据用map-reduce拷贝到主表当中。

7.复制到别的集群当中

该操作要用hbase的账户执行,并且在hdfs当中要有hbase的账户建立的临时目录(hbase.tmp.dir参数控制)

采用16个mappers来把一个名为MySnapshot的快照复制到一个名为srv2的集群当中

$ bin/hbase class org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to hdfs://srv2:8020/hbase -mappers 16

2.Hbase的基于快照的表修复

Hdfs的快照同样适用于hbase表的恢复。在hbase的数据表目录/hbase/data/default/(default为默认namespace空间)中新建快照,就会在该目录下生成.snapshot的文件夹,里面放着针对该目录的所有快照。

如果存在用户误删hbase表,

将快照中保存的数据表文件夹cp到/hbase/data/default下,然后执行如下命令,修复元数据即可。

注意:cp到/hbase/data/default目录下的数据表文件夹的权限要修改成hbase:hbase。

否则修改元数据的命令会失败。

上面是对整个hbase的namespace空间进行的快照备份,如果在某一个表目录下建快照,那么这个表目录就会变成只读,在hbase shell中执行disable+drop <tablename>不会将表删除,在建快照之后新增的表数据也不会丢失。

虽然数据不会丢失但是元数据会被drop命令删除,还得用repair命令进行修复。

修复完之后,再enable这个表,就ok了。

HBase清空表数据相关推荐

  1. Hbase 删除表数据

    1.Hbase 清空整个表数据 注意:清空表数据是否要保留预分区 # truncate会把表分区也清除掉 truncate 'namespace:tableName'# truncate_preser ...

  2. php oracle 删除 数据,oracle怎么清空表数据

    oracle清空表数据的方法:可以通过使用[delete table_name;]或[Truncate [table] table_name;]语句来清空整个表数据. 本文操作环境:windows10 ...

  3. Oracle批量清空表数据

    清空表数据有两种方式,delete from tableName; truncate table tableName; 第二种方式更加高效,直接删除,不能回滚. 如果要批量执行删除脚本,表很多的时候, ...

  4. 使用达思SQL数据库修复软件导出数据库时的接收数据的数据库如何清空表数据?...

    清空表数据,保留视图,存储过程,函数,以及保留表约束.触发器等等,可以给故障数据库预留一个好的躯壳,把坏库数据导入此躯壳.对用友.金蝶等数据库恢复有时候能达到好的效果. 清除表数据有两种方法: 一种用 ...

  5. 使用达思SQL数据库修复软件导出数据库时的接收数据的数据库如何清空表数据?

    清空表数据,保留视图,存储过程,函数,以及保留表约束.触发器等等,可以给故障数据库预留一个好的躯壳,把坏库数据导入此躯壳.对用友.金蝶等数据库恢复有时候能达到好的效果. 清除表数据有两种方法: 一种用 ...

  6. sql删除或清空表数据

    sql删除或清空表数据 一.sql清空表数据的三种方式: 1.truncate–删除所有数据,保留表结构,不能撤销还原 2.delete–是逐行删除速度极慢,不适合大量数据删除 3.drop–删除表, ...

  7. Mysql清空表数据,id从1开始

    Mysql清空表数据,id从1开始 TRUNCATE TABLE table_name

  8. MySQL清空表数据

    清空表数据一共有三种方式 1 .truncate (速度很快) 自增字段清空从1开始 全表清空首选 2.drop 直接删表-啥都没了啥都没了 - - - - 3.delete 速度慢的一批 自增字段不 ...

  9. 关于java清空表数据

    一.起因 无意中发现了一个有趣的操作,于是就记录下来: 二.经过 请观察以下代码: package com.liuzm;import java.io.IOException; import java. ...

最新文章

  1. 数据结构课程上机参考代码
  2. 卷积神经网络:VGG16 是基于大量真实图像的 ImageNet 图像库预训练的网络
  3. 移动硬盘插入提示格式化
  4. make--变量与函数的综合示例 自动生成依赖关系
  5. Office 365启用多重身份验证
  6. 中国氨纶市场“十四五”规划及未来动态分析报告2021年版
  7. SGU 294 He's Circles (polay计数)
  8. (一)Git学习记录(不断更新)
  9. [BZOJ3583]杰杰的女性朋友(矩阵快速幂)
  10. spring2.X(1)--新特性介绍
  11. 重新分析connection reset by peer, socket write error错误原因
  12. ESET NOD32最新单机、企业中、英文版 + 个人专有ID(90天使用期)申请方法
  13. requests+xpath之贴吧图片爬取
  14. 深入Elasticsearch:索引的创建
  15. Safari怎么开发扩展(插件)
  16. Android开发之最新Android Studio推送代码到最新GitHub教程 | Android Studio绑定GitHub | AS令牌登录GitHub | 创建GitHub令牌
  17. 3d打印技术与计算机,讲述3D打印技术是如何实现打印的,与普通的打印有何不同...
  18. 计算机在职研究生的详细介绍
  19. Win10最详细优化设置告别卡顿
  20. 机械振动信号中的常用指标

热门文章

  1. 魔兽中各族单位名称英文缩写
  2. 【大数据处理技术】第二篇 大数据存储与管理(暂停更新)
  3. 工商银行网站无法访问的解决办法。(网络上面收集来的,看看)
  4. zabbix discovery / zabbix 自动发现
  5. java中BigInteger用法的详解
  6. biginteger判断相等_BigInteger与BigDecimal
  7. 折叠屏手机优选,三星Fold3官翻机为何如此受热捧?
  8. echarts在地图上标记县
  9. HTTP协议请求错误总结
  10. java为啥要stw_【JVM 学习】ParNew 为什么要STW