HBase出现java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration问题
問題:Hbase在集群上運行報錯:NoClassDefFoundError:org/apache/hadoop/hbase/HBaseConfiguration
需求:HBase使用Java創建表,打包成jar,提交到集群上行運行!
在IDEA中使用Maven添加Hbase
代碼:
Java代碼:
package com.bynear.HBase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.HBaseAdmin; import java.io.IOException; /*** 2018/6/20* 15:35*/ public class HBaseTest {public static void main(String[] args) throws Exception {Configuration conf = HBaseConfiguration.create();conf.set("hbase.zookeeper.quorum", "Spark1:2181,Spark2:2181");HBaseAdmin admin = new HBaseAdmin(conf);TableName name = TableName.valueOf("nvshen");HTableDescriptor desc = new HTableDescriptor(name);HColumnDescriptor base_info = new HColumnDescriptor("base_info");HColumnDescriptor extra_info = new HColumnDescriptor("extra_info");base_info.setMaxVersions(5);extra_info.setMaxVersions(5);desc.addFamily(base_info);desc.addFamily(extra_info);admin.createTable(desc);} }打包提價到集群上:
hadoop jar /root/SparkStudy.jar com/bynear/HBase/HBaseTest結果出現如下報錯!
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfigurationat com.bynear.HBase.HBaseTest.main(HBaseTest.java:19)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.apache.hadoop.util.RunJar.main(RunJar.java:212) Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfigurationat java.net.URLClassLoader$1.run(URLClassLoader.java:366)at java.net.URLClassLoader$1.run(URLClassLoader.java:355)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:354)at java.lang.ClassLoader.loadClass(ClassLoader.java:425)at java.lang.ClassLoader.loadClass(ClassLoader.java:358)... 6 more解決辦法:
把hbase的jar包加入到hadoop classpath中
在hadoop安裝目錄下找到hadoop-env.sh文件,
添加 : export HADOOP_CLASSPATH=/home/hadoop/apps/hbase/lib/*
不需要重啟,重新執行命令hadoop jar mapreducehbase.jar hbase.TxHBase 運行成功。
HBase的安裝!
tar -zxvf hbase.tar -C 到指定的目錄
vim hbase-env.sh
添加 JAVA_HOME 將自導的Zookeeper 修改為flase
vim hbase-site.xml
注意:
需要將 Hadoop 的 hdfs-site.xml 和 core-site.xml 拷貝到Hbase的conf目錄中,因為HBase集群是依賴于Hadoop集群的,HBase的region產生的HFile,存儲在hbase-site.xml中創建的HDFS指定的目錄中!
執行結果:
運行結果:
hbase(main):001:0> list TABLE nvshen 1 row(s) in 0.4150 seconds=> ["nvshen"] hbase(main):002:0>總結
以上是生活随笔為你收集整理的HBase出现java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五十岁叫什么之年(人到五十,则要有三不争
- 下一篇: 微信九宫格怎么设置(微信九宫格怎么设置成