2015-01-19 13 views
5

Ich versuche, meine HBase mit HDFS zu verbinden. Ich habe meine hdfs nomenode (bin/hdfs nomenode) und datnode (/ bin/hdfs datanode) ausgeführt. Ich kann auch meine Hbase (sudo ./bin/start-hbase.sh) und lokalen Regionsserver (sudo ./bin/local-regionservers.sh start 1 2) starten. Aber wenn ich versuche, einen Befehl auszuführen aus Hbase Shell den folgenden Fehler gibt:Verbindung abgelehnt in Hbase Shell beim Verbinden von HBase mit HDFS

[email protected]:/teaching/14f-cis655/proj-dtracing/hbase/hbase-0.99.0-SNAPSHOT$ ./bin/hbase shell 
HBase Shell; enter 'help<RETURN>' for list of supported commands. 
Type "exit<RETURN>" to leave the HBase Shell 
Version 0.99.0-SNAPSHOT, rUnknown, Sat Aug 9 08:59:57 EDT 2014 

hbase(main):001:0> list 
TABLE                          
SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/teaching/14f-cis655/proj-dtracing/hbase/hbase-0.99.0-SNAPSHOT/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/teaching/14f-cis655/proj-dtracing/hadoop-2.6.0/share/hadoop/common/lib/slf4j-log4j12-1.7.5.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] 
2015-01-19 13:33:07,179 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 

ERROR: Connection refused 

Here is some help for this command: 
List all tables in hbase. Optional regular expression parameter could 
be used to filter the output. Examples: 

    hbase> list 
    hbase> list 'abc.*' 
    hbase> list 'ns:abc.*' 
    hbase> list 'ns:.*' 

Hier sind meine Konfigurationsdateien für HBase und Hadoop:

HBase-site.xml

<configuration> 
<property> 
<name>hbase.rootdir</name> 
<value>hdfs://localhost:9000/hbase</value> 
</property> 

    <!--for psuedo-distributed execution--> 
    <property> 
     <name>hbase.cluster.distributed</name> 
     <value>true</value> 
    </property> 
    <property> 
     <name>hbase.master.wait.on.regionservers.mintostart</name> 
     <value>1</value> 
    </property> 
     <property> 
     <name>hbase.zookeeper.property.dataDir</name> 
     <value>/teaching/14f-cis655/tmp/zk-deploy</value> 
     </property> 

    <!--for enabling collection of traces 
    --> 
    <property> 
     <name>hbase.trace.spanreceiver.classes</name> 
     <value>org.htrace.impl.LocalFileSpanReceiver</value> 
    </property> 
    <property> 
     <name>hbase.local-file-span-receiver.path</name> 
     <value>/teaching/14f-cis655/tmp/server-htrace.out</value> 
    </property> 
    </configuration> 

HDFS-site.xml

<configuration> 
<property> 
    <name>dfs.replication</name> 
    <value>1</value> 
</property> 
<property> 
    <name>dfs.namenode.name.dir</name> 
    <value>file:/teaching/14f-cis655/proj-dtracing/hadoop-2.6.0/yarn/yarn_data/hdfs/namenode</value> 
</property> 
<property> 
    <name>dfs.datanode.data.dir</name> 
    <value>file:/teaching/14f-cis655/proj-dtracing/hadoop-2.6.0/yarn/yarn_data/hdfs/datanode</value> 
</property> 
<property> 
    <name>hadoop.trace.spanreceiver.classes</name> 
    <value>org.htrace.impl.LocalFileSpanReceiver</value> 
    </property> 
    <property> 
    <name>hadoop.local-file-span-receiver.path</name> 
    <value>/teaching/14f-cis655/proj-dtracing/hadoop-2.6.0/logs/htrace.out</value> 
    </property> 
</configuration> 

Kern-site.xml

<configuration> 
<property> 
    <name>fs.default.name</name> 
    <value>hdfs://localhost:9000</value> 
</property> 
</configuration> 
+0

Haben Sie lösen dieses Problem? Wenn ja, könnten Sie bitte die Lösung teilen. – Shash

+0

Versuchen Sie, das Verzeichnis zu löschen, in dem zokeeper seine Daten schreibt. Dann starte deinen HBase neu –

+0

In meinem Fall ist das Verzeichnis/teaching/14f-cis655/tmp/zk-deploy –

Antwort

3

Bitte überprüfen Sie tut HDFS von Shell erhältlich ist:

$ hdfs dfs -ls /hbase 

Auch stellen Sie sicher, dass Sie alle Umgebungsvariablen in hdfs-env.sh Datei haben:

HADOOP_CONF_LIB_NATIVE_DIR="/hadoop/lib/native" 
HADOOP_OPTS="-Djava.library.path=/hadoop/lib" 
HADOOP_HOME=/hadoop 
YARN_HOME=/hadoop 
HBASE_HOME=/hbase 
HADOOP_HDFS_HOME=/hadoop 
HBASE_MANAGES_ZK=true 

Führen Sie Hadoop und HBase mit demselben Betriebssystembenutzer aus? Wenn Sie separate Benutzer verwenden, überprüfen Sie, ob der HBase-Benutzer auf HDFS zugreifen darf.

Stellen Sie sicher, dass Sie eine Kopie von hdfs-site.xml und Verzeichnis Kern-stie.xml (oder Symlink) Dateien in $ {HBASE_HOME}/conf haben.

Auch fs.default.name Option ist für GARN veraltet (aber es muss noch arbeiten), müssen Sie fs.defaultFS stattdessen prüfen, mit.

Verwenden Sie Zookeeper? Weil Sie hbase.zookeeper.property.dataDir Option angegeben haben, aber es gibt keine hbase.zookeeper.quorum dort und andere wichtige Optionen. Bitte lesen Sie http://hbase.apache.org/book.html#zookeeper für weitere Informationen.

Bitte fügen nächste Option zu hdfs-site.xml zu HBase richtig funktioniert (ersetzen $ HBASE_USER Variable von Ihrem Systembenutzer, die HBase laufen verwendet wird):

<property> 
    <name>hadoop.proxyuser.$HBASE_USER.groups</name> 
    <value>*</value> 
</property> 
<property> 
    <name>hadoop.proxyuser.$HBASE_USER.hosts</name> 
    <value>*</value> 
</property> 
<property> 
    <name>dfs.support.append</name> 
    <value>true</value> 
</property> 
+1

Ja, das Problem war, dass der Quarkprozess des Zoowärters nicht ausgeführt wurde. Es wurde behoben, nachdem ich das Verzeichnis löschte, in dem HBase seine temporären Daten hält. Es funktioniert jetzt gut. –