`
hmilyzhangl
  • 浏览: 46467 次
  • 性别: 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上搜索,资料还是相当少的。

分享到:
评论

相关推荐

    CDH集群升级实施文档(5.8.0升至5.10.0)

    在进行集群升级之前,需要对现有的集群状态进行充分的了解。此次升级的目标是将集群从Cloudera Enterprise 5.8.0升级到5.10.0版本。由于集群处于试运行状态且用户无法提供足够的存储空间进行全量数据备份,因此升级...

    Hadoop权威指南 第二版(中文版)

     本书是Hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行Hadoop集群。 目录 第1章 初识Hadoop  数据!数据!  数据存储与分析  与其他系统相比  关系型数据库管理系统...

    Hadoop权威指南(中文版)2015上传.rar

    利用基准测试程序测试Hadoop集群 Hadoop基准测试程序 用户的作业 云上的Hadoop Amazon EC2上的Hadoop 第10章 管理Hadoop HDFS 永久性数据结构 安全模式 日志审计 工具 监控 日志 度量 Java管理扩展(JMX) 维护 日常...

    hadoop 默认配置大全

    这些配置文件是Hadoop运行的基础,理解并适当调整它们可以优化Hadoop集群的性能。 首先,我们来看`core-default.xml`。这个文件包含了Hadoop核心组件的基本设置,如I/O选项、网络参数和通用配置。例如,`fs.default...

    cdh6.3.2升级hive至3.x后登陆HiveServer2连接失败.doc

    ### CDH 6.3.2 升级 Hive 至 3.x 后登录 HiveServer2 连接失败问题分析及解决方法 #### 一、问题背景与现象 在将 Cloudera Data Hub (CDH) 6.3.2 版本中的 Hive 升级到 3.x 版本后,用户在尝试通过 JDBC 连接到 ...

    CLOUDERA-Manager-中文手册---实战总结

    1. **自动化安装与部署**:通过自动化流程简化Hadoop集群的安装和部署工作,显著降低了部署时间和复杂度。 2. **集中化管理**:提供了一个统一的管理界面,使得运维人员可以方便地配置、监控和管理整个集群的状态。 ...

    ranger-2.1.0-usersync.tar.gz

    4. **审计和日志记录**:Ranger Usersync 记录同步活动,包括成功和失败的操作,以便于监控和故障排查。这些日志对于跟踪用户权限的变化和确保合规性至关重要。 5. **安全性**:除了同步权限信息,Ranger Usersync ...

    ConHA:基于SOA的API网关,用于整合异构HA集群

    现有的系统如Mesos是一种典型的集群整合系统,它解决了在共享基础设施上管理和互操作不同种类的计算集群(如Hadoop、MPI和Spark)之间的问题。Mesos的动机在于提高资源的共享效率,特别是那些需要高吞吐量的并行计算...

    tez.tar.gz

    2. **优化器**:Tez 内置了优化器,可以分析DAG并自动进行任务并行化、任务调度和资源分配,以最大化集群资源利用率。 3. **内存管理**:Tez 支持更精细的内存管理,通过内存预算和溢写策略,减少磁盘I/O,提升处理...

    impala_jdbc.zip

    在大数据处理领域,Impala是一款高效的分析型数据库管理系统,它由Cloudera公司开发,用于处理Hadoop集群上的大规模数据。Impala与Hive、Pig等工具协同工作,提供了SQL接口,使得用户能够通过标准SQL对存储在HDFS或...

    解决文件与元数据类型不兼容的修改源码后并打包的hivejar包及部署脚本

    这个问题可能会导致数据加载失败、查询错误或数据处理异常。 解决这个问题的第一步是对问题进行诊断。你需要确认数据文件中的字段类型是否确实与Hive表定义的字段类型不同。例如,如果Hive表中某个字段被定义为`INT...

    0433-Kerberos环境下Impala Daemon在CDH5.15版本中KRPC端口27000异常分析

    在Kerberos安全环境下,Impala Daemon在CDH5.15版本中遇到的一个常见问题是KRPC(Kerberos Remote Procedure Call)端口27000的异常...在日常运维中,对Kerberos配置的了解和维护是确保Hadoop集群安全稳定运行的关键。

    数据采集处理项目技术方案.pdf

    总体设计会涵盖硬件配置、软件选型(如Hadoop、Spark等)以及集群搭建策略。数据模型设计阶段将讨论如何根据业务需求构建适合的数据模型,如关系型数据库、NoSQL数据库或数据湖等。 4. 数据运营: 这一部分关注数据...

    azkaban2.5

    - **日志记录**:Azkaban记录每个作业的执行日志,方便诊断问题。 - **错误恢复**:如果作业失败,Azkaban可以按照预设策略进行重试或跳过。 6. **扩展与集成**: - **插件系统**:Azkaban支持插件机制,可以...

    HBase官方文档中文版

    - **目录表与客户端**:深入分析了HBase中用于记录表信息的元数据表(.META.表),以及客户端如何与HBase进行交互。 - **客户请求过滤器与Master**:解释了客户端请求如何被处理,以及Master在集群管理中的作用。 ...

    nosql分布式数据库期末考试题.docx

    - **Google File System (GFS)**: HBase 建立在 Hadoop 分布式文件系统 (HDFS) 之上,而 HDFS 的设计受到 GFS 的启发。 **16. MongoDB 特性** - **高可靠性**: 支持数据复制和故障恢复。 - **支持分片**: 可以水平...

Global site tag (gtag.js) - Google Analytics