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

时间:2013-05-04 09:57:21

标签: 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 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://列出我的目录?

我在ubuntu 12.04上使用couldera 4.3

7 个答案:

答案 0 :(得分:22)

HDFS未以50075运行。 要检查hdfs端口,请在linux中使用以下命令

{
        outerKey1 =         {
            someKey = “Some String";
            disableAutoFill = 1;
            disableABC = 1;
            disableXYZ = 1;
            disableThis = 1;
            disableThat = 1;
            disableBla = 1;
            disableBlaBla= 1;
            disableBlaBlaBlaBla = 1;
            disableBlaBlaBlaBlaBlaBla= 1;
        };
        outerKey2 =         {
            someKey =             (
                                {
                    markPath = 0;
                    title = "Some Name";
                    url = "http://www.BlaBla.com";
                },
                                {
                   markPath = 0;
                    title = "Some Name";
                    url = "http://www.something.com";
                },
                                {
                    markPath = 0;
                    title = Yahoo;
                    url = "http://www.yahoo.com";
                },
                                {
                   Path = 0;
                    title = “title";
                    url = "http://www.title.com";
                }
            );
            enabled = 1;
        };
        outerKey3 =         {
            enabled = 1;
            gatewayIP = "192.172.169.10";
            gatewayPort = 8080;
            gatewayRoutingUrls =             (
                "www.kuchbhi.com",
                "www.oh-teri.com"
            );
        };
        outerKey4 =         {
           SomeCategories =             (
                SomeCategories,
        someOtherCategories
            );
            defaultUrl = "www.meriapniwebsite.com";
            enabled = 1;
            exceptionUrls =             (
                "www.kuchbhihojay.com"
            );
            filterUrls =             (
                "www.kuchtobhi.com",
                "www.kyaaapjhandhai.com"
            );
            filteringFlag = 1;
        };
    }

您将获得类似

的输出
hdfs getconf -confKey fs.default.name

并相应更正您的网址

答案 1 :(得分:7)

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

在/usr/local/hadoop/etc/hadoop/core-site.xml

代替 localhost ,使用 0.0.0.0 ,即..

<value>hdfs://localhost:50075</value>更改为

<value>hdfs://0.0.0.0:50075</value>

这解决了我的问题

答案 4 :(得分:0)

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

答案 5 :(得分:0)

确保您的NN的tcp端口在50075上,该端口在hdfs-site.xml中定义

<property>
<name>dfs.namenode.rpc-address.nn1</name>
<value>r101072036.sqa.zmf:9000</value>
</property>

我的问题是我使用http-address端口与NN连接,这会导致与你相同的异常。

http端口也在hdfs-site.xml中配置:

<property>
<name>dfs.namenode.http-address.nn1</name>
<value>r101072036.sqa.zmf:8000</value>
</property>

答案 6 :(得分:0)

出现此错误的原因是:

  1. 无法与namenode联系
  2. Namenode可能未运行(您可以通过运行jps命令来检查它。)
  3. 杀死该特定端口正在运行的内容
  4. netstat -tulpn | grep 8080检查特定端口正在运行的内容 和kill -9 <PID>

    1. 重新启动namenode