<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    badqiu

    XPer
    隨筆 - 46, 文章 - 3, 評(píng)論 - 195, 引用 - 0
    數(shù)據(jù)加載中……

    hadoop 集群升級(jí)失敗記錄

    一.錯(cuò)誤概述

     

    因?yàn)樾枰褂胔adoop與hbase結(jié)合使用,所以需要為hadoop hdfs升級(jí)使用append寫(xiě)模式。需要對(duì)現(xiàn)有的hadoop 0.20.1 升級(jí)至0.20.205.0; 升級(jí)過(guò)程簡(jiǎn)單的使用 hadoop namenode -upgrade 從 -18 version => -32version(這個(gè)是dfs/name/current/VERSION).但我們發(fā)現(xiàn)0.20.205跟hive不兼容,所以又安裝facebook的hadoop版本(-30版本)。

     

    整個(gè)升級(jí)流程簡(jiǎn)單來(lái)說(shuō)就是: dfs/name/current/VERSION -18 => -32 => -30. 升級(jí)再回滾的過(guò)程。

     

     

    二. namenode錯(cuò)誤處理過(guò)程

    1。啟動(dòng)namenode失敗(第一個(gè)錯(cuò)誤):

     

    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節(jié)點(diǎn)運(yùn)行:

     hadoop namenode -rollback

    將-32版本回滾至 -18版本

     

     

    2。繼續(xù)啟動(dòng)namenode(第二個(gè)錯(cuò)誤):

     

    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 注釋掉,不進(jìn)行MD5完整性檢查。

     

    3。再將升級(jí)-18 => -30版本

     

    hadoop namenode -upgrade

     

    這樣namenode已經(jīng)啟動(dòng)成功。

    三.datanode錯(cuò)誤處理過(guò)程

    1。啟動(dòng)datanode

     

    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.
     

    解決辦法:

     

    hadoop datanode -rollback

     

    回滾至 -18版本,再升級(jí)至-30版本.

    hadoop datanode -upgrade

    2. 繼續(xù)啟動(dòng)datanode

     

    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)

     

    解決辦法:

    直接查看源碼,發(fā)現(xiàn)Storage$StorageDirectory.analyzeStorage()完全是進(jìn)行相關(guān)目錄的狀態(tài)檢查。而且跟生產(chǎn)環(huán)境的hadoop集群對(duì)比,發(fā)現(xiàn)沒(méi)有previous,previous.tmp 兩個(gè)目錄(是升級(jí)的備份文件),所以將這兩個(gè)目錄重命名。然后繼續(xù)啟動(dòng)datanode成功。

    最后通過(guò)  hadoop namenode -finalize 來(lái)結(jié)束此次升級(jí),以便刪除升級(jí)的備份文件

     

    四.本次處理總結(jié):

    1. 對(duì)你的hadoop namenode數(shù)據(jù)及時(shí)做好備份,不管是否是測(cè)試集群

    2. 查看hadoop源碼吧,有時(shí)處理問(wèn)題還是得看源碼,因?yàn)樵趃oogle上搜索,資料還是相當(dāng)少的。

     

     

     

     

    posted on 2011-12-12 20:30 badqiu 閱讀(3086) 評(píng)論(2)  編輯  收藏

    評(píng)論

    # re: hadoop 集群升級(jí)失敗記錄  回復(fù)  更多評(píng)論   

    學(xué)習(xí)了,方法好
    2011-12-12 22:15 | tbw淘寶

    # re: hadoop 集群升級(jí)失敗記錄  回復(fù)  更多評(píng)論   

    學(xué)習(xí)了
    2011-12-13 11:01 | tb

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久久久久久久久久免费精品| 日本不卡高清中文字幕免费| 无人视频免费观看免费视频| 亚洲精品国产第1页| 亚洲第一AAAAA片| 一级毛片直播亚洲| 大学生一级特黄的免费大片视频| 99久久免费中文字幕精品| 国产福利免费视频 | 色噜噜噜噜亚洲第一| 2020亚洲男人天堂精品| 亚洲视频在线观看免费| 亚洲人成亚洲人成在线观看| 亚洲AV中文无码乱人伦| 青青青国产免费一夜七次郎| av无码国产在线看免费网站| 最近中文字幕免费2019| 午夜不卡久久精品无码免费| 成人免费av一区二区三区| 成人无码精品1区2区3区免费看| 四虎精品成人免费视频| 国产精品亚洲精品日韩动图| 亚洲AV无码专区国产乱码不卡| 国产v亚洲v天堂a无| 亚洲人成图片网站| 亚洲日韩精品A∨片无码加勒比| 久久精品国产亚洲av麻豆蜜芽| 亚洲午夜国产精品无卡| 亚洲av极品无码专区在线观看| 亚洲手机中文字幕| 亚洲中文字幕久久精品无码2021| 久久久久精品国产亚洲AV无码| 亚洲va乱码一区二区三区| 中文字幕亚洲码在线| 亚洲日韩AV一区二区三区中文| 97se亚洲国产综合自在线| 亚洲精品无码专区在线播放| 亚洲AV无码男人的天堂| 免费在线人人电影网| 国产精品成人啪精品视频免费| 97在线免费视频|