1

Je souhaite configurer une connexion à HBase via Java, mais je suis confronté à un problème. J'ai installé un seul nœud HDP 2.1 via Ambari sur mon CentOS 6.5. J'ai le code suivant:Connexion HBase Java

public class PutExample { 
    public static void main(String[] args) throws IOException { 

     final String serverFQDN = "hadoop.hortonworks"; 

     Configuration conf = HBaseConfiguration.create(); 
     conf.set("hbase.zookeeper.quorum", serverFQDN); 
     conf.set("hbase.zookeeper.property.clientPort", "2181"); 
     conf.set("zookeeper.znode.parent", "/hbase-unsecure"); 

     HBaseAdmin admin = new HBaseAdmin(conf); 

     try { 

      HTable table = new HTable(conf, "hb_tt2"); 

     } catch (Exception ex) { 
      System.out.println("Error caught."); 
      ex.printStackTrace(); 
     } 

     System.out.println("End."); 
    } 
} 

Et voici la sortie:

log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/C:/Users/bae/Desktop/Neue%20Bibliotheken/lib%20Hadoop/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/C:/Users/bae/Desktop/Neue%20Bibliotheken/lib%20Zookeeper/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 
Error caught. 
java.io.IOException: Unable to determine ZooKeeper ensemble 
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:121) 
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:165) 
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:134) 
    at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.<init>(ZooKeeperKeepAliveConnection.java:43) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(ConnectionManager.java:1725) 
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.isTableOnlineState(ZooKeeperRegistry.java:103) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.isTableDisabled(ConnectionManager.java:926) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.relocateRegion(ConnectionManager.java:1093) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1374) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1128) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1111) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1070) 
    at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:347) 
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:201) 
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:159) 
    at bt.PutExample.main(PutExample.java:41) 
End. 

Je n'ai pas changé tout fichier config, et j'utiliser le pot-fichiers que je trouve sur le Hadoop-Server. Ai-je manqué des configs dans mon programme ou sur le serveur? Je ne peux pas comprendre ce que signifie ce message d'erreur.

Merci pour l'aide à l'avance

Répondre

0

essayez de changer la version des pots de Hbase. Parfois, des changements mineurs aident. J'ai eu la même exception et la modification des jars client hbase (dans pom.xml) de 0,98 à 0,98.4 aidé.

<version>0.98.4-hadoop2</version> 
0

Vous devez mettre tous les pots nécessaires pour HADOOP_CLASSPATH

Essayez cette chaîne pour exécuter votre pot

HADOOP_CLASSPATH=`hbase classpath` hadoop jar your.jar PutExample