【问题标题】:org.apache.hadoop.hbase.snapshot.CorruptedSnapshotException: Couldn't read snapshot info from:file:/tmp/hbase-cloudera/hbaseorg.apache.hadoop.hbase.snapshot.CorruptedSnapshotException:无法从:文件:/tmp/hbase-cloudera/hbase 读取快照信息
【发布时间】:2017-10-31 16:27:35
【问题描述】:

您好,我正在尝试将 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

关于快照的一个快速问题。

  1. 我想拍摄快照并运行全表扫描,在这种情况下扫描 on snapshot 会影响区域服务器的性能吗?

【问题讨论】:

    标签: mapreduce hbase hadoop2


    【解决方案1】:

    我在使用正确的路径后解决了它

    创建快照

    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 表的扫描,也不会对区域服务器产生影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      相关资源
      最近更新 更多