背景:学习了若泽大数据,近期又在重新回顾一遍:
**问题:**使用start-dfs.sh启动后,jps查看并没有NameNode进程。
解决:
第一步:定位到日志文件
-
既然NameNode进程没看见启动,我们就要去查找原因,进入到记录NameNode、DataNode、SecondaryNameNode这三个进程的文件中,查看NameNode的近200行日志。
-
记录三进程的日志目录在启动hdfs上有体现。
-
进入到日志目录:cd /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs,使用ls -nh 命令查看文件夹下每个文件的大小。
-
注意:记录启动进程的日志文件别搞错了。
第二步:定位到日志文件中出现的问题:
-
使用tail -200f hadoop-hadoop-namenode-hadoop004.log,打印这个文件最近200行的日志。
-
小技巧,打印完后,使用回车键敲出一段空行符号,然后使用hadoop-daemon.sh命令启动NameNode,此时就能监控到启动NameNode的日志。
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-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:314)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:202)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1063)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:767)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:609)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:670)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:838)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:817)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1538)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606)
2019-09-08 22:55:04,619 INFO org.mortbay.log: Stopped HttpServer2$SelectChannelConnectorWithSafeStartup@0.0.0.0:50070
2019-09-08 22:55:04,720 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping NameNode metrics system...
2019-09-08 22:55:04,721 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system stopped.
2019-09-08 22:55:04,721 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system shutdown complete.
2019-09-08 22:55:04,721 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
定位报错信息:
- org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-hadoop/dfs/name is in an inconsistent state(不一致的状态): storage directory does not exist or is not accessible (存储目录不存在或不可访问)
开始搜索解决:
尝试百度的解决方案一:
https://blog.csdn.net/deqingguo/article/details/6907378
- 博客说是没有指定hadoop.tmp.dir参数的原因,尝试配置,重启hdfs,还是失败了,报的错和没改之前一样。
hadoop.tmp.dir参数解析:
要知道的是hadoop参数怎么找?
- https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
- 去到对应的配置文件下找参数即可。
name | value | description |
---|---|---|
hadoop.tmp.dir | /tmp/hadoop-${user.name} | a base for other temporary directories |
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/tmp/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:314)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:202)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1063)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:767)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:609)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:670)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:838)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:817)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1538)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606)
2019-09-09 01:34:55,288 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2019-09-09 01:34:55,289 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:
方案一:验证失败
解决方案二:
老老实实按着官网,重新部署了下core-site.xml、hdfs-site.xml,格式化NameNode,重新启动即可