2013-04-01 11 views
20

Sto tentando di distribuire Hbase in modalità autonoma in seguito a questo articolo: http://hbase.apache.org/book.html#quickstart. La versione è 0.92.1-cdh4.1.2Impossibile connettersi autonomamente a HBase (impossibile creare la tabella)

Ma sto ottenendo questi errori quando si tenta di creare una tabella:

Messaggio di errore:

13/04/01 14:07:10 ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries 
13/04/01 14:07:10 WARN zookeeper.ZKUtil: hconnection Unable to set watcher on znode /hbase/master 
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master 
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) 
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) 
    at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1021) 
    at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:154) 
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.watchAndCheckExists(ZKUtil.java:226) 
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker.start(ZooKeeperNodeTracker.java:82) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.java:580) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:569) 

registro di uscita:

13/04/01 14:06:39 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=localhost:2181 sessionTimeout=180000 watcher=hconnection 
13/04/01 14:06:39 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is [email protected] 
13/04/01 14:06:39 INFO zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (Unable to locate a login configuration) 
13/04/01 14:06:39 WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect 
java.net.ConnectException: Connection refused 
     at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
     at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:599) 
     at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350) 
     at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068) 
13/04/01 14:06:39 WARN zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid 

Le mie configurazioni:

  1. Aggiunto JA VA_HOME in hbase-env.sh
  2. hbase_site.xml

    <name>hbase.rootdir</name> 
    
    <value>file:///home/hadoop/data</value> 
    

    <name>hbase.zookeeper.property.dataDir</name> 
    
    <value>file:///home/hadoop/zookeeper</value> 
    

ho cercato di modificare/etc/hosts, che sembra piace questo (Oracle è il nome host):

127.0.0.1 localhost oracle 

o

[server ip] localhost oracle 

Ma questi non lo fanno lavora per me.

miei codici esatte sono:

[[email protected] bin]$ ./start-hbase.sh 
starting master, logging to /home/hadoop/hbase-0.94.6/bin/../logs/hbase-usr-master-oracle.out 
[[email protected] bin]$ hbase shell 
13/04/01 14:57:55 WARN conf.Configuration: hadoop.native.lib is deprecated. Instead, use io.native.lib.available 
HBase Shell; enter 'help<RETURN>' for list of supported commands. 
Type "exit<RETURN>" to leave the HBase Shell 
Version 0.92.1-cdh4.1.2, rUnknown, Thu Nov 1 18:02:07 PDT 2012 

hbase(main):001:0> create 'test','cf' 

Grazie in anticipo!

+0

tenta di aprire HBase ui web in qualsiasi browser: localhost: 60010 funziona? –

+0

Inoltre, questa struttura di directory esiste? –

+0

@Sourav si, tutto funziona, ancora non riusciva a farlo funzionare. Sono passato a utilizzare il pacchetto cloudera ed è molto più semplice. – Hypnos

risposta

7

Sembra che manchi hbase.zookeeper.quorum nella configurazione. Si prega di consultare questo capitolo della guida HBase, può aiutare: http://hbase.apache.org/book/zookeeper.html

Inoltre si prega di controllare zookeeper è avviato sulla porta destra e (cosa succede più spesso) interfacce IP corrette.

+2

Usando il hbase standalone ottengo lo stesso errore in modo che zookeeper sia lanciato da hbase secondo necessità. Quando la tabella viene creata, hbase non può avviare zookeeper perché dice "Esito di ZooKeeper fallito dopo 3 tentativi". Il che sembra dire che hbase pensa che lo zookeeper esista ma la connessione fallisce. Guardo jps -l e non vedo zookeeper, quindi perché pensa che esista? – pferrel

2

Qualcosa potrebbe essere correlato alla tua configurazione. All'inizio, ho scaricato HBase tar (http://hbase.apache.org/book/quickstart.html) per eseguire HBase. Non ho seguito il link per fare alcuna configurazione, basta scaricare, avviare HBase, eseguire "shell HBase". Ma quando ho creato un tavolo, mi ha dato un errore come hai detto tu. E poi, cerco l'installazione di HBase su Mac, dato che uso Mac. Adotto utilizzare "brew install hbase" per installare HBase (http://chase-seibert.github.io/blog/2013/02/01/getting-starting-with-hbase-and-pig.html). Al termine dell'installazione, ricreare il tavolo. Successo.

Quindi ri-considerare il tuo errore, deve essere collegato con la tua JAVA_HOME o altre configurazioni su HBase. Trovare la risposta in questo modo potrebbe aiutarti.

3

Non sono sicuro che tu sia su Mac, ma ho avuto anche questo problema. Si è scoperto che era perché un file .DS_STORE si trovava in una cartella di -ROOT- region server e causava un'eccezione di connessione. Molto strano!

+3

puoi spiegare cosa significa "una cartella di -ROOT- region server". La configurazione standalone predefinita utilizza una versione di ZooKeeper lanciata da Hbase stesso. Ottengo questo errore sul mac con l'Hbase standalone. – pferrel

1

fermare la hbase da stop-hbase.sh individuare nella cartella zookeeper e svuotare il contenuto della cartella. quindi riavvia la shell hbase e hbase. che ha risolto il problema per me

+0

Il primo avvio di una base autonoma di hbase creerà la cartella in base all'avvio rapido di hbase. Ho provato con un dataDir pulito e con uno inesistente, lo stesso errore. – pferrel

+0

Quando faccio questo, corregge l'errore ZK, ma perdo anche le mie tabelle HBase locali. –

1

Ho riscontrato anche questo problema durante la configurazione di hbase. Un paio di minuti più tardi ho capito che avevo dimenticato di iniziare HBase eseguendo il comando seguente:

hbase-1.1.2/bin/start-hbase.sh 

Dopo l'esecuzione di questo comando, shell HBase funzionato bene.

0

Anch'io ho avuto lo stesso problema.impostare correttamente il proprietario e il gruppo in entrambe le cartelle hbase.rootdir e hbase.zookeeper.property.data.Dir.Give 755 per entrambe le cartelle.

sudo chown -R hadoop_user:hadoop_user_group home/hadoop/data 
sudo chmod -R 755 home/hadoop/data 
0

L'errore "ERRORE zookeeper.RecoverableZooKeeper: ZooKeeper esiste fallito dopo 3 tentativi" molto probabilmente indica che non si dispone di zookeeper esecuzione - Prima di fissare la HBase shell è possibile verificare se il quorum Zookeeper è in su, utilizzando:

$ jps 

il comando elencherà tutti i processi Java sulla macchina cioè l'uscita probabile deve essere - per la configurazione standalone HBase si sta cercando di impostare (ignorare i numeri nella colonna di sinistra cioè PID) :

62019 Jps 
61098 HMaster   
61233 HRegionServer  
61003 HQuorumPeer 

Se l'output non ha il HQuorumPeer - indica che lo zookeeper non è in esecuzione.

Zookeeper è richiesto per il cluster HBase, poiché lo gestisce.


Soluzione:

Nella directory HBase, prima fermare il HBase:

$ ./bin/stop-hbase.sh 

Se stai cercando di capire l'esempio 'standalone HBase' - aderire al conf minimo fornito nell'esempio:

<configuration> 
    <property> 
    <name>hbase.rootdir</name> 
    <value>file:///home/adio/workspace/hadoop/hbase/directories/hbase</value> 
    </property> 
    <property> 
    <name>hbase.zookeeper.property.dataDir</name> 
    <value>/home/adio/workspace/hadoop/hbase/directories/zookeeper</value> 
    </property> 
</configuration> 

ie il tuo conf/hbase-site.xml dovrebbe avere il contenuto sopra.

Una volta impostato, ora inizia il HBase di nuovo:

$ ./bin/start-hbase.sh 

P.S. chiunque passi a questa procedura ha ancora il problema non risolto - lascia il problema nella sezione commenti.


poche risposte rilevanti: 123

0

Il problema sta nel 'HBase-site.xml' sotto la proprietà 'hbase.zookeeper.property.dataDir'

<property> 
    <name>hbase.zookeeper.property.dataDir</name> 
    <value>/usr/lib/hbase/zookeeperdata</value> 
    </property> 

Nota: sotto questa proprietà impostare il percorso nel file system 'LOCAL'.

Abbiamo solo bisogno di specificare la directory sul filesystem locale in cui HBase e ZooKeeper scrivono i dati. Per esempio, in questo caso, dopo aver eseguito 1) start-hbase.sh 2) HBase comando di shell

accedere al percorso (nel mio caso/usr/lib/HBase/zookeeperdata), dove si vedrà un file denominato myid.

riassumendo i punti di validazione

1) su come eseguire jps seguenti proccesses dovrebbe correre HQuorumPeer, ResourceManager, HMaster, NameNode, principale, HRegionServer, SecondaryNameNode, DataNode, Jps, NodeManager

2) In hbase-site.xml, per la proprietà 'hbase.zookeeper.property.dataDir', il percorso deve essere impostato sul percorso locale, ovvero la cartella deve essere presente localmente.

3) Dopo aver eseguito il comando start-hbase.sh e hbase shell -> Navigazione verso il percorso specificato in hbase.zookeeper.property.dataDir (nel mio esempio il percorso è/usr/lib/hbase/zookeeperdata), dovrebbe essere presente un file chiamato myid

-1

(1) Basta eseguire ./$HBASE_HOME/bin/start-habse.sh, sotto l'eccezione scomparirà.

org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid 
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) 
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) 
    at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045) 
    at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:221) 
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:419) 
    at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65) 
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:905) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:648) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 

- List item 
+2

Si prega di prestare maggiore attenzione durante la formattazione della risposta. – zuazo

1

Sembra che ci sia qualche errore in hbase-site.xml conf. Secondo il quickstart document, standalone HBase hbase-site.xml dovrebbe in questo modo:

<configuration> 
    <property> 
    <name>hbase.rootdir</name> 
    <value>file:///home/testuser/hbase</value> 
    </property> 
    <property> 
    <name>hbase.zookeeper.property.dataDir</name> 
    <value>/home/testuser/zookeeper</value> 
    </property> 
</configuration> 

E non c'è file:// in configurazione Zookeeper. E fai attenzione quando non hai avviato HBase, devi cancellare i file che memorizzi hbase e zookeeper. In base alla configurazione di cui sopra, è necessario eliminare tutti i file sotto /home/testuser/hbase e /home/testuser/zookeeper. E prova a controllare le informazioni sull'errore del registro. Ho corretto questo errore quando ho il conf giusto e aggiungere la variabile JAVA_HOME in hbase-env.sh.

1

In HBase 1.2.3 ho quasi lo stesso errore "Esiste ZooKeeper fallito dopo 4 tentativi" in modalità standalone. E 'stato causato eseguendo ./start-hbase.sh senza dover autorizzazioni per la connessione alla porta 2181. La soluzione si è rivelata molto semplice:

sudo ./start-hbase.sh 

Solo nel caso, la configurazione di HBase loco.XML è:

<configuration> 
    <property> 
     <name>hbase.rootdir</name> 
     <value>file:///home/hadoop/HBase/HFiles</value> 
    </property> 
    <property> 
     <name>hbase.zookeeper.property.dataDir</name> 
     <value>/home/hadoop/zookeeper</value> 
    </property> 
</configuration>