2013-05-04 48 views
7

我尝试使用下面列出我迪尔斯在HDFS ...HDFS - LS:无法在本地例外: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; 

这里是我的/ 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://列出我的dirs?

我使用Ubuntu的couldera 4.3 12.04

回答

2

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

0

你能检查你的主机名吗?在/ etc/hostname文件和/ etc/hosts文件中应该有相同的名称(ubuntu)。

0

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

在您的Cloudera管理器,检查配置项的名称节点 “的NameNode服务RPC端口” 或“dfs.namenode.servicerpc -地址”。在URL上添加相同的端口号。它应该可以正常工作。 enter image description here

1

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

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

15

HDFS我不是在50075 运行要检查你的HDFS端口在linux

hdfs getconf -confKey fs.default.name 

使用下面的命令,你会得到输出像

hdfs://hmaster:54310 

并更正相应的URL

+0

INFO Configuration.deprecation:fs.default.name已弃用。相反,使用fs.defaultFS – 2017-10-20 19:44:56

2

此错误出现因为:

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

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

运行
  • 重新启动名称节点