`
hmilyzhangl
  • 浏览: 45006 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

hadoop 集群升级失败记录

 
阅读更多

一.错误概述

 

因为需要使用hadoop与hbase结合使用,所以需要为hadoop hdfs升级使用append写模式。需要对现有的hadoop 0.20.1 升级至0.20.205.0; 升级过程简单的使用 hadoop namenode -upgrade 从 -18 version => -32version(这个是dfs/name/current/VERSION).但我们发现0.20.205跟hive不兼容,所以又安装 facebook的hadoop版本(-30版本)。

 

整个升级流程简单来说就是:  dfs/name/current/VERSION  -18 => -32  =>  -30. 升级再回滚的过程。

 

 

二. namenode错误处理过程

1。启动namenode失败( 第一个错误 ): 

 

Java代码  收藏代码
  1. org.apache.hadoop.hdfs.server.common.IncorrectVersionException: Unexpected version of storage directory /data/hadoop-tmp/hadoop-hadoop/dfs/name. Reported: - 32 . Expecting = - 30 .  
  2.         at org.apache.hadoop.hdfs.server.common.Storage.getFields(Storage.java:662 )  
  3.         at org.apache.hadoop.hdfs.server.namenode.FSImage.getFields(FSImage.java:741 )  
  4.         at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:238 )  
  5.         at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:227 )  
  6.         at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:453 )  
  7.         at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:158 )  
  8.         at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:386 )  
  9.         at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:361 )  
  10.         at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:274 )  
  11.         at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:385 )  
  12.         at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1419 )  
  13.         at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1428 )  
org.apache.hadoop.hdfs.server.common.IncorrectVersionException: Unexpected version of storage directory /data/hadoop-tmp/hadoop-hadoop/dfs/name. Reported: -32. Expecting = -30.
        at org.apache.hadoop.hdfs.server.common.Storage.getFields(Storage.java:662)
        at org.apache.hadoop.hdfs.server.namenode.FSImage.getFields(FSImage.java:741)
        at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:238)
        at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:227)
        at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:453)
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:158)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:386)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:361)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:274)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:385)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1419)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1428)

 

 

解决办法:

在namenode节点运行: 

 

Java代码  收藏代码
  1. hadoop namenode -rollback  
hadoop namenode -rollback

 将-32版本回滚至 -18版本

 

 

2。继续启动namenode( 第二个错误 ):

 

Java代码  收藏代码
  1. org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /data/hadoop-tmp/hadoop-hadoop/dfs/name is in an inconsistent state: file VERSION has image MD5 digest when version is - 18   
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /data/hadoop-tmp/hadoop-hadoop/dfs/name is in an inconsistent state: file VERSION has image MD5 digest when version is -18

 

解决办法:

将dfs/name/current/VERSION中的 imageMD5Digest 注释掉,不进行MD5完整性检查。

 

3。再将升级-18 => -30版本

 

Java代码  收藏代码
  1. hadoop namenode -upgrade  
hadoop namenode -upgrade

 

 这样namenode已经启动成功。

 

 

三.datanode错误处理过程

1。启动datanode

 

 

Java代码  收藏代码
  1. 2011 - 12 - 12   18 : 06 : 18 , 544  INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Failed to start datanode org.apache.hadoop.hdfs.server.common.IncorrectVersionException: Unexpected version of storage directory /data/hadoop-tmp/hadoop-hadoop/dfs/data. Reported: - 32 . Expecting = - 30 .  
2011-12-12 18:06:18,544 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Failed to start datanode org.apache.hadoop.hdfs.server.common.IncorrectVersionException: Unexpected version of storage directory /data/hadoop-tmp/hadoop-hadoop/dfs/data. Reported: -32. Expecting = -30.

 

 解决办法:

 

Java代码  收藏代码
  1. hadoop datanode -rollback  
hadoop datanode -rollback

 

 回滚至 -18版本,再升级至-30版本.

 

Java代码  收藏代码
  1. hadoop datanode -rollback  
hadoop datanode -rollback
 

 

 

2. 继续启动datanode

 

Java代码  收藏代码
  1. 11 / 12 / 12   19 : 34 : 26  INFO datanode.DataNode: Failed to start datanode org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /data/hadoop-tmp/hadoop-hadoop/dfs/data is in an inconsistent state: previous and previous.tmp cannot exist together.  
  2.         at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:427 )  
  3.         at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:113 )  
  4.         at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:332 )  
  5.         at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:249 )  
  6.         at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1528 )  
  7.         at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1477 )  
  8.         at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1485 )  
  9.         at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1626 )  
11/12/12 19:34:26 INFO datanode.DataNode: Failed to start datanode org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /data/hadoop-tmp/hadoop-hadoop/dfs/data is in an inconsistent state: previous and previous.tmp cannot exist together.
        at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:427)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:113)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:332)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:249)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1528)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1477)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1485)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1626)

 解决办法:

直接查看源码,发现Storage$StorageDirectory.analyzeStorage()完全是进行相关目录的状态检查。而且跟生产环境的hadoop集群对比,发生没有 previous , previous.tmp 两个目录(是升级的备份文件),所以将这两个目录重命名。然后继续启动datanode成功。


最后通过  hadoop namenode  -finalize  来结束此次升级,以便删除升级的备份文件

四.本次处理总结:

1.  对你的hadoop namenode数据及时做好备份,不管是否是测试集群

2.  查看hadoop源码吧,有时处理问题还是得看源码,因为在google上搜索,资料还是相当少的。

分享到:
评论

相关推荐

    Hadoop集群pdf文档

    Hadoop 集群配置详解 Hadoop_Hadoop集群(第1期)_CentOS安装配置 Hadoop_Hadoop集群(第2期)_机器信息分布表 Hadoop_Hadoop集群(第4期)_SecureCRT使用 Hadoop_Hadoop集群(第5期)_Hadoop安装配置 Hadoop_Hadoop...

    脚本搭建hadoop集群

    自动化安装hadoop集群 脚本搭建hadoop集群 可以自定义主机名和IP地址 可以自定义安装jdk和hadoop(格式为*tar.gz) 注意事项 1、安装完jdk和hadoop请手动source /etc/profile 刷新环境变量 2测试脚本环境为centOS6,...

    Hadoop集群与安全

    手把手教你配置高效的Hadoop集群,充分利用Hadoop平台的优势。2. 为Hadoop生态系统实现强健的端到端的安全保障。

    Hadoop集群程序设计与开发

    《Hadoop集群程序设计与开发(数据科学与大数据技术专业系列规划教材)》系统地介绍了基于Hadoop的大数据处理和系统开发相关技术,包括初识Hadoop、Hadoop基础知识、Hadoop开发环境配置与搭建、Hadoop分布式文件系统、...

    部署全分布模式Hadoop集群 实验报告

    部署全分布模式Hadoop集群 实验报告一、实验目的 1. 熟练掌握 Linux 基本命令。 2. 掌握静态 IP 地址的配置、主机名和域名映射的修改。 3. 掌握 Linux 环境下 Java 的安装、环境变量的配置、Java 基本命令的使用。 ...

    Hadoop集群构建实训报告.doc

    Hadoop集群构建实训报告

    Hadoop集群中影响应用性能的因素分析

    针对Hadoop集群中应用执行的低效率、高成本问题,首先,通过对Hadoop分布式存储技术和并行编程模型的分析,发现数据集采用单文件还是多文件方式,以及数据块划分的大小是影响其性能的主要因素.其次,设计实验探讨了不同...

    hadoop集群信息

    搭建高可用的Hadoop集群,基于NFS共享磁盘的namenode配置,使用zookeeper进行主节点推举

    Hadoop集群(1-11期)

    Hadoop集群·CentOS安装配置(第1期) Hadoop集群·机器信息分布表(第2期) Hadoop集群·VSFTP安装配置(第3期) Hadoop集群·SecureCRT使用(第4期) Hadoop集群·Hadoop安装配置(第5期) Hadoop集群·JDK和SSH无...

    细细品味Hadoop_Hadoop集群(第9期)_MapReduce初级案例

    细细品味Hadoop_Hadoop集群(第9期)_MapReduce初级案例

    Hadoop集群程序设计与开发教材最终代码.zip

    Hadoop集群程序设计与开发教材最终代码.zip

    hadoop 集群部署操作

    Hadoop集群的规划,系统环境准备,配置NTP时间服务器,配置无密钥登录,安装配置JDK,,安装配置zooKeeper集群,安装配置Hadoop集群

    云计算Hadoop:快速部署Hadoop集群

    资源名称:云计算Hadoop:快速部署Hadoop集群内容简介: 近来云计算越来越热门了,云计算已经被看作IT业的新趋势。云计算可以粗略地定义为使用自己环境之外的某一服务提供的可伸缩计算资源,并按使用量付费。可以...

    hadoop集群搭建步骤

    hadoop集群搭建步骤 集群规划 安装步骤:安装配置zooekeeper集群、安装配置hadoop集群、验证HDFS HA

    hadoop集群安装步骤

    hadoop集群安装详细步骤,支持snappy hadoop 集群安装

    Ambari部署Hadoop集群.doc

    对于企业,如果要部署由成千上万的节点组成的Hadoop集群,手工方式部署显然不符合实际。 而由Hortonworks贡献给Apache开源社区的Ambari则提供了搭建整个Hadoop生态的一站式服务。这款软件具有集群自动化安装、中心化...

    计算Hadoop:快速部署Hadoop集群.docx

    计算Hadoop:快速部署Hadoop集群 详细的Hadoop集群部署文档,对您绝对有用~

    在docker上部署hadoop集群

    教程:在linux虚拟机下(centos),通过docker容器,部署hadoop集群。一个master节点和三个slave节点。

    Java访问Hadoop集群源码

    Java访问Hadoop集群源码

    [Hadoop] Hadoop 集群操作管理技巧 (英文版)

    [Packt Publishing] Hadoop 集群操作管理技巧 (英文版) [Packt Publishing] Hadoop Operations and Cluster Management Cookbook (E-Book) ☆ 图书概要:☆ Over 60 recipes showing you how to design, ...

Global site tag (gtag.js) - Google Analytics