Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop hdfs-ls:本地异常失败:com.google.protobuf.InvalidProtocolBufferException:_Hadoop_Hdfs_Cloudera - Fatal编程技术网

Hadoop hdfs-ls:本地异常失败:com.google.protobuf.InvalidProtocolBufferException:

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

我正在尝试使用以下内容列出我在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://列出我的目录


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

出现此错误的原因是:

  • 它无法与namenode联系
  • Namenode可能未运行(您可以通过运行
    jps
    命令来检查它。)
  • 杀死在特定端口中运行的任何东西
  • 通过
    netstat-tulpn | grep8080
    kill-9

  • 重新启动namenode

  • INFO Configuration.deprecation:fs.default.name已弃用。而是使用fs.defaultFS