Hadoop hdfs-ls:本地异常失败:com.google.protobuf.InvalidProtocolBufferException:
我正在尝试使用以下内容列出我在hdfs中的目录:Hadoop hdfs-ls:本地异常失败:com.google.protobuf.InvalidProtocolBufferException:,hadoop,hdfs,cloudera,Hadoop,Hdfs,Cloudera,我正在尝试使用以下内容列出我在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
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://列出我的目录
我在Ubuntu12.04上使用Couldera4.3,你的NN在端口
50075上运行吗?如果您只想列出所有目录,实际上不必这样做。只需使用hadoop fs-ls/
。这将列出根目录下的所有目录。您可以检查主机名吗?。相同的名称(ubuntu)应该存在于/etc/hostname文件和/etc/hosts文件中。确保NN的tcp端口位于hdfs-site.xml中定义的50075上
<property>
<name>dfs.namenode.rpc-address.nn1</name>
<value>r101072036.sqa.zmf:9000</value>
</property>
dfs.namenode.rpc-address.nn1
r101072036.sqa.zmf:9000
我的问题是,我使用http地址端口连接NN,这会导致与您相同的异常
http端口也在hdfs-site.xml中配置:
<property>
<name>dfs.namenode.http-address.nn1</name>
<value>r101072036.sqa.zmf:8000</value>
</property>
dfs.namenode.http-address.nn1
r101072036.sqa.zmf:8000
在cloudera manager上,检查名称节点上的配置项“NameNode服务RPC端口”或“dfs.NameNode.servicerpc地址”。在URL上添加相同的端口号。它应该很好用 In/usr/local/hadoop/etc/hadoop/core-site.xml
使用0.0.0.0代替localhost,即
更改<代码>hdfs://localhost:50075到
<value>hdfs://0.0.0.0:50075</value>
hdfs://0.0.0.0:50075
这解决了我的问题HDFS没有在50075运行。 要检查hdfs端口,请在linux中使用以下命令
hdfs getconf -confKey fs.default.name
您将得到如下输出
hdfs://hmaster:54310
并相应地更正您的URL出现此错误的原因是:
jps
命令来检查它。)netstat-tulpn | grep8080
和kill-9
INFO Configuration.deprecation:fs.default.name已弃用。而是使用fs.defaultFS