我已经在运行于virtualbox的ubuntu上安装了hadoop。第一次安装hadoop时,我可以启动hdfs并创建目录,没有问题。

但是,当我重新启动虚拟机后,尝试在hdfs上运行ls命令时,出现“连接拒绝”错误。然后我在基于Hadoop cluster setup - java.net.ConnectException: Connection refused的sshd_config中添加了“端口9000”,现在我收到了“ ls:本地异常失败:com.google.protobuf.InvalidProtocolBufferException:协议(protocol)消息标记的电线类型无效。;主机详细信息:本地主机为:” hadoop / 127.0.1.1“;目标主机为:” localhost“:9000;

-------------- etc / hadoop / core-site.xml -------------

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

-------------- etc / hadoop / hdfs-site.xml -----------------
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

最佳答案

好。我解决了
我运行jps,发现namenode无法启动。然后,当我尝试找出问题所在时,我会继续查看“hadoop-xxx-namenode-hadoop.out”,其中几乎没有有用的信息。因此,我查看了“ hadoop-xxx-namenode-hadoop.log ”,其中清楚地显示了错误“ org.apache.hadoop.hdfs.server.common.InconsistentFSStateException:目录/ tmp / hadoop-xxx / dfs / name为处于不一致状态:存储目录不存在或不可访问。

我发现默认情况下Hadoop会进行更多研究吗,它将namenode和datanode文件放在系统的temp目录中。而当我重新启动然后目录被删除。所以我要做的就是更改“hdfs-site.xml”并添加“ dfs.namenode.name.dir ”和“ dfs.namenode.data.dir ”属性。然后,当我尝试启动hdfs时,出现“地址已在使用中”的信息。我使用的端口是9000,重新启动后它与“tcp 0 0 *:9000”绑定(bind),因此我将core-site.xml中的“fs.defaultFS”更改为使用9001。现在一切都可以开始了。

希望这会有所帮助。

07-26 04:07