时间:2021-07-01 10:21:17 帮助过:27人阅读
环境: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值,此处是因为以往的版本没有删除,也没有更改环境变量,导致了上述问题。