hbaseMapper提交報找不到類NoClassDefFoundError

最近寫一個hbase的mapper生成hfile文件,可是在執行jar包時,老是報Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/client/Scan錯誤,註釋掉這個方法以後,又報其餘的jar包找不到,彷佛老是找不到hbase的相關包:html

一開始執行命令:java

root@master1 lct]# hadoop jar testhfile.jar lct01 /out
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/client/Scan
    at hbasetest.HfileCreate.main(HfileCreate.java:39)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.client.Scan
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 moreapache

後來看了官網,也給出了一些介紹關於這方面:app

https://hbase.apache.org/book.html#mapreduceoop

在請教了一塊兒工做的同事,肯定就是這個問題引發的,修改的執行命令:spa

[root@master1 lct]# HADOOP_CLASSPATH=`hbase classpath` hadoop jar testhfile.jar lct01 /out.net

這樣執行又出現一個權限問題,這是由於root用戶對hdfs目錄沒有讀寫權限,切換到hdfs用戶在執行這個命令,任務就沒問題了;htm

[root@master1 lct]# su hdfsblog

[hdfs@master1 lct]$ HADOOP_CLASSPATH=`hbase classpath` hadoop jar testhfile.jar lct01 /outhadoop

執行成功。

相關文章
相關標籤/搜索