我正在尝试使用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
答案 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