HDFS - LS:无法在本地例外:com.google.protobuf.InvalidPro

2019-09-01 23:11发布

我想用下面列出我迪尔斯在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

Answer 1:

HDFS是不是在50075运行要检查你的HDFS端口在Linux中使用以下命令

hdfs getconf -confKey fs.default.name

你会得到输出像

hdfs://hmaster:54310

并相应修改网址



Answer 2:

在您的Cloudera管理器,检查配置项目“的NameNode服务RPC端口”的名称节点或“dfs.namenode.servicerpc地址”上。 从那里添加相同的端口号的URL。 它应该工作的罚款。



Answer 3:

在/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>

这解决了这个问题对我来说



Answer 4:

是您的NN运行在端口50075 ? 你其实不必这样做,如果你只是想列出了所有的目录。 只需使用hadoop fs -ls / 。 这将列出你的根目录下的所有目录。



Answer 5:

你可以检查你的主机名? 相同的名称(Ubuntu的)应该有你的/ etc /主机文件和/ etc / hosts文件。



Answer 6:

确保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>


Answer 7:

出现此错误的原因的:

  1. 它是无法与NameNode的联系
  2. Namenode会可能无法运行(您可以通过运行检查jps命令。)
  3. 杀什么都在那个特定端口上运行

检查什么是在特定端口运行netstat -tulpn | grep 8080 netstat -tulpn | grep 8080kill -9 <PID>

  1. 重新启动名称节点


文章来源: hdfs - ls: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: