hbase 备份

1、  replication,

通过类似mysql 主从复制方式进行复制,基于HLog

在应用场景个人感觉比较重要的一点是可以隔离计算分析型的操作和实时性操作带来的影响。

对于DDL操作不做复制,过实时读取hlog中的entry来解析变更的数据然后发送到从集群中去。

     

2、  distcp,

表数据文件的copy

./hadoopdistcp  hdfs://wxlab58:9100/hbase/lsmp_lottery_new_3/ hdfs://wxlab24:9100/hbase/lsmp_lottery_new_3/

                    <property>

                    <name>dfs.permissions</name>
                         <value>false</value>

                      </property>

  或者                      

                  $ hadoop fs-chmod 777 /user/hadoop

然后在目的hbase上执行./hbase org.jruby.Mainbin/add_table.rb /hbase/lsmp_lottery_new_3,更新元数据表meta

生成meta信息后,重启hbase

表可以不在线,是mapreuce操作,不可垮表操作,全量操作

3、 copyTable

热备,scanputmapreduce操作,无法保证一致性,

增量copy, –starttime and –endtime arguments

copy部分cf,–families=srcCf1,srcCf2

 

$bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable [--starttime=X][--endtime=Y] [--new.name=NEW] [--peer.adr=ADR] tablename 

$HADOOP_HOME/bin/hadoopjar $HBASE_HOME/hbase-

0.92.1.jarcopytable --families=n  --peer.adr=l-master1:2181:/

hbase--new.name=hly_temp2    hly_temp

表必须在线,是mapreduce操作,可以跨表操作,可以增量操作

4、 export

把表数据导出到hdfs文件中(mapreduce操作)

数据被写到了相应的目录,一个region一个文件。默认为sequencefile。可以选择对输出进行压缩等。

bin/hbaseorg.apache.hadoop.hbase.mapreduce.Export <tablename> <outputdir>[<versions> [<starttime> [<endtime>]]]

$HADOOP_HOME/bin/hadoopjar $HBASE_HOME/hbase-

0.92.1.jarexport -D mapred.output.compress=true -D mapred.output.

compression.codec=org.apache.hadoop.io.compress.BZip2Codec-D

mapred.output.compression.type=BLOCK hly_temp  /backup/hly_temp

表必须在线(热备),是mapreduce操作,可以跨表操作,可以增量操作

 

5、 import

基于dumphdfs文件,进行数据恢复(mapreduce操作)

bin/hbaseorg.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>

 $HADOOP_HOME/bin/hadoopjar $HBASE_HOME/hbase-

0.92.1.jarimport hly_temp /backup/hly_temp

表必须在线(热备),是mapreduce操作,可以跨表操作,可以实现增量操作

 

6、 Bulkload tool

Bulkload对于添加表的大量的数据效率很高,绕过put操作的WALcompact&flushGC等资源开销。

一个region一个HFile,bulk load时候,自动把HFile mv到对应region的目录下。 

A、通过mapreduce,生成HFile,后bulkload

 HTabletable = new HTable(conf, tableName);

  job.setReducerClass(PutSortReducer.class);

PathoutputDir = new Path(args[2]);

FileOutputFormat.setOutputPath

(job,outputDir);

job.setMapOutputKeyClass

(ImmutableBytesWritable.class);

job.setMapOutputValueClass(Put.class);

HFileOutputFormat.configureIncrementalLoad(job, table);

 

hadoop jar hbase-VERSION.jar completebulkload /user/todd/myoutput mytable

或者LoadIncremental.doBulkLoad把HFile load到HBase表中。

 

 

B、importtsv通过mapreduce,直接导入到表中

$HADOOP_HOME/bin/hadoopjar $HBASE_HOME/hbase-

0.92.1.jarimporttsv \                     

-Dimporttsv.columns=HBASE_ROW_KEY,t:v01,t:v02,t:v03,t:v04,t:v0

5,t:v06,t:v07,t:v08,t:v09,t:v10,t:v11,t:v12,t:v13,t:v14,t:v15,t:v1

6,t:v17,t:v18,t:v19,t:v20,t:v21,t:v22,t:v23,t:v24\

hly_temp\

/user/hac/input/2-1

C、importtsv通过mapreduce生成HFile,后bulkload到表中

$HADOOP_HOME/bin/hadoop jar$HBASE_HOME/hbase-

0.92.1.jar importtsv \

-Dimporttsv.bulk.output=/user/hac/output/2-1\

-Dimporttsv.columns=HBASE_ROW_KEY,t:v01,t:v02,t:v03,t:v04,

t:v05,t:v06,t:v07,t:v08,t:v09,t:v10,t:v11,t:v12,t:v13,t:v14,

t:v15,t:v16,t:v17,t:v18,t:v19,t:v20,t:v21,t:v22,t:v23,t:v24\

hly_temp \

/user/hac/input/2-1

 

$HADOOP_HOME/bin/hadoop jar$HBASE_HOME/hbase-

0.92.1.jar completebulkload \

/user/hac/output/2-1 \

hly_temp

表在线,支持增量操作


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值