2013-05-04 9 views
7

Próbuję użyć poniżej notować swoje katalogi w HDFS ...HDFS - LS: Nieudane na lokalnym wyjątek: com.google.protobuf.InvalidProtocolBufferException:

[email protected]:~$ hadoop fs -ls hdfs://127.0.0.1:50075/ 
ls: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: 
Protocol message end-group tag did not match expected tag.; 
Host Details : local host is: "ubuntu/127.0.0.1"; destination host is: "ubuntu":50075; 

Oto mój/etc/hosts plik

127.0.0.1  ubuntu localhost 
#127.0.1.1  ubuntu 

# The following lines are desirable for IPv6 capable hosts 
::1  ip6-localhost ip6-loopback 
fe00::0 ip6-localnet 
ff00::0 ip6-mcastprefix 
ff02::1 ip6-allnodes 
ff02::2 ip6-allrouters 

Witam czy właściwie używam hdfs: // aby wyświetlić listę moich katalogów?

Używam couldera 4.3 na ubuntu 12.04

Odpowiedz

2

Czy Twój NN działa na porcie 50075? Tak naprawdę nie musisz tego robić, jeśli chcesz wyświetlić listę wszystkich katalogów. Po prostu użyj hadoop fs -ls /. Spowoduje to wyświetlenie wszystkich katalogów w katalogu głównym.

0

Czy możesz sprawdzić nazwę hosta ?. Ta sama nazwa (ubuntu) powinna znajdować się w pliku/etc/hostname i/etc/hosts.

0

Upewnij się, że port TCP NN jest na 50075, który jest zdefiniowany w HDFS-site.xml

<property> 
<name>dfs.namenode.rpc-address.nn1</name> 
<value>r101072036.sqa.zmf:9000</value> 
</property> 

moim problemem jest to, że mogę użyć portu HTTP adres połączyć z NN, to spowodować takie same wyjątek jak ty.

port http jest również skonfigurowany w HDFS-site.xml:

<property> 
<name>dfs.namenode.http-address.nn1</name> 
<value>r101072036.sqa.zmf:8000</value> 
</property> 
5

Na swoim przełożonym Cloudera, sprawdź na węźle nazwa dla elementu konfiguracji "NameNode usługi RPC Port" LUB „dfs.namenode.servicerpc -adres". Dodaj ten sam numer portu z adresu URL. I powinno działać dobrze. enter image description here

1

W /usr/local/hadoop/etc/hadoop/core-site.xml

W miejsce localhost, użyj 0.0.0.0 tj.

Zmień <value>hdfs://localhost:50075</value> do

<value>hdfs://0.0.0.0:50075</value> 

To rozwiązało problem dla mnie

15

HDFS ja S nie działa na 50075. Aby sprawdzić, czy port HDFS użyć następującego polecenia w linux

hdfs getconf -confKey fs.default.name 

Dostaniesz coś podobnego wyjściowego

hdfs://hmaster:54310 

i poprawny adres URL odpowiednio

+0

INFO Configuration.deprecation: fs.default.name jest przestarzałe. Zamiast tego użyj fs.defaultFS –

2

Ten błąd powstają z powodu:

  1. Nie można skontaktować się z namenode
  2. Namenode może nie być uruchomiony (można to sprawdzić, uruchamiając polecenie jps.)
  3. zabić co zawsze działa w danym porcie

sprawdzić, co działa w określonym porcie przez netstat -tulpn | grep 8080 i kill -9 <PID>

  1. Uruchom ponownie namenode