HBase 批量加载 MapReduce HFile 异常(netty jar)
Posted
技术标签:
【中文标题】HBase 批量加载 MapReduce HFile 异常(netty jar)【英文标题】:HBase Bulk Load MapReduce HFile exception (netty jar) 【发布时间】:2014-01-09 22:44:31 【问题描述】:我正在尝试运行一个简单的 MapReduce 进程来编写 HFile,以便稍后导入到 HBase 表中。
作业提交时:
hbase com.pcoa.Driver /test /bulk pcoa
我收到以下异常,表明 netty-3.6.6.Final.jar 在 HDFS 中不存在(但它确实存在于此处)。
-rw-r--r--+ 1 mbeening flprod 1206119 Sep 18 18:25 /dedge1/hadoop/hbase-0.96.1.1-hadoop2/lib/netty-3.6.6.Final.jar
恐怕我不明白如何解决这个配置(?)错误。
谁能给我一些建议?
这里是例外:
Exception in thread "main" java.io.FileNotFoundException: File does not exist: hdfs://localhost/dedge1/hadoop/hbase-0.96.1.1-hadoop2/lib/netty-3.6.6.Final.jar
at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1110)
at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1102)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1102)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:288)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:224)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.determineTimestamps(ClientDistributedCacheManager.java:93)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.determineTimestampsAndCacheVisibilities(ClientDistributedCacheManager.java:57)
at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:264)
at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:300)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:387)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1268)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1265)
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.submit(Job.java:1265)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1286)
at com.pcoa.Driver.main(Driver.java:63)
这是我的驱动程序:
public class Driver
public static void main(String[] args) throws Exception
Configuration conf = new Configuration();
Job job = new Job(conf, "HBase Bulk Import");
job.setJarByClass(HBaseKVMapper.class);
job.setMapperClass(HBaseKVMapper.class);
job.setMapOutputKeyClass(ImmutableBytesWritable.class);
job.setMapOutputValueClass(KeyValue.class);
job.setInputFormatClass(TextInputFormat.class);
HTable hTable = new HTable(conf, args[2]);
HFileOutputFormat.configureIncrementalLoad(job, hTable);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.waitForCompletion(true);
【问题讨论】:
注意:我在 hadoop 2.2.0,hbase 0.96.1.1,zookeeper 3.4.5 我是否可以提供任何其他信息来帮助我了解问题所在。根本不明白为什么进程要在HDFS系统中找这个jar? 不使用此 HFile 写入进程的进程在我的集群上似乎可以正常工作 - 但我的负载的单记录插入无法正常工作。真诚感谢您提供的任何帮助。谢谢! 【参考方案1】:我不知道为什么/如果我必须这样做(在任何地方的任何启动文档中都没有看到类似的东西)
但我运行了其中一个:
hdfs dfs -put /hadoop/hbase-0.96.1.1-hadoop2/lib/*.jar /hadoop/hbase-0.96.1.1-hadoop2/lib
而且....我的 MR 工作现在似乎正在运行
如果这是一个不正确的课程 - 请告诉我 谢谢!
【讨论】:
以上是关于HBase 批量加载 MapReduce HFile 异常(netty jar)的主要内容,如果未能解决你的问题,请参考以下文章
HBase结合MapReduce批量导入(HDFS中的数据导入到HBase)