Hbase数据备份案例讲解

  

HBase的数据备份

  

1.1基于HBase提供的类对表进行备份

  
      <李>   

    使用HBase提供的类把HBase中某张表的数据导出到HDFS,之后再导出到测试HBase表中。

      李   <李>   

    (1)==从hbase表导出到HDFS==

      
     <代码类=" language-shell "> [hadoop@node01壳]hbase org.apache.hadoop.hbase.mapreduce美元。出口myuser/hbase_data/myuser_bak
       
      李   <李>   

    (2)==文件导入hbase表==

      

    hbase壳中创建备份目标表

      
     <代码类=" language-ruby ">创建myuser_bak, f1, f2的 
      李   <李>   

    将HDFS上的数据导入到备份目标表中

      
     <代码类=" language-shell "> hbase org.apache.hadoop.hbase.mapreduce。司机进口myuser_bak/hbase_data myuser_bak/*  
      李   <李>   

    补充说明

      

    以上都是对数据进行了全量备份,后期也可以实现表的<>强增量数据备份强,增量备份跟全量备份操作差不多,只不过要在后面加上时间戳。

      

    例如:
    HBase数据导出到HDFS

      
     <代码> hbase org.apache.hadoop.hbase.mapreduce。出口测试/hbase_data/test_bak_increment开始时间戳结束时间戳 
      李   
  

1.2基于快照快照对表进行备份

  
      <李>   

    通过快照快照的方式实现HBase数据的迁移和拷贝。这种方式比较常用,效率高,也是最为推荐的数据迁移方式。

      李   <李>   

    HBase的快照其实就是一组元数据===https://www.yisu.com/zixun/=信息的集合(文件列表),通过这些元数据信息的集合,就能将表的数据回滚到快照那个时刻的数据。

      
        <李>首先我们要了解一下所谓的HBase的LSM类型的系统结构,我们知道在HBase中,数据是先写入到Memstore中,当Memstore中的数据达到一定条件,就会冲到HDFS中,形成HFile,后面就不允许原地修改或者删除了。   <李>如果要更新或者删除的话,只能追加写入新文件。既然数据写入以后就不会在发生原地修改或者删除,这就是快照做文章的地方。做快照的时候,只需要给快照表对应的所有文件创建好指针(元数据集合),恢复的时候只需要根据这些指针找到对应的文件进行恢复就好。这是原理的最简单的描述,下图是描述快照时候的简单流程:
       Hbase数据备份案例讲解   
      李   
  

1.3 <>强快照实战

  
      <李> 1,创建表的快照李   
  
 <代码>快照“表”,“snapshotName” 
  
      <李>   

    2,查看快照

      
     <代码> list_snapshots  
      李   
  

?查找以测试开头的快照

  
 <代码> list_snapshots“测试*’。 
  
      <李> 3,恢复快照李   
  

?ps:这里需要对表进行禁用操作,先把表置为不可用状态,然后在进行进行restore_snapshot的操作

  
 <代码>禁用“表”
  restore_snapshot snapshotName”
  启用“表” 
  
      <李>   

    4,删除快照

      
     <代码> delete_snapshot snapshotName” 
      李   <李>   

    5,迁移快照

      
     <代码> hbase org.apache.hadoop.hbase.snapshot。ExportSnapshot \
      快照snapshotName \
      临摹hdfs://src-hbase-root-dir/hbase \
      复制到hdfs://dst-hbase-root-dir/hbase \
      映射器1 \
      带宽1024
      
      例如:
      hbase org.apache.hadoop.hbase.snapshot。ExportSnapshot \
      快照测试\
      临摹hdfs://node01:8020/hbase \
      复制到hdfs://node01:8020/hbase1 \
      映射器1 \
      带宽1024  
      李   
  

?注意:这种方式用于将快照表迁移到另外一个集群的时候使用,使用先生进行数据的拷贝,速度很快,使用的时候记得设置好带宽参数,以免由于网络打满导致的线上业务故障。
 Hbase数据备份案例讲解

  
      <李>   

    6,将快照使用散装货物的方式导入

      
     <代码> hbase org.apache.hadoop.hbase.mapreduce。LoadIncrementalHFiles \
      hdfs://dst-hbase-root-dir/hbase/归档/datapath公司/表/文件名\
      的表
      
      例如:
      创建一个新表
      创建“纽特”、“f1, f2”
      hbase org.apache.hadoop.hbase.mapreduce。LoadIncrementalHFiles hdfs://node1:9000/hbase1/归档/数据/违约/测试/6325 fabb429bf45c5dcbbe672225f1fb纽特。

    Hbase数据备份案例讲解