hadoop运维之三datanode被迫的升级

11 篇文章 0 订阅
10 篇文章 8 订阅

       由于最近集群xcievers错误频频发生,已经到了影响集群正常运营的地步,于是决定修改集群所有的datanode节点的配置,并重启datanode,欲添加的配置项如下:

   <property>  
           <name>dfs.datanode.max.xcievers</name>  
           <value>256</value>  
   </property> 
       修改完配置文件后,在重启datanode时发生了麻烦,datanode启动日志报出了版本不一致错误,详细日志如下:

2012-07-10 16:39:14,991 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = 
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 0.20.203.0
STARTUP_MSG:   build = http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203 -r 1099333; compiled by 'oom' on Wed May  4 07:57:50 PDT 2011
************************************************************/
2012-07-10 16:39:15,244 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2012-07-10 16:39:15,268 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2012-07-10 16:39:15,270 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2012-07-10 16:39:15,270 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2012-07-10 16:39:15,412 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2012-07-10 16:39:15,557 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Incompatible build versions: namenode BV = ; datanode BV = 1099333
2012-07-10 16:39:15,662 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible build versions: namenode BV = ; datanode BV = 1099333
        at org.apache.hadoop.hdfs.server.datanode.DataNode.handshake(DataNode.java:528)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:331)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:268)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1480)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1419)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1437)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1563)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1573)

2012-07-10 16:39:15,663 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: 
         datanode在获取namenode版本时出错,无法获取到namenode的版本。
         分别尝试了一下解决办法:

        1)重新安装hadoop,失败

        2)对比hadoop datanode文件存储目录中的storage文件,对比其中的namespace id和storage id,没有发现异常,失败

        3)修改hdfs-site.xml配置,将数据存储目录修改为新建文件夹,启动datanode,失败

        4)查看namenode的启动日志,发现namenode最后一次启动时,版本升级为:0.20.203.1-snapshot,⊙﹏⊙b汗

              看来是前段时间做hadoop集群维护时重启了namenode,且有人自行编译了hadoop源码,生成了hadoop 目录下build文件夹下面生成了新的hadoop版本,hadoop启动时会默认优先选择build目录下的版本,可能由于203.1版本相对203.0版本改动较小,所以在namenode启动后一直正常运行,整个hadoop集群也没有发生异常,一直到重启datanode时,datanode 的hadoop版本是203.0和namenode版本不一致,启动失败。

       找到了问题的根源,解决办法也就相应出来了:

      1)降级namenode,缺点:需要停止服务,不确定性因素太多(降级可能会导致所有数据丢失),测试周期长且复杂;优点:只要操作一个节点

      2)升级所有的datanode,缺点:需要操作集群所有机器(也可以只升级单台机器);优点:测试简单,风险小

      很明显,第二种方案是优选方案,测试过程如下:

       1)找一台采集服务器,上面已经部署了hadoop客户端,启动datanode,成功,日志信息显示版本为:203.1

       2)删除build目录,再次启动datanode,失败

       3)恢复build目录,再次启动datanode,成功

       4)将build目录拷贝到出错的datanode上,修改hdfs-site.xml配置,将data目录修改为新建目录,启动datanode,成功

       5)将data目录修改为最原始的配置,启动datanode,成功

       第二种方案测试成功,在namenode上运行fsck命令,正常输出。

      于是升级整个集群,到目前为止,集群运行正常。





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值