我正在尝试执行增量备份,我已经选中了导出选项,但无法确定开始时间选项。另外,请在copytable上建议如何还原。
axr492tv1#
hbase文档中说,我们发现了这个问题 hbase org.apache.hadoop.hbase.mapreduce.Export <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]] 所以在尝试了一些组合之后,我发现它被转换成了一个真实的例子,如下面的代码 hbase org.apache.hadoop.hbase.mapreduce.Export test /bkp_destination/test 1369060183200 1369063567260023219 其中test是tablename,/bkp\u destination/test是backup destination folder,1369060183200是starttime,1369063567260023219是endtime
hbase org.apache.hadoop.hbase.mapreduce.Export <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]
hbase org.apache.hadoop.hbase.mapreduce.Export test /bkp_destination/test 1369060183200 1369063567260023219
n3ipq98p2#
源代码表明int versions=args.length>2?integer.parseint(args[2]):1;long starttime=args.length>3?long.parselong(args[3]):0l;long endtime=args.length>4?long.parselong(args[4]):long.max\u值;接受的答案不传递version作为参数。那是怎么回事?hbase org.apache.hadoop.hbase.mapreduce.export test/bkp\u destination/test 1369060183200 1369063567260023219从源代码可以归结为-1369060183200-args[2]-版本1369063567260023219-参数[3]-开始时间附加参考源:
private static Scan getConfiguredScanForJob(Configuration conf, String[] args) throws IOException { Scan s = new Scan(); // Optional arguments. // Set Scan Versions int versions = args.length > 2? Integer.parseInt(args[2]): 1; s.setMaxVersions(versions); // Set Scan Range long startTime = args.length > 3? Long.parseLong(args[3]): 0L; long endTime = args.length > 4? Long.parseLong(args[4]): Long.MAX_VALUE; s.setTimeRange(startTime, endTime); // Set cache blocks s.setCacheBlocks(false); // set Start and Stop row if (conf.get(TableInputFormat.SCAN_ROW_START) != null) { s.setStartRow(Bytes.toBytesBinary(conf.get(TableInputFormat.SCAN_ROW_START))); } if (conf.get(TableInputFormat.SCAN_ROW_STOP) != null) { s.setStopRow(Bytes.toBytesBinary(conf.get(TableInputFormat.SCAN_ROW_STOP))); } // Set Scan Column Family boolean raw = Boolean.parseBoolean(conf.get(RAW_SCAN)); if (raw) { s.setRaw(raw); } if (conf.get(TableInputFormat.SCAN_COLUMN_FAMILY) != null) { s.addFamily(Bytes.toBytes(conf.get(TableInputFormat.SCAN_COLUMN_FAMILY))); } // Set RowFilter or Prefix Filter if applicable. Filter exportFilter = getExportFilter(args); if (exportFilter!= null) { LOG.info("Setting Scan Filter for Export."); s.setFilter(exportFilter); } int batching = conf.getInt(EXPORT_BATCHING, -1); if (batching != -1){ try { s.setBatch(batching); } catch (IncompatibleFilterException e) { LOG.error("Batching could not be set", e); } } LOG.info("versions=" + versions + ", starttime=" + startTime + ", endtime=" + endTime + ", keepDeletedCells=" + raw); return s; }
ujv3wf0j3#
使用copytable,您只需在同一集群或另一集群上接收给定表的副本(实际上是copytable mapreduce作业)。没有奇迹。如何恢复由您自己决定。显而易见的选择是:使用相同的工具将表复制回。只需获取/放置选定的行(我认为您需要在这里)。请注意,在放回数据时,您应该保留时间戳。实际上,对于增量备份,您只需编写一个作业即可,该作业扫描表并获取/将具有给定时间戳的行放入名为date的表中。还原应该以相反的方向工作-读取具有计算名称的表,并将其记录放置在具有相同时间戳的位置。我还向您推荐以下技术:表快照(cdh4.2.1使用hbase 0.94.2)。它看起来不适用于增量备份,但您可能会在这里发现一些有用的东西,比如附加的api。从备份的Angular 来看现在看起来不错。希望这能有所帮助。
3条答案
按热度按时间axr492tv1#
hbase文档中说,我们发现了这个问题
hbase org.apache.hadoop.hbase.mapreduce.Export <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]
所以在尝试了一些组合之后,我发现它被转换成了一个真实的例子,如下面的代码hbase org.apache.hadoop.hbase.mapreduce.Export test /bkp_destination/test 1369060183200 1369063567260023219
其中test是tablename,/bkp\u destination/test是backup destination folder,1369060183200是starttime,1369063567260023219是endtimen3ipq98p2#
源代码表明
int versions=args.length>2?integer.parseint(args[2]):1;
long starttime=args.length>3?long.parselong(args[3]):0l;
long endtime=args.length>4?long.parselong(args[4]):long.max\u值;
接受的答案不传递version作为参数。那是怎么回事?
hbase org.apache.hadoop.hbase.mapreduce.export test/bkp\u destination/test 1369060183200 1369063567260023219
从源代码可以归结为-
1369060183200-args[2]-版本
1369063567260023219-参数[3]-开始时间
附加参考源:
ujv3wf0j3#
使用copytable,您只需在同一集群或另一集群上接收给定表的副本(实际上是copytable mapreduce作业)。没有奇迹。
如何恢复由您自己决定。显而易见的选择是:
使用相同的工具将表复制回。
只需获取/放置选定的行(我认为您需要在这里)。请注意,在放回数据时,您应该保留时间戳。
实际上,对于增量备份,您只需编写一个作业即可,该作业扫描表并获取/将具有给定时间戳的行放入名为date的表中。还原应该以相反的方向工作-读取具有计算名称的表,并将其记录放置在具有相同时间戳的位置。
我还向您推荐以下技术:表快照(cdh4.2.1使用hbase 0.94.2)。它看起来不适用于增量备份,但您可能会在这里发现一些有用的东西,比如附加的api。从备份的Angular 来看现在看起来不错。
希望这能有所帮助。