我想用下面列出我迪尔斯在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在Ubuntu 12.04
HDFS是不是在50075运行要检查你的HDFS端口在Linux中使用以下命令
hdfs getconf -confKey fs.default.name
你会得到输出像
hdfs://hmaster:54310
并相应修改网址
在您的Cloudera管理器,检查配置项目“的NameNode服务RPC端口”的名称节点或“dfs.namenode.servicerpc地址”上。 从那里添加相同的端口号的URL。 它应该工作的罚款。
在/usr/local/hadoop/etc/hadoop/core-site.xml
代替本地主机 ,使用0.0.0.0即。
变化<value>hdfs://localhost:50075</value>
到
<value>hdfs://0.0.0.0:50075</value>
这解决了这个问题对我来说
是您的NN运行在端口50075
? 你其实不必这样做,如果你只是想列出了所有的目录。 只需使用hadoop fs -ls /
。 这将列出你的根目录下的所有目录。
你可以检查你的主机名? 相同的名称(Ubuntu的)应该有你的/ etc /主机文件和/ etc / hosts文件。
确保NN你的TCP端口是50075,其定义在HDFS-site.xml中
<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>
出现此错误的原因的:
- 它是无法与NameNode的联系
- Namenode会可能无法运行(您可以通过运行检查
jps
命令。) - 杀什么都在那个特定端口上运行
检查什么是在特定端口运行netstat -tulpn | grep 8080
netstat -tulpn | grep 8080
和kill -9 <PID>
- 重新启动名称节点
文章来源: hdfs - ls: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: