转载

HBase中使用importtsv批量导入数据异常:No enum constant org.apache.hadoop.mapreduce.JobCount...

问题描述如下:

基于HBase-0.98.7、Hadoop-2.5.2,使用HBase importtsv工具将大概10GB csv文件导入HBase。但是运行过程中抛出以下异常:

Exception in thread "main" java.lang.IllegalArgumentException: No enum constant org.apache.hadoop.mapreduce.JobCounter.MB_MILLIS_MAPS  at java.lang.Enum.valueOf(Enum.java:236)  at org.apache.hadoop.mapreduce.counters.FrameworkCounterGroup.valueOf(FrameworkCounterGroup.java:148)  at org.apache.hadoop.mapreduce.counters.FrameworkCounterGroup.findCounter(FrameworkCounterGroup.java:182)  at org.apache.hadoop.mapreduce.counters.AbstractCounters.findCounter(AbstractCounters.java:154)  at org.apache.hadoop.mapreduce.TypeConverter.fromYarn(TypeConverter.java:240)  at org.apache.hadoop.mapred.ClientServiceDelegate.getJobCounters(ClientServiceDelegate.java:370)  at org.apache.hadoop.mapred.YARNRunner.getJobCounters(YARNRunner.java:511)  at org.apache.hadoop.mapreduce.Job$7.run(Job.java:756)  at org.apache.hadoop.mapreduce.Job$7.run(Job.java:753)  at java.security.AccessController.doPrivileged(Native Method)  at javax.security.auth.Subject.doAs(Subject.java:415)  at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)  at org.apache.hadoop.mapreduce.Job.getCounters(Job.java:753)  at org.apache.hadoop.mapreduce.Job.monitorAndPrintJob(Job.java:1361)  at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1289)  at org.apache.hadoop.hbase.mapreduce.ImportTsv.run(ImportTsv.java:677)  at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)  at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)  at org.apache.hadoop.hbase.mapreduce.ImportTsv.main(ImportTsv.java:681)

原因分析:

由于HBase impottsv导入数据的时候,需要启动底层MapReduce Job,Job运行在YARN集群上。但是HBase-0.98.7中使用的YARN、MR的版本都是2.2.0。在MR 2.3+后LIB库有一些变动,例如 JobCounter.MB_MILLIS_REDUCES就是在2.3版本加入的。而HBase-0.98.7使用的YARN/MR版本没有这个变量,所以会抛出“No enum constant”异常。

解决方法:

(1)升级HBase版本到1.0+,这样跟Hadoop中的版本可以兼容

(2)使用HBase Java Client API进行数据灌入,不是绝对的用importtsv工具

参考阅读:

https://issues.apache.org/jira/browse/MAPREDUCE-5831

原文  http://www.mannyisbusy.com/hbase-no-enum-constant/
正文到此结束
Loading...