org.apache.hadoop.hbase.snapshot.corruptedsnapshotexception:无法读取快照信息from:file:/tmp/hbase cloudera/hbase

bqucvtff  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(504)

嗨,我正在尝试导出hbase表快照到我的本地hdfs,这样我就可以运行mapreduce了。
我已经使用下面的命令拍摄了hbase表的快照

snapshot 'FundamentalAnalytic','FundamentalAnalyticSnapshot'

当我跑的时候 list_snapshots 命令我也可以看到我的快照。
我已使用下面的命令将我的hbase表快照导出到本地hdfs目录并成功复制。

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot FundamentalAnalyticSnapshot -copy-to /tmp -mappers 16

最后,我必须在快照上运行map reduce,因此下面是配置该作业的驱动程序代码。

TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, // input table
                scan, // Scan instance to control CF and attribute selection
                DefaultMapper.class, // mapper class
                NullWritable.class, // mapper output key
                Text.class, // mapper output value
                job,
                true,
                new Path("/home/cloudera/archive/data/default/FundamentalAnalytic/bc95715f67e52547e86b5b096a1f1cb5/cf/d29205a44623434eba2d100a94d8ebfb_SeqId_4_"));

这就是我犯错误的地方。我不知道作为inittablesnapshotmapperjob方法中的最后一个参数,我必须给出哪条路径。
当我运行这个代码时,我得到下面的错误。

org.apache.hadoop.hbase.snapshot.CorruptedSnapshotException: Couldn't read snapshot info from:file:/tmp/hbase-cloudera/hbase/.hbase-snapshot/FundamentalAnalyticSnapshot/.snapshotinfo
    at org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils.readSnapshotInfo(SnapshotDescriptionUtils.java:294)
    at org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.copySnapshotForScanner(RestoreSnapshotHelper.java:818)
    at org.apache.hadoop.hbase.mapreduce.TableSnapshotInputFormatImpl.setInput(TableSnapshotInputFormatImpl.java:355)
    at org.apache.hadoop.hbase.mapreduce.TableSnapshotInputFormat.setInput(TableSnapshotInputFormat.java:204)
    at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initTableSnapshotMapperJob(TableMapReduceUtil.java:335)
    at com.thomsonretuers.hbase.HBaseToFileDriver.run(HBaseToFileDriver.java:128)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at com.thomsonretuers.hbase.HBaseToFileDriver.main(HBaseToFileDriver.java:75)
Caused by: java.io.FileNotFoundException: File file:/tmp/hbase-cloudera/hbase/.hbase-snapshot/FundamentalAnalyticSnapshot/.snapshotinfo does not exist

一个关于快照的简短问题。
我想拍快照并运行全表扫描,这样对快照的扫描会影响区域服务器的性能吗?

de90aj5v

de90aj5v1#

我用正确的方法解决了这个问题
创建快照

snapshot 'FundamentalAnalytic','FundamentalAnalyticSnapshot'

将快照导出到本地hdfs

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot FundamentalAnalyticSnapshot -copy-to /tmp -mappers 16

hbase快照上rum mapreduce的驱动程序作业配置

String snapshotName="FundamentalAnalyticSnapshot";
    Path restoreDir = new Path("hdfs://quickstart.cloudera:8020/tmp");
    String  hbaseRootDir =  "hdfs://quickstart.cloudera:8020/hbase";

TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, // Snapshot name
                    scan, // Scan instance to control CF and attribute selection
                    DefaultMapper.class, // mapper class
                    NullWritable.class, // mapper output key
                    Text.class, // mapper output value
                    job,
                    true,
                    restoreDir);

另外,在hbase快照上运行mapreduce将跳过对hbase表的扫描,并且不会影响区域服务器。

相关问题