1. 程式人生 > >【故障】Hadoop Cluster啟動後資料節點(DataNode)程序狀態丟失

【故障】Hadoop Cluster啟動後資料節點(DataNode)程序狀態丟失

Hadoop Cluster啟動後資料節點(DataNode)程序狀態丟失

  • 在擁有三個節點的Hadoop叢集環境中,其各節點的配置為:CPU Intel(R) Core(TM) i3-3120M [email protected] 2.50GHz,記憶體RAM 6GB,Operation System Redhat Linux 5 x86-64bit.
  • 首先通過命令hadoop dfs namenode -format格式化名稱節點,格式化成功以後使用start-dfs.sh和start-yarn.sh指令碼啟動叢集。此時,整個Hadoop叢集使用 JPS程序檢視命令發現均正常。在沒有關閉Hadoop叢集的狀態下,我們使用了hadoop dfs namenode -format 命令重新格式化了名稱節點。此時再次啟動hadoop叢集,發現數據節點Datanode程序在成功啟動後不久就自動退出。我們重新進行了名稱節點的格式化和叢集的重啟,但是資料節點上的程序依舊在重啟後發生閃退的現象。經過查閱相關文獻,部落格
    http://my.oschina.net/liangtee/blog/161581
    幫助解決了這一問題,該博文內容如下。
Error 資訊 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /var/lib/hadoop-0.20/cache/hdfs/dfs/data: namenode namespaceID = 240012870; datanode namespaceID = 1462711424 .
  • 檢視日誌發現錯誤類似上面所示:顯示由於叢集中不相容的名稱空間版本號而導致資料節點Datanode發生系統I/O的錯誤。肯定是由於在重新初始化名稱空間的過程中發生了名稱空間版本不一致的情況。
why 問題:Namenode名稱節點的namespaceID與datanode資料節點的namespaceID不一致。
  • 問題產生原因:每次 namenode format會重新建立一個namenodeId,而tmp/dfs/data下包含了上次format下的id , namenode  format 清空了namenode下的資料,但是沒有清空datanode下的資料,所以造成namenode節點上的namespaceID與datanode節 點上的namespaceID不一致。從而直接導致了資料節點啟動失敗。
  • 解決方案1(會造成資料丟失,很難恢復找回)
  • (1)停掉叢集服務,呼叫stop-dfs.sh和stop-yarn.sh指令碼。
  • (2)在出問題的datanode節點上刪除data目錄,data目錄即是在 hdfs-site.xml檔案中配置的dfs.data.dir目錄,本機器上那個是/var/lib/hadoop-0.20/cache/hdfs /dfs/data/ (注:我們當時在所有的datanode和namenode節點上均執行了該步驟。以防刪掉後不成功,可以先把data目錄儲存一個副本).
  • (3)格式化namenode,hadoop dfs namenode -format。
  • (4)重新啟動叢集,呼叫start-dfs.sh和start-yarn.sh指令碼。
  • 這種方法帶來的一個副作用即是,hdfs上的所有資料丟失。如果hdfs上存放有重要資料的時候,不建議採用該方法。其實,我們的目的就是要同步名稱節點和資料節點上的NamespaceID,如果有辦法可以直接同步該資料項 NamespaceID,那麼我們就能夠以最小程度的資料丟失實現Hadoop叢集的修復。該帖也指出了另一種解決方案如下。
  • Workaround 1: Start from scratch
Solution-1 I can testify that the following steps solve this error, but the side effects won't make you happy (me neither). The crude workaround I have found is to:

1.stop the cluster

2.delete the data directory on the problematic datanode: the directory is specified by dfs.data.dir in conf/hdfs-site.xml; if you followed this tutorial, the relevant directory is /usr/local/hadoop-datastore/hadoop-hadoop/dfs/data

3.reformat the namenode (NOTE: all HDFS data is lost during this process!)

4.restart the cluster

When deleting all the HDFS data and starting from scratch does not sound like a good idea (it might be ok during the initial setup/testing), you might give the second approach a try.
  • Workaround 2: Updating namespaceID of problematic datanodes
Solution-2 Big thanks to Jared Stehler for the following suggestion. I have not tested it myself yet, but feel free to try it out and send me your feedback. This workaround is "minimally invasive" as you only have to edit one file on the problematic datanodes:

1.stop the datanode

2.edit the value of namespaceID in <dfs.data.dir>/current/VERSION to match the value of the current namenode

3.restart the datanode

If you followed the instructions in my tutorials, the full path of the relevant file is /usr/local/hadoop-datastore/hadoop-hadoop/dfs/data/current/VERSION (background: dfs.data.dir is by default set to ${hadoop.tmp.dir}/dfs/data, and we set hadoop.tmp.dir to /usr/local/hadoop-datastore/hadoop-hadoop).
  •  If you wonder how the contents of VERSION look like, here's one of mine:
#contents of <dfs.data.dir>/current/VERSION
namespaceID=393514426
storageID=DS-1706792599-10.10.10.1-50010-1204306713481
cTime=1215607609074
storageType=DATA_NODE
layoutVersion=-13
  • 原 因:每次namenode format會重新建立一個namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的資料,但是沒有晴空datanode下的資料,導致啟動時失敗,所要做的就是同步名稱節點和資料節點下的所有 namespaceID。

相關推薦

故障Hadoop Cluster啟動資料節點DataNode程序狀態丟失

Hadoop Cluster啟動後資料節點(DataNode)程序狀態丟失 在擁有三個節點的Hadoop叢集環境中,其各節點的配置為:CPU Intel(R) Core(TM) i3-3120M [email protected] 2.50GHz,記憶體RAM 6GB,Operation Sys

SylixOSQT程式啟動載入流程簡介

QT應用程式啟動載入流程簡介 QWS(Qt Windows System)是QT自行開發的視窗系統,體系結構類似X Windows的C/S結構。QWS Server在物理裝置上顯示,QWS Client實現介面,兩者通過socket進行彼此的通訊。在很多嵌入式系統裡,QT

Spring Boot幹貨系列:啟動原理解析

無法 time exp 記得 started 打印 ping 正文 exclude 前言 前面幾章我們見識了SpringBoot為我們做的自動配置,確實方便快捷,但是對於新手來說,如果不大懂SpringBoot內部啟動原理,以後難免會吃虧。所以這次博主就跟你們一起一步步揭開

ShiroApache Shiro架構之身份認證Authentication

trac pretty asm 安全保障 軟件測試 釋放 model tac 讀取配置文件 Shiro系列文章: 【Shiro】Apache Shiro架構之權限認證(Authorization) 【Shiro】Apache Shiro架構之集成web

整理軟件工程復習提綱維護

評價 描述 nbsp 參考 操作 text 吸引 復習 組織 章魚小年糕整理,如果有錯誤歡迎提出,若要二次修改發布,請留言,謝謝^_^! 概念 軟件維護:軟件在已經交付使用之後,為了改正錯誤或滿足新的需求修改軟件的過程。 文檔:有關計算機程序功能、設計、編制、使用的文字或圖

fetch跨域請求附帶cookiecredentials

allow src ssi ann oct o-c ech .com 頭部 HTTP訪問控制 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS 解決跨域的方式有很多種,本文介紹“跨域請

gulp前端自動化工具---gulp的使用------凡塵

app 一起 dex 前端自動化 指定 sass css 文件的 等待 什麽是gulp? 基於node的自動化構建工具 擴展:開發的時候分為2個節點一個是開發階段 另一個是部署階段 開發階段:源文件不會被壓縮

201803122018年03月12日隨想

post 而是 有一個 然而 clas OS you pos 一個 今天有一個熱點事件,在幾個群裏都有提及。 我以為是假的。沒想到是真的。果然還是太young了。 總結: 有的事,你認為是假的,它是真的。比如今天的焦點事件。 有的事,你認為一定是假的,偏偏是真

PAT1135Is It A Red-Black Tree30

earch represent uno nbsp pac ber key strong 節點 There is a kind of balanced binary search tree named red-black tree in the data structure.

題解 bzoj1503: [NOI2004]郁悶的出納員 Splay

+= 地方 namespace 父親 noi down har str i++ bzoj1503,懶得復制,戳我戳我 Solution: 我知不知道我是那根筋抽了突然來做splay,調了起碼\(3h+\),到第二天才改出來(我好菜啊),當做訓練調錯吧 一個裸的splay,

linuxlinux 環境下 安裝禪道轉載 -- 跟web服務器無關,無視apache、nginx!!!

sdn php 修改 鏈接 net 壓縮 操作 tps 數據庫 參考文章 鏈接 :https://blog.csdn.net/xinxin19881112/article/details/46813991 講的非常完美、透徹,不像其他的文章,都是抄襲的,沒一點註意事項和自己

BZOJ2342: [Shoi2011]雙倍回文Manacher

manacher con spa 滿足 ans gin pac -i 代碼 題目 傳送門:QWQ 分析 (sb如我寫了發不知道什麽東西在洛谷上竟然水了84分 嗯咳 設$ i $為雙重回文的中心 如果$ j~i $ 可以被算作答案,只有滿足如下兩式

Verilog學習筆記簡單功能實現...............異步FIFO

另一個 gif 多個 可靠 基本原理 drs bar next 不同 基本原理: 1.讀寫指針的工作原理   寫指針:總是指向下一個將要被寫入的單元,復位時,指向第1個單元(編號為0)。   讀指針:總是指向當前要被讀出的數據,復位時,指向第1個單元(編號為0)

CodeforcesCF 467 C George and Jobdp

++ clas show mes ces -m col scanf tro 題目 傳送門:QWQ 分析 dp基礎題。 $ dp[i][j] $表示前i個數分成j組的最大和。 轉移顯然。 吐槽:做cf題全靠洛谷翻譯茍活。 代碼 1

Luogu 4777 模板擴展中國剩余定理EXCRT

name space return 同余 pan 自己 pre 圖片 是把 復習模板。 兩兩合並同余方程 $x\equiv C_{1} \ (Mod\ P_{1})$ $x\equiv C_{2} \ (Mod\ P_{2})$ 把它寫成不定方程的形式: $x =

BZOJ2563阿貍和桃子的遊戲貪心

include etc printf define += 桃子 space main efi 【BZOJ2563】阿貍和桃子的遊戲(貪心) 題面 BZOJ 題解 邊權平均分給兩個點就好了。 #include<iostream> #include<cstdi

BZOJ4391[Usaco2015 dec]High Card Low Card貪心

pac 前綴 ble cstring cst getc getch end != 【BZOJ4391】[Usaco2015 dec]High Card Low Card(貪心) 題面 BZOJ 題解 預處理前綴後綴的結果,中間找個地方合並就好了。 #include<i

LUOGU P4777 模板擴展中國剩余定理EXCRT

img lib display begin n) scan %d pen class 傳送門 解題思路 擴展 $crt?$,就是中國剩余定理在模數不互質的情況下,首先對於方程? $\begin{cases} x\equiv a_1\mod m_1\\x\equi

轉載基於rasa的對話系統搭建

生成模型 efi 實體類 total ted twisted -m serve feature 文章介紹使用rasa nlu和 rasa core 實現一個電信領域對話系統demo,實現簡單的業務查詢辦理功能,更完善的實現需要

iOS日曆行程的增刪改查完整

前言 我們可以使用系統提供的EventKit框架來訪問和操作使用者的日曆日程和提醒(雖然日曆和提醒是兩個獨立的app,但是是用同一個框架來處理資料)。同樣地,日曆和提醒的資料的資料,都是儲存在同一個叫做Calendar Database的資料庫中: EventKit不僅能獲