Chinaunix首页 | 论坛 | 博客
  • 博客访问: 792521
  • 博文数量: 247
  • 博客积分: 166
  • 博客等级: 入伍新兵
  • 技术积分: 2199
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-15 16:10
文章分类

全部博文(247)

文章存档

2017年(1)

2015年(63)

2014年(80)

2013年(94)

2012年(9)

分类: HADOOP

2014-10-16 22:23:37

       hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。它默认的位置是在/tmp/{$user}下面,但是在/tmp路径下的存储是不安全的,因为linux一次重启,文件就可能被删除。   

        先说说,场景,在开发环境中,由于意外断电.重新启动HADOOP MASTER 结点,启动HADOOP START-ALL.SH

点击(此处)折叠或打开

  1. grid$ start-all.sh

        查看http:\\hdnode1m:50070\ 无法打开网页, HADOOP 启动失败,回过头去看日志文件。
        打开 ${hadoop_home}\logs\hadoop-grid-namenode-hdnode1m.log

出现如下错误:

点击(此处)折叠或打开

  1. 2012-10-12 10:06:54,804 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /tmp/hadoop-grid/dfs/name does not exist.
  2. 2012-10-12 10:06:54,806 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
  3. org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-grid/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
  4.     at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:290)
  5.     at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:87)
  6.     at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:311)
  7.     at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:292)
  8.     at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:201)
  9.     at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:279)
  10.     at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:956)
  11.     at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:965)
  12. 2012-10-12 10:06:54,819 INFO org.apache.hadoop.ipc.Server: Stopping server on 9000

很清楚了 ,/tmp/hadoop-grid/dfs/name is in an inconsistent state: storage directory does not exist,

1.具体愿因是 LINUX 系统,在服务重启后,/tmp 下的目录被清空,Hadoop无法找到dfs/name 这个dfs文件系统的域名空间文件。

 hadoop.tmp.dir 是 hadoop文件系统依赖的基本配置,很多配置路径都依赖它,它的默认位置在/tmp/{$user}下面。

2.解决办法:

 在core-site.xml中配置 hadoop.tmp.dir 路径到持久化目录。

点击(此处)折叠或打开

  1. <configuration>
  2. <property>
  3. <name>fs.default.name</name>
  4. <value>hdfs://hdnode1m:9000</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/home/grid/disk</value>
  9. </property>
  10. </configuration>

3.由于重新配置了hadoop.tmp.dir 目录,意味着,必须重新格式hdfs

#bin/hadoop namenode -format

4.后果

重新格式化了文件系统,自己想想吧,以前所有的文件都没有了。

强烈建议大家,在安装配置HADOOP的时候,一定要更改hadoop.tmp.dir .

阅读(2879) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~