Hbase Export,CopyTable

时间:2016-10-25 15:33:11

标签: mapreduce hbase hortonworks-data-platform

在我的舞台环境中,我可以运行hbase export和copytable,一切正常:

2016-10-25 15:47:15,532 INFO  [main] mapreduce.Job: Running job: job_1476894918073_0029
2016-10-25 15:47:23,699 INFO  [main] mapreduce.Job: Job job_1476894918073_0029 running in uber mode : false
2016-10-25 15:47:23,702 INFO  [main] mapreduce.Job:  map 0% reduce 0%
2016-10-25 15:47:34,888 INFO  [main] mapreduce.Job:  map 19% reduce 0%

但在生产环境中:

    2016-10-25 14:58:07,794 INFO  [main] mapreduce.Job:  map 0% reduce 0%
2016-10-25 14:58:11,888 INFO  [main] mapreduce.Job: Task Id : attempt_1469517270026_20969_m_000000_0, Status : FAILED
Error: java.io.IOException: Cannot create a record reader because of a previous error. Please look at the previous logs lines from the task's full log for more details.
    at org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.createRecordReader(TableInputFormatBase.java:174)
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.<init>(MapTask.java:515)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:758)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.IllegalStateException: The input format instance has not been properly initialized. Ensure you call initializeTable either in your constructor or initialize method
    at org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.getTable(TableInputFormatBase.java:585)
    at org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.createRecordReader(TableInputFormatBase.java:169)

当然,我检查了我的完整日志:

java.io.IOException: Cannot create a record reader because of a previous error.

阶段:HDP 2.5

产品:HDP 2.3(无法升级整个产品)。

您是否经历过类似的问题?我需要在不同的集群之间移动hbase数据。

更新

好的,我会尝试更新帖子,找到解决方案,我在舞台环境中使用的命令(但不是在制作中)是:

srcCluster $ hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr = dstClusterZK:2181:/ hbase tableOrig

hbase org.apache.hadoop.hbase.mapreduce.Export

我在代码中也看了github:

apache/hbase github, TableInputFormatBase.java

它看起来像我的生产hbase没有看到表:| 怎么可能这样呢?

if (getTable() == null) {
        // initialize() must not have been implemented in the subclass.
        throw new IOException(INITIALIZATION_ERROR);
      }

无论如何,我开始认为可能还有一些其他的解决方案, CopyTable 导出来移动不同群集之间的数据,你现在还有吗?

我想我不能简单地复制数据,因为在源代码上我有10个hbase服务器和目标4个hbase服务器(但功能更强大)。

任何建议都会非常有用。

更新

盯着认为这可能与减少进程的内存量太少有关。我会检查一下,然后带着反馈返回这里。

更新

我已将MRD设置更改为以下内容:

mapreduce.map.memory.mb:2048, mapreduce.reduce.memory.mb:4096

mapreduce.map.java.opts:1638, mapreduce.reduce.java.opts:3276

基于:MAPREDUCE 2 IN HDP 2.x 但是我没有帮助,或者我应该重新启动而不仅仅是纱线的NodeManager&#39>

0 个答案:

没有答案