HBase数据备份恢复的几种机制总结
2013-10-21 17:27
309 查看
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,
热备,scan和put的mapreduce操作,无法保证一致性,
增量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,
基于dump的hdfs文件,进行数据恢复(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操作的WAL、compact&flush、GC等资源开销。
一个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
表在线,支持增量操作
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,
热备,scan和put的mapreduce操作,无法保证一致性,
增量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,
基于dump的hdfs文件,进行数据恢复(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操作的WAL、compact&flush、GC等资源开销。
一个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
表在线,支持增量操作
相关文章推荐
- HBase的数据备份与恢复机制BDR
- HBase学习总结(3):HBase的数据模型及工作机制
- Linux 网络文件系统的数据备份及恢复机制实现
- Oracle数据库数据丢失恢复的几种方法总结
- 异地容灾数据备份几种方式列举对比及总结
- HBase数据备份和恢复
- Oracle数据库数据丢失恢复的几种方法总结
- HBase数据恢复 (总结14)
- 总结几种简单实用的数据恢复技巧
- Oracle数据库数据丢失恢复的几种方法总结
- HBase数据备份及恢复(导入导出)的常用方法
- iOS 数据保存几种方式总结
- 本周技术关注[面向webapps运维]:MSSQL2005 数据备份、恢复、数据复制等
- 基于 android 数据备份恢复的一种实现
- 数据备份还原我有妙招----第4集:自动系统恢复(ASR)恢复系统
- Oracle-->数据库备份与恢复-->数据库库归档模式
- oracle备份文件恢复到oracle10的数据乱码问题解决方法
- gitlab的升级【二】旧数据的备份和新数据的恢复
- Linux下实现MySQL数据备份和恢复的命令使用全攻略
- ORACLE 11G没有备份文件参数文件在异机通过rman备份恢复找回被误删的数据