Hadoop 在关机重启后,namenode启动报错

本文解决了一个常见的Hadoop Namenode启动错误问题,通过配置core-site.xml中的hadoop.tmp.dir属性,将临时目录从易丢失的/tmp路径更改为持久存储位置,确保了Hadoop集群稳定运行。
Hadoop 在关机重启后,namenode启动报错:
2011-10-21 05:22:20,504 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /tmp/hadoop-fzuir/dfs/name does not exist.  
2011-10-21 05:22:20,506 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.  
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-fzuir/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.  
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:291)  
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)  
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:379)  
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:353)  
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:254)  
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:434)  
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1153)  
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162)  
这个以开始的解决方法是将namenode重新再format下,但是后面想想不对,这样每次都format,那不是玩完了~~
然后就搜了下,发现是因为临时文件/tmp会被删除掉,解决方法就是修改core-site.xml,添加hadoop.tmp.dir属性:
<property>  
    <name>hadoop.tmp.dir</name>  
    <value>/home/fzuir/Hadoop0.20.203.0/tmp/hadoop-${user.name}</value>  
</property>  

问题解决了,重启电脑后,再去启动hadoop就不会出现/dfs/name is in an inconsistent state的错误了~~

转自:http://www.linuxidc.com/Linux/2012-02/55079.htm

`hadoop-daemon.sh start namenode`报错可能由多种原因导致,下面是一些常见的报错原因及解决办法: ### 环境变量问题 当出现“错误: 找不到或无法加载主类 ”这样的报错,可能是环境变量配置有误。可在相关节点的配置文件中添加如下内容: ```bash export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" ``` 这可以解决因 Java 库路径配置不正确,导致无法找到主类的问题[^2]。 ### 配置文件问题 Hadoop 的配置文件(如`core-site.xml`、`hdfs-site.xml`等)可能存在配置错误。需要检查这些文件中的配置项,如`fs.defaultFS`、`dfs.namenode.name.dir`等是否正确。确保这些配置项指向正确的路径和地址。 ### 端口占用问题 NameNode 启动时会使用特定的端口(如 9000、50070 等),如果这些端口已被其他程序占用,NameNode 将无法正常启动。可以使用以下命令检查端口占用情况: ```bash netstat -tlnp | grep <port> ``` 如果发现端口被占用,可以通过修改配置文件中的端口号,或者停止占用该端口的程序来解决问题。 ### 数据目录权限问题 NameNode 的数据目录(由`dfs.namenode.name.dir`指定)需要有足够的读写权限。可以使用以下命令检查和修改目录权限: ```bash chown -R <hadoop_user>:<hadoop_group> <data_directory> ``` 其中`<hadoop_user>`和`<hadoop_group>`是运行 Hadoop 的用户和用户组,`<data_directory>`是 NameNode 的数据目录。 ### 集群 ID 不一致问题 如果是在集群环境中,不同节点的集群 ID 必须一致。可以检查`/dfs/name/current/VERSION`文件中的`clusterID`字段,确保所有节点的`clusterID`相同。 ### 日志文件查看 查看 Hadoop 的日志文件(通常位于`$HADOOP_HOME/logs`目录下),可以获取更详细的错误信息,根据日志中的错误提示来解决问题。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值