启动HBASE时,出现java.lang.ClassNotFoundException: org.apache.htrace.SamplerBuilder错误。

5

我正在使用start-hbase.sh尝试启动HBASE,但是我收到如下错误:java.lang.ClassNotFoundException: org.apache.htrace.SamplerBuilder.

我已经尝试将各种.jar文件添加到不同的文件夹中(正如其他线程建议的那样),但是仍然无法解决问题。 我正在使用Hadoop 3.11和HBase 2.10。这是错误日志(末尾)的内容。

java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster. 
    at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2972)
    at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:236)
    at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:140)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:149)
    at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2983)
Caused by: java.lang.NoClassDefFoundError: org/apache/htrace/SamplerBuilder
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:635)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:619)
    at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:149)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2669)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
    at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)
    at org.apache.hadoop.hbase.util.CommonFSUtils.getRootDir(CommonFSUtils.java:358)
    at org.apache.hadoop.hbase.util.CommonFSUtils.isValidWALRootDir(CommonFSUtils.java:407)
    at org.apache.hadoop.hbase.util.CommonFSUtils.getWALRootDir(CommonFSUtils.java:383)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.initializeFileSystem(HRegionServer.java:691)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:600)
    at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:484)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
    at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2965)
    ... 5 more
Caused by: java.lang.ClassNotFoundException: org.apache.htrace.SamplerBuilder
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    ... 25 more

1
请告诉我们您正在使用的HBase版本,以及HBASE_HOME和HADOOP_HOME中htrace-core jar的片段以检查版本。谢谢! - Subash Kunjupillai
当然可以,使用Hadoop 3.11和HBase 2.10。 - Pelle
3个回答

6

HBase 2.1.0发布使用了HTrace,这是一个正在孵化的Apache基金会项目。

HBase的lib文件夹中有一个用于第三方库的文件夹client-facing-thirdparty。您需要从那里复制htrace-core-3.1.0-incubating.jar到HBase lib目录中。(参见参考资料)

还有另一种解决方案在Cloudera社区提供,它可以通过更改配置而不是手动添加库来实现。


如果我使用 cd 命令进入 /usr/local/hbase/lib/client-facing-thirdparty 目录并执行 dir 命令,我只会得到一个 htrace-core4-4.2.0-incubating.jar 文件,尽管我遇到了相同的问题。 - Mooncrater
@Mooncrater,你把这个文件复制到了HBase的lib文件夹里吗? - Flavio Cysne
1
@Mooncrater,你是否将htrace-core-3.1.0-incubating.jar文件从$HBASE_HOME/lib/client-facing-thirdparty复制到$HBASE_HOME/lib文件夹中? - Flavio Cysne

1

看起来Hbase和Hadoop之间存在兼容性问题,我回退到使用Hadoop 2.9.1和Hbase 1.2.6以及JDK 1.8.0。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接