欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

hadoop 2.3.0 HA 配置出现的一个超低级问题

程序员文章站 2022-06-04 18:30:01
...

环境: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值,此处是因为以往的版本没有删除,也没有更改环境变量,导致了上述问题。