<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)航:
     
    主站蜘蛛池模板: 免费人成在线观看网站品爱网日本| 国产亚洲精品国产| 亚洲av一本岛在线播放| 亚洲黄色片免费看| 亚洲国产精品综合久久网各| 污视频在线免费观看| 久久精品a亚洲国产v高清不卡| 99久久人妻精品免费一区| 亚洲色图视频在线观看| 猫咪免费人成网站在线观看入口| 免费爱爱的视频太爽了| 老司机午夜性生免费福利 | 国产一区二区三区在线免费观看| 亚洲av无码专区首页| 1000部羞羞禁止免费观看视频| 久久久无码精品亚洲日韩蜜臀浪潮| 69免费视频大片| 亚洲日本久久久午夜精品| 国产色婷婷精品免费视频| 免费大片av手机看片高清| 亚洲真人无码永久在线| 日本在线看片免费人成视频1000| 亚洲国产成人久久99精品| 日日AV拍夜夜添久久免费| 毛片基地看看成人免费| 亚洲永久永久永久永久永久精品| 免费看黄视频网站| 猫咪免费人成在线网站| 亚洲午夜在线电影| 日韩成人免费在线| 青青操在线免费观看| 综合亚洲伊人午夜网| 中文字幕免费高清视频| 亚洲国产高清国产拍精品| 国产亚洲精品拍拍拍拍拍| 亚洲视频免费观看| 深夜免费在线视频| 久久综合亚洲色HEZYO社区| 国产日产成人免费视频在线观看| 你懂的在线免费观看| 亚洲丁香婷婷综合久久|