热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

hadoop2.3.0HA配置出现的一个超低级问题

环境:rehl6.4,apachehadoop2.3.0问题描述:执行命令hadoopnamenode-format之后,VERSION版本为-47,执行hadoop-daemon.shstartnamenode后,namenode的log报错:Filesystemimagecontainsanoldlayoutversion-47.Anupgradetoversion

环境:rehl 6.4 ,apache hadoop 2.3.0 问题描述: 执行命令hadoop namenode -format 之后,VERSION 版本为-47,执行hadoop-daemon.sh start namenode后,namenode的log报错: File system image contains an old layout version -47. An upgrade to version

环境:rehl 6.4 ,apache hadoop 2.3.0

问题描述:

执行命令 hadoop namenode -format 之后,VERSION 版本为-47,执行hadoop-daemon.sh start namenode后,namenode的log报错:

File system image contains an old layout version -47.
An upgrade to version -51 is required.

表明版本不匹配,日志中建议启动时加上 -upgrade选项,但是由于配置了HA,无法upgrade,所以正常情况下,首先要先在配置文件中把关于HA的配置项屏蔽,以upgrade方式启动单节点的namenode,之后再配置HA,进行正常的HA启动。

但是我在配置个过程中无论如何升级,启动,都无法把nn2,也就是准备做standby的namenode拉起来,无奈之下执行了个命令

which hadoop

结果大吃一惊,hadoop命令显示在/usr/bin下,而这个目录正是我之前用ambari安装的hortonworks的hadoop2.2.0版本的 命令所在的目录,但是我在本次测试开启HA的操作时,已经使用了apache的hadoop2.3.0版本,安装在/app/hadoop下,所以hadoop这个命令正确的位置应该是/app/hadoop/bin下,

而执行which hadoop-daemon.sh时,结果显示为/app/hadoop/sbin

这就解释了为何执行 hadoop namenode -format 后,显示VERSION版本为-47,而执行hadoop-daemon.sh start namenode启动时要求版本为-51,

因为格式化的时候使用了2.2.0版本的 hadoop命令,而启动时使用了2.3.0版本的命令,这就造成了本次非常低级又非常意外的错误,通过这次错误也加深了对VERSION版本的理解,即hadoop的每次更新升级,都会带来VERSION值的减小,正常情况下,是通过-upgrade来升级,改变VERSION值,此处是因为以往的版本没有删除,也没有更改环境变量,导致了上述问题。

推荐阅读
author-avatar
mobiledu2502855247
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有