我在ubuntu上安装了hadoop,它运行在virtualbox上。当我第一次安装hadoop时,我可以启动hdfs并创建没有问题的目录。
但是当我重新启动虚拟机后,尝试在hdfs上运行ls命令时出现“连接被拒绝”错误。然后我在Hadoop cluster setup - java.net.ConnectException: Connection refused的sshd_config基础上添加了“端口9000”,现在我得到“ ls:本地异常失败:com.google.protobuf.InvalidProtocolBufferException:协议消息标记的线路类型无效.;主机详细信息:本地主机是:“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>
--------------等/ hadoop的/ HDFS-site.xml中-----------------
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
答案 0 :(得分:0)
确定。我解决了 我运行jps,发现namenode无法启动。然后,当我试图找出错误时,我一直在看&#34; hadoop-xxx-namenode-hadoop.out&#34;这几乎没有任何有用的信息。所以我看了&#34; hadoop-xxx-namenode-hadoop.log &#34;清楚地显示错误&#34; org.apache.hadoop.hdfs.server.common.InconsistentFSStateException:目录/ tmp / hadoop-xxx / dfs / name处于不一致状态:存储目录不存在或者是无法访问。&#34;
我在默认情况下找到的更多研究Hadoop会将namenode和datanode文件放在系统临时目录中。当我重新启动时,目录被删除。所以我要做的就是改变&#34; hdfs-site.xml&#34;并添加&#34; dfs.namenode.name.dir &#34;和&#34; dfs.namenode.data.dir &#34;属性。然后,当我尝试启动hdfs时,我得到了#34;地址已经在使用&#34;。我使用的端口是9000,重启后它与#34; tcp 0 0 *:9000&#34;所以我改变了#34; fs.defaultFS&#34;在core-site.xml中使用9001代替。现在一切都可以了。
希望这可以提供帮助。