[HADOOP] hdfs - ls : 로컬 예외에 실패했습니다 : com.google.protobuf.InvalidProtocolBufferException :
HADOOPhdfs - ls : 로컬 예외에 실패했습니다 : com.google.protobuf.InvalidProtocolBufferException :
hdfs에서 내 디렉터리를 나열하려면 아래 사용하려고합니다.
ubuntu@ubuntu:~$ 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;
여기에 / etc / hosts 파일이 있습니다.
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
어떻게 내 디렉터리를 나열하려면 hdfs : // 제대로 사용합니까?
나는 couldera 4.3을 우분투 12.04에서 사용하고 있습니다.
해결법
-
==============================
1.HDFS는 50075에서 실행되지 않습니다. hdfs 포트를 확인하려면 linux에서 다음 명령을 사용하십시오.
HDFS는 50075에서 실행되지 않습니다. hdfs 포트를 확인하려면 linux에서 다음 명령을 사용하십시오.
hdfs getconf -confKey fs.default.name
당신은 출력을 얻을 것이다.
hdfs://hmaster:54310
그에 맞게 URL을 수정하십시오.
-
==============================
2.cloudera 관리자에서 Name 노드의 구성 항목 "NameNode Service RPC Port"또는 "dfs.namenode.servicerpc-address"를 확인하십시오. URL에서 동일한 포트 번호를 추가하십시오. 그리고 그것은 잘 작동합니다.
cloudera 관리자에서 Name 노드의 구성 항목 "NameNode Service RPC Port"또는 "dfs.namenode.servicerpc-address"를 확인하십시오. URL에서 동일한 포트 번호를 추가하십시오. 그리고 그것은 잘 작동합니다.
-
==============================
3./usr/local/hadoop/etc/hadoop/core-site.xml에 있습니다.
/usr/local/hadoop/etc/hadoop/core-site.xml에 있습니다.
로컬 호스트 대신 0.0.0.0 즉 ..을 사용하십시오.
hdfs : // localhost : 50075 value>를 다음으로 변경하십시오. <value>hdfs://0.0.0.0:50075</value>
이것은 나를 위해 문제를 해결했다.
-
==============================
4.NN은 포트 50075에서 실행되고 있습니까? 모든 디렉토리를 나열하려면 실제로 그렇게 할 필요가 없습니다. 단순히 hadoop fs -ls /를 사용하십시오. 이렇게하면 루트 디렉토리 아래에있는 모든 디렉토리가 나열됩니다.
NN은 포트 50075에서 실행되고 있습니까? 모든 디렉토리를 나열하려면 실제로 그렇게 할 필요가 없습니다. 단순히 hadoop fs -ls /를 사용하십시오. 이렇게하면 루트 디렉토리 아래에있는 모든 디렉토리가 나열됩니다.
-
==============================
5.호스트 이름을 확인할 수 있습니까? / etc / hostname 파일과 / etc / hosts 파일에 같은 이름 (우분투)이 있어야합니다.
호스트 이름을 확인할 수 있습니까? / etc / hostname 파일과 / etc / hosts 파일에 같은 이름 (우분투)이 있어야합니다.
-
==============================
6.NN의 tcp 포트가 hdfs-site.xml에 정의 된 50075에 있는지 확인하십시오.
NN의 tcp 포트가 hdfs-site.xml에 정의 된 50075에 있는지 확인하십시오.
<property> <name>dfs.namenode.rpc-address.nn1</name> <value>r101072036.sqa.zmf:9000</value> </property>
내 문제는 HTTP 주소 포트를 사용하여 NN에 연결하는 것인데, 이는 같은 예외를 발생시킵니다.
http 포트는 hdfs-site.xml에서도 설정됩니다 :
<property> <name>dfs.namenode.http-address.nn1</name> <value>r101072036.sqa.zmf:8000</value> </property>
-
==============================
7.이 오류는 다음과 같은 이유로 발생합니다.
이 오류는 다음과 같은 이유로 발생합니다.
netstat -tulpn 명령으로 특정 포트에서 실행중인 것을 확인하십시오. grep 8080 kill -9
from https://stackoverflow.com/questions/16372997/hdfs-ls-failed-on-local-exception-com-google-protobuf-invalidprotocolbuffere by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 개발 환경을 위해 Hadoop없이 Spark를 사용할 수 있습니까? (0) | 2019.08.03 |
---|---|
[HADOOP] 하이브는 듀얼과 비슷한 것을 가지고 있습니까? (0) | 2019.08.03 |
[HADOOP] HDFS에서 파일을 삭제하는 방법은 무엇입니까? (0) | 2019.08.03 |
[HADOOP] 새로운 사용자 SSH hadoop (0) | 2019.08.03 |
[HADOOP] Hadoop MapReduce 오류 - / bin / bash : / bin / java :는 디렉토리입니다. (0) | 2019.08.03 |