在HBase中通过java api创建表时出错

在HBase中通过java api创建表时出错,java,apache,hbase,Java,Apache,Hbase,我正试图通过JavaAPI在HBase中创建一个表。我的代码如下: Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "127.0.0.1"); config.set("hbase.client.retries.number", "1"); config.set("zookeeper.session.timeout", "40000"); config.set("zoo

我正试图通过JavaAPI在HBase中创建一个表。我的代码如下:

Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "127.0.0.1");
config.set("hbase.client.retries.number", "1");
config.set("zookeeper.session.timeout", "40000");
config.set("zookeeper.recovery.retry", "1");

System.out.println("HBASE is running");
Connection conn = ConnectionFactory.createConnection(config);
Table table = conn.getTable(TableName.valueOf("recommendations"));
HTableDescriptor tableDescriptor = table.getTableDescriptor();
tableDescriptor.addFamily(new HColumnDescriptor("personal"));
tableDescriptor.addFamily(new HColumnDescriptor("professional"));
Admin admin = conn.getAdmin();
// Execute the table through admin
admin.createTable(tableDescriptor);
错误如下:

原因:

org.apache.hadoop.hbase.MasterNotRunningException:
  com.google.protobuf.ServiceException:
  org.apache.hadoop.hbase.DoNotRetryIOException:
  java.lang.NoSuchMethodError: org.apache.hadoop.net.NetUtils.getInputStream(Ljava/net/Socket;)Lorg/apache/hadoop/net/SocketInputWrapper;
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStub(ConnectionManager.java:1485)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(ConnectionManager.java:1505)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveMasterService(ConnectionManager.java:1711)
at org.apache.hadoop.hbase.client.MasterCallable.prepare(MasterCallable.java:38)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:124)

我能够通过hbase外壳创建一个表。任何输入都将受到欢迎。

ConnectionManager中的HBase似乎正在尝试使用Hadoop中的方法
SocketInputWrapper NetUtils#getInputStream(Socket)
,但找不到这种方法

因此:该类存在,但没有该方法

很可能您正在为Hadoop 1使用某些HBase类,并将其用于Hadoop 2、viceversa或某些不兼容的版本

您使用的是什么版本的Hadoop和HBase? 哪些版本的Hadoop和HBase正在使用HBase外壳