我刚刚从《hadoop:权威指南》一书开始学习hadoop。
我遵循了在伪分发模式下安装hadoop的教程。我启用了ssh的无密码登录。在第一次使用hdfs文件系统之前格式化它。它第一次成功地启动了。之后,我复制了一个文本文件使用 copyFromLocal
到hdfs,一切都很好。但是,如果我重新启动系统,再次启动守护进程,并查看webui,只有yarn启动成功。
当我发出stop-dfs.sh命令时
Stopping namenodes on [localhost]
localhost: no namenode to stop
localhost: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode
如果我再次格式化hdfs文件系统,然后尝试启动守护进程,那么它们都会成功启动。
这里是我的配置文件。完全如hadoop权威指南中所述。
hdfs-site.xml文件
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
core-site.xml文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
mapred-site.xml文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml文件
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
这是namenode日志文件中的错误
WARN org.apache.hadoop.hdfs.server.common.Storage: Storage directory /tmp/hadoop/dfs/name does not exist
WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:327)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:215)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:975)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:681)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:585)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:645)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:812)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:796)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1493)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1559)
这是Map记录
Caused by: java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:744)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495)
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:614)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:712)
at org.apache.hadoop.ipc.Client$Connection.access$2900(Client.java:375)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1528)
at org.apache.hadoop.ipc.Client.call(Client.java:1451)
... 33 more
我访问了apachehadoop:连接被拒绝
检查一下,在/etc/hosts中没有一个主机名条目Map到127.0.0.1或127.0.1.1(ubuntu为此而臭名昭著)。
我发现在我的/etc/hosts中有一个条目,但是如果我删除它,我的sudo就会中断,从而导致错误 sudo: unable to resolve host
. 我应该附加什么 /etc/hosts
如果没有,请删除Map到127.0.1.1的主机名
我不明白这个问题的根本原因是什么。
2条答案
按热度按时间xlpyo6sf1#
它在namenode日志文件中说namenode目录的默认存储是
/tmp/hadoop
. 这个/tmp
某些系统在重新启动时在linux中格式化目录。所以这一定是问题所在。您需要通过更改
hdfs-site.xml
配置文件。将此添加到您的
hdfs-site.xml
```dfs.namenode.name.dir
file:///home/"your-user-name"/hadoop
dfs.datanode.data.dir
file:///home/"your-user-name"/datanode
li9yvcax2#
如果配置文件没有问题,请尝试以下操作:
1.首先从临时文件夹中删除所有内容:
2.格式化名称节点:
3.重新启动所有流程: