/ / Error al crear una tabla a través de java api en HBase - java, apache, hbase

Se produjo un error al crear la tabla a través de la API java en HBase - java, apache, hbase

Estoy tratando de crear una tabla en HBase a través de api JAVA. Mi código es el siguiente:

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);

El error es el siguiente:

Causado por:

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)

Soy capaz de crear una tabla a través del shell hbase. Cualquier contribucion sera apreciada.

Respuestas

0 para la respuesta № 1

Parece que HBase en ConnectionManager está intentando usar el método SocketInputWrapper NetUtils#getInputStream(Socket) de Hadoop, pero tal método no se encuentra.

Entonces: la clase existe, pero no tiene ese método.

Probablemente esté usando algunas clases de HBase para Hadoop 1 y usándolas con Hadoop 2, o viceversa, o algunas versiones no compatibles.

¿Qué versiones de Hadoop y HBase estás usando? ¿Qué versiones de Hadoop y HBase utilizan el shell HBase?