Hadoop之NameNode目錄結(jié)構(gòu)

原文地址: https://itweknow.cn/detail?id=69 ,歡迎大家訪問杨刨。

為了后面能夠更加熟悉的保障Hadoop集群的平穩(wěn)運行晤柄,我們需要深入的了解NameNode、SecondaryNameNode(也稱輔助NameNode)以及datanode等HDFS組件在磁盤上的目錄結(jié)構(gòu)以及運行的原理妖胀。這篇文章我們就一起來看一下NameNode的目錄結(jié)構(gòu)芥颈。

namenode的目錄結(jié)構(gòu)一覽

NameNode的工作目錄就是我門指定的hadoop工作目錄(由hadoop.tmp.dir配置項指定,配置在core-site.xml文件內(nèi))下的dfs/name目錄赚抡。

root@test:~/hadoop/tmp/dfs# tree name
name
├── current
│   ├── edits_0000000000000000001-0000000000000000002
│   ├── edits_0000000000000000003-0000000000000000003
│   ├── edits_0000000000000000004-0000000000000000005
│   ├── edits_0000000000000000006-0000000000000000006
│   ├── edits_0000000000000000007-0000000000000000008
│   ├── edits_0000000000000000009-0000000000000000010
│   ├── edits_0000000000000000011-0000000000000000012
│   ├── edits_0000000000000000013-0000000000000000014
│   ├── edits_0000000000000000015-0000000000000000016
│   ├── edits_0000000000000000017-0000000000000000018
│   ├── edits_0000000000000000019-0000000000000000020
│   ├── edits_inprogress_0000000000000000021
│   ├── fsimage_0000000000000000000
│   ├── fsimage_0000000000000000000.md5
│   ├── fsimage_0000000000000000020
│   ├── fsimage_0000000000000000020.md5
│   ├── seen_txid
│   └── VERSION
└── in_use.lock

  • edits_0000xxxx -> 編輯日志文件
  • edits_inprogress_000xxx -> 當前打開可寫的編輯日志
  • fsimage_000xxx -> 文件系統(tǒng)鏡像文件
  • VERSION -> HDFS版本信息的描述文件
  • in_use.lock -> 一個鎖文件爬坑,namenode使用該文件為存儲目錄枷鎖,避免其它namenode實例同時使用同一個存儲目錄的情況涂臣。

VERSION

VERSION文件中包含正在運行的HDFS的版本信息盾计,一般情況下應(yīng)該包含下面的內(nèi)容:

#Wed Jan 02 07:08:58 UTC 2019
namespaceID=1447158958
clusterID=CID-67c5cf48-73da-4469-9c90-2759b2e0481c
cTime=1544608355749
storageType=NAME_NODE
blockpoolID=BP-1627059714-192.168.142.9-1544608355749
layoutVersion=-63
  • layoutVersion是一個負整數(shù),描述HDFS持久性數(shù)據(jù)結(jié)構(gòu)(也稱之為布局)的版本赁遗,但是這個與Hadoop發(fā)布包的版本號無關(guān)署辉。
  • namespaceID是文件系統(tǒng)命名空間的唯一標識,是在namenode首次格式化的時候創(chuàng)建的岩四。
  • clusterID是將HDFS集群作為一個整體賦予的唯一標識符哭尝,對于聯(lián)邦HDFS分廠中藥,因為在聯(lián)邦HDFS機制下一個集群由多個命名空間組成炫乓,每個命名空間由一個namenode管理。
  • blockpoolID是數(shù)據(jù)塊池的唯一標識符献丑,數(shù)據(jù)塊池中包含了由一個namenode管理的命名空間中的所有文件
  • cTime屬性標記了namenode存儲系統(tǒng)的創(chuàng)建時間末捣。對于剛剛格式化的文件系統(tǒng)這個屬性值為0,在文件系統(tǒng)升級之后這個值就會更新到新的時間戳创橄。
  • storageType說明該存儲目錄包含的是namenode的數(shù)據(jù)結(jié)構(gòu)箩做。

編輯日志和文件系統(tǒng)鏡像

  • 編輯日志

當我們操作HDFS中的文件時,這些操作首先會被寫入到編輯日志中妥畏,然后相關(guān)的文件數(shù)據(jù)也會被更新邦邦。編輯日志文件在概念上是單個實體安吁,但是它其實是存儲在磁盤上的多個文件上的,我們看到了很多的edits_000xxx就是編輯日志燃辖。但是任何一個時刻都只有一個編輯日志文件處于打開可寫的狀態(tài)(edits_inprogress_000xxx)鬼店。
其實這個有點類似日志滾動的概念。

  • 文件系統(tǒng)鏡像
    每個fsimage_000xxx文件都是HDFS文件系統(tǒng)的一個鏡像(也稱之為文件系統(tǒng)元數(shù)據(jù)的一個完整的永久性檢查點)黔龟,鏡像文件的大小一般都比較大妇智,我們對HDFS中文件的操作并不會直接記錄到鏡像文件中,而是寫入到編輯日志中氏身,在namenode啟動的時候會首先載入最近的一個鏡像文件巍棱,然后再讀取編輯日志中的改變,這樣我們就可以將namenode恢復到上一次正常工作時的狀態(tài)了蛋欣。

  • 編輯日志合并到文件系統(tǒng)鏡像

編輯日志不會是無限的增長的航徙,集群中的SecondaryNameNode會定期為namenode內(nèi)存中的文件系統(tǒng)元數(shù)據(jù)創(chuàng)建系統(tǒng)鏡像,具體的創(chuàng)建過程參照下圖陷虎。

編輯日志合并過程
  1. SecondaryNameNode請求NameNode停止使用當前打開的edits文件(即edits_inprogress_000xxx文件)到踏,并重新打開一個新的編輯日志文件以記錄新的操作。
  2. SecondaryNameNode從NameNode中獲取最近的fsimage和edits文件泻红,使用HTTP GET方式獲取夭禽。
  3. SecondaryNameNode將fsimage載入內(nèi)存,然后逐一執(zhí)行edits文件中記錄的操作谊路,然后創(chuàng)建一個新的鏡像文件讹躯。
  4. SecondaryNameNode將合并后的鏡像文件發(fā)送到NameNode(HTTP PUT),NameNode將其保存為一個臨時文件。
  5. NameNode重新命名該臨時的鏡像文件缠劝,此為最新的鏡像文件潮梯。

edits日志文件合并的觸發(fā)條件受兩個配置項的控制,dfs.namenode.checkpoint.period(單位為秒)惨恭,這個配置項是從時間維度上的控制秉馏,默認情況下是每隔1個小時觸發(fā)一次合并。
第二個配置項是dfs.namenode.checkpoint.txns脱羡,這個配置是從編輯日志大大小維度上進行控制的萝究,默認是如果從上一個檢查點開始編輯日志已經(jīng)達到了100萬個事務(wù)就合并。檢查編輯日志大小的頻率默認是1分鐘檢查一次锉罐,可由dfs.namenode.checkpoint.check.period(單位為秒)配置項來改變帆竹。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市脓规,隨后出現(xiàn)的幾起案子栽连,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秒紧,死亡現(xiàn)場離奇詭異绢陌,居然都是意外死亡,警方通過查閱死者的電腦和手機熔恢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門脐湾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绩聘,你說我怎么就攤上這事沥割。” “怎么了凿菩?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵机杜,是天一觀的道長。 經(jīng)常有香客問我衅谷,道長椒拗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任获黔,我火速辦了婚禮蚀苛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘玷氏。我一直安慰自己堵未,他們只是感情好捌刮,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布清女。 她就那樣靜靜地躺著,像睡著了一般拌滋。 火紅的嫁衣襯著肌膚如雪赞辩。 梳的紋絲不亂的頭發(fā)上雌芽,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音辨嗽,去河邊找鬼世落。 笑死,一個胖子當著我的面吹牛糟需,可吹牛的內(nèi)容都是我干的屉佳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼洲押,長吁一口氣:“原來是場噩夢啊……” “哼武花!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起诅诱,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤髓堪,失蹤者是張志新(化名)和其女友劉穎送朱,沒想到半個月后娘荡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體干旁,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年炮沐,在試婚紗的時候發(fā)現(xiàn)自己被綠了争群。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡大年,死狀恐怖换薄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翔试,我是刑警寧澤轻要,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站垦缅,受9級特大地震影響冲泥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜壁涎,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一凡恍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怔球,春花似錦嚼酝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至流码,卻和暖如春又官,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漫试。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工六敬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驾荣。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓外构,卻偏偏與公主長得像,于是被迫代替她去往敵國和親播掷。 傳聞我的和親對象是個殘疾皇子审编,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容