168大数据

标题: HBase数据备份恢复的几种机制总结 [打印本页]

作者: 168主编    时间: 2015-5-5 11:08
标题: 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,
  热备,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
  表在线,支持增量操作







欢迎光临 168大数据 (http://bi168.cn/) Powered by Discuz! X3.2