Mapreduce Hbase文件未找到异常

时间:2015-04-29 16:17:01

标签: java hadoop mapreduce hbase

我正在尝试使用mapreduce将数据填充到Hbase,但一次又一次抛出以下异常: -

15/04/29 21:35:37 WARN mapreduce.JobSubmitter: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.
15/04/29 21:35:38 INFO mapreduce.JobSubmitter: Cleaning up the staging area file:/home/hduser/hadoopDir/mapred/staging/hduser2144453758/.staging/job_local2144453758_0001
Exception in thread "main" java.io.FileNotFoundException: File does not exist: hdfs://localhost:54310/usr/lib/hbase-0.98.12-hadoop2/lib/hbase-protocol-0.98.12-hadoop2.jar

给出的jar在路径中并提供给所有节点。仍然继续给出错误。任何帮助表示赞赏。

命令是: -

    $ hadoop jar HBase-BulkImport.jar org.apache.hadoop.conf.Configuration.Driver /user/466708/workexample/ output/ NBAFinal2010

日志: -

 15/04/29 21:35:37 WARN mapreduce.JobSubmitter: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.
15/04/29 21:35:38 INFO mapreduce.JobSubmitter: Cleaning up the staging area file:/home/hduser/hadoopDir/mapred/staging/hduser2144453758/.staging/job_local2144453758_0001
Exception in thread "main" java.io.FileNotFoundException: File does not exist: hdfs://localhost:54310/usr/lib/hbase-0.98.12-hadoop2/lib/hbase-protocol-0.98.12-hadoop2.jar

3 个答案:

答案 0 :(得分:1)

hbase-protocol-0.98.12-hadoop2.jar从本地文件系统上传到hdfs位置,如下所示:

hdfs dfs -mkdir -p /usr/lib/hbase-0.98.12-hadoop2/lib
hdfs dfs -put /usr/lib/hbase-0.98.12-hadoop2/lib/hbase-protocol-0.98.12-hadoop2.jar /usr/lib/hbase-0.98.12-hadoop2/lib/hbase-protocol-0.98.12-hadoop2.jar

现在,尝试运行你的工作。

答案 1 :(得分:0)

当您在core-site.xml或hbase / hadoop环境的某些xml配置中设置属性fs.defaultFS=hdfs://<cluster>时,通常会发生这种情况。

如果是这种情况,作业提交者将始终尝试从defaultFS (hdfs)复制jar依赖项,并且无法找到它。

我认为在大多数配置中,您实际上并不需要指向hdfs的fs.defaultFS,而是hdfs-site.xml中的dfs.nameservices和adcuate HA配置。

答案 2 :(得分:0)

我遇到了确切的问题。您必须将hbase库路径添加到 .bashrc 文件中。将hbase中的lib文件夹添加到CLASSPATH。 另外,将hbase的类路径添加到HADOOP_CLASSPATH。

您的 .bashrc 文件应包含以下内容:

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`${HBASE_HOME}/bin/hbase classpath`
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`${HBASE_HOME}/bin/hbase mapredcp`

export CLASSPATH=${HBASE_HOME}/lib/*

注意:CLASSPATH应指向hbase安装文件夹的lib文件夹。使用以下命令编译和运行您的Java代码。

javac Example.java
java -classpath $CLASSPATH:. Example