【问题标题】:HBase not starting after adding the jar file with Mapper/Reducer使用 Mapper/Reducer 添加 jar 文件后 HBase 未启动
【发布时间】:2015-07-04 16:42:39
【问题描述】:

我正在尝试为 hbase 编写 Mapper/Reducer,并添加了 jar。但是在 lib 目录中添加 jar 文件后,我无法启动 hbase。我想调试出了什么问题?如何更改日志级别?会有帮助吗? 以下是例外:

java.lang.RuntimeException: Master 构造失败: class org.apache.hadoop.hbase.master.HMasterCommandLine$LocalHMaster 在 org.apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.java:143) 在 org.apache.hadoop.hbase.LocalHBaseCluster.addMaster(LocalHBaseCluster.java:217) 在 org.apache.hadoop.hbase.LocalHBaseCluster.(LocalHBaseCluster.java:153) 在 org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:224) 在 org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:139) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 在 org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126) 在 org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2290) 引起:java.lang.NoSuchMethodError: org.apache.hadoop.ipc.RPC.getProtocolProxy(Ljava/lang/Class;JLjava/net/InetSocketAddress;Lorg/apache/hadoop/security/UserGroupInformation;Lorg/apache/hadoop/conf /配置;Ljavax/net/SocketFactory;ILorg/apache/hadoop/io/retry/RetryPolicy;Ljava/util/concurrent/atomic/AtomicBoolean;)Lorg/apache/hadoop/ipc/ProtocolProxy; 在 org.apache.hadoop.hdfs.NameNodeProxies.createNNProxyWithClientProtocol(NameNodeProxies.java:420) 在 org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:316) 在 org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:178) 在 org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:665) 在 org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:601) 在 org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:148) 在 org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591) 在 org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:89) 在 org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2625) 在 org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2607) 在 org.apache.hadoop.fs.FileSystem.get(FileSystem.java:368) 在 org.apache.hadoop.fs.Path.getFileSystem(Path.java:296) 在 org.apache.hadoop.hbase.util.FSUtils.getRootDir(FSUtils.java:1004) 在 org.apache.hadoop.hbase.regionserver.HRegionServer.(HRegionServer.java:562) 在 org.apache.hadoop.hbase.master.HMaster.(HMaster.java:364) 在 org.apache.hadoop.hbase.master.HMasterCommandLine$LocalHMaster.(HMasterCommandLine.java:307) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:408) 在 org.apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.java:139) ... 7 更多

【问题讨论】:

    标签: java hadoop hbase


    【解决方案1】:

    所以看来错误是由于 HBase 的 lib 目录中的 hadoop 库(hadoop--2.5.1)与我的实际 Hadoop 安装(hadoop--2.6.0 )。我的 jar 正在寻找它在旧版本的 hadoop 库中找不到的类,因为它失败了。 this answer 让我意识到了这个问题。在我复制了 lib 目录下的所有 hadoop-*-2.6.0 jar 之后,HBase 就按预期启动了。 HBase-Hadoop compatibility documentation中也提到了这一点。

    【讨论】:

      猜你喜欢
      • 2013-09-07
      • 2015-09-02
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多