2015-01-19 21 views
5

Próbuję podłączyć mój HBase do HDFS. Mam uruchomione namenode hdfs (bin/hdfs namenode) i datnode (/ bin/hdfs datanode). Mogę również uruchomić mój serwer Hbase (sudo ./bin/start-hbase.sh) i lokalny serwer regionalny (sudo ./bin/local-regionservers.sh start 1 2). Ale gdy próbuję wykonać polecenie z HBase shell daje następujący błąd:Połączenie odrzucone w powłoce Hbase podczas podłączania HBase do 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:.*' 

Poniżej są moje pliki konfiguracyjne dla HBase i 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> 

Core site.xml

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

Czy rozwiązać ten przypadek? Jeśli tak, czy mógłbyś udostępnić rozwiązanie. – Shash

+0

Spróbuj usunąć katalog, w którym zookeeper zapisuje dane. Następnie uruchom ponownie swój HBase –

+0

W moim przypadku katalogiem jest/teaching/14f-cis655/tmp/zk-deploy –

Odpowiedz

3

Proszę sprawdzić czy cię HDFS jest dostępny od powłoki:

$ hdfs dfs -ls /hbase 

również upewnić się, że masz wszystkie zmienne środowiskowe w hdfs-env.sh pliku:

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 

Czy uruchamiasz Hadoop i HBase przy użyciu tego samego użytkownika systemu operacyjnego? Jeśli korzystasz z oddzielnych użytkowników, sprawdź, czy użytkownik HBase ma dostęp do HDFS.

Upewnij się, że masz kopię HDFS-site.xml i core-stie.xml (lub dowiązania symbolicznego) Pliki w $ {HBASE_HOME}/conf katalogu.

także fs.default.name opcja jest przestarzała dla przędzy (ale musi to jeszcze działa), należy rozważyć użycie fs.defaultFS zamiast.

Czy korzystasz z Zookeepera? Ponieważ podano opcję hbase.zookeeper.property.dataDir, ale nie ma tam hbase.zookeeper.quorum i innych istotnych opcji. Przeczytaj http://hbase.apache.org/book.html#zookeeper, aby uzyskać więcej informacji.

proszę dodać kolejną opcję HDFS-site.xml aby HBase działa poprawnie (wymień $ HBASE_USER zmienną przez użytkownika systemu, który jest wykorzystywany do uruchomienia HBase):

<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

Tak, więc problemem był brak procesu kworum zookeeper. Zostało to naprawione po usunięciu skasowałem katalog, w którym HBase przechowuje tymczasowe dane. Teraz działa dobrze. –