使用HBase创建和运行Hadoop Mapreduce Jar文件

时间:2015-09-02 10:37:11

标签: eclipse hadoop jar mapreduce hbase

我有一个MapReduce实现,其中Mapper的输入是HBase扫描结果(每行一个映射),Reduce阶段直接将输出存储在特定的HBase表中。

为了指定mapper和reducer参数,我正在使用TableMapReduceUtil助手类,如下所示:

TableMapReduceUtil.initTableMapperJob(
              "Simulations_Data",       // input HBase table name
              scan_job_DMV,                 // Scan instance to control CF and attribute selection <key, value>
              HBaseMapper.class,        // mapper
              TimestepNode.class,           // mapper output key
              DoubleArrayWritable.class,    // mapper output value
              to_return);


TableMapReduceUtil.initTableReducerJob(
              "SimulationsResults",     // output table
              HBaseReducer.class,       // reducer class
              to_return);

工作环境是hbase-0.98.4-hadoop2和hadoop-2.6.0

如果我使用Eclipse运行代码(版本:Luna Service Release 2 - 4.4.2),一切都很完美。但是,如果我从Eclipse(使用选项Package required lib生成一个Runnable JAR文件到生成的JAR中)并尝试从终端运行它,则会发生以下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: rsrc:hbase-common-0.98.11-hadoop2.jar
    at org.apache.hadoop.fs.Path.initialize(Path.java:206)
    at org.apache.hadoop.fs.Path.<init>(Path.java:172)
    at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.findOrCreateJar(TableMapReduceUtil.java:823)
    at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.addDependencyJars(TableMapReduceUtil.java:776)
    at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.addHBaseDependencyJars(TableMapReduceUtil.java:692)
    at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.addDependencyJars(TableMapReduceUtil.java:737)
    at D2C_mapreduce_main.get_DMV_Job(D2C_mapreduce_main.java:130)
    at D2C_mapreduce_main.main(D2C_mapreduce_main.java:102)
    ... 5 more
Caused by: java.net.URISyntaxException: Relative path in absolute URI: rsrc:hbase-common-0.98.11-hadoop2.jar
    at java.net.URI.checkPath(URI.java:1804)
    at java.net.URI.<init>(URI.java:752)
    at org.apache.hadoop.fs.Path.initialize(Path.java:203)
    ... 12 more

此问题已部分解决:

但是,可能由于缺乏在线资源,我认为它可能代表了社区的一个开放性问题。

0 个答案:

没有答案