SecondaryNameNode目錄結(jié)構(gòu)
SecondaryNameNode的目錄結(jié)構(gòu)和NameNode的目錄結(jié)構(gòu)一樣。為啥要這么設(shè)計(jì)呢?主要的優(yōu)點(diǎn)在于當(dāng)NameNode發(fā)生故障的時候葫录,我們可以從SecondaryNameNode恢復(fù)數(shù)據(jù)捶码⌒谘海恢復(fù)的方式有兩種:
- 將相關(guān)的目錄復(fù)制到NameNode的目錄中缘回,然后重啟NameNode。
- 使用-importCheckpoint選項(xiàng)啟動NameNode希俩,但是這種方式只有在NameNode的目錄中沒有元數(shù)據(jù)的時候才會有用吊宋。
DataNode的目錄結(jié)構(gòu)
data/
├── current
│ ├── BP-1627059714-192.168.142.9-1544608355749
│ │ ├── current
│ │ │ ├── dfsUsed
│ │ │ ├── finalized
│ │ │ │ └── subdir0
│ │ │ │ └── subdir0
│ │ │ │ ├── blk_1073741825
│ │ │ │ ├── blk_1073741825_1001.meta
│ │ │ │ ├── blk_1073741831
│ │ │ │ ├── blk_1073741831_1010.meta
│ │ │ │ ├── blk_1073741832
│ │ │ │ ├── blk_1073741832_1011.meta
│ │ │ │ ├── blk_1073741833
│ │ │ │ ├── blk_1073741833_1012.meta
│ │ │ │ ├── blk_1073741834
│ │ │ │ ├── blk_1073741834_1013.meta
│ │ │ │ ├── blk_1073741842
│ │ │ │ ├── blk_1073741842_1021.meta
│ │ │ │ ├── blk_1073741843
│ │ │ │ └── blk_1073741843_1022.meta
│ │ │ ├── rbw
│ │ │ └── VERSION
│ │ ├── scanner.cursor
│ │ └── tmp
│ └── VERSION
└── in_use.lock
我們的數(shù)據(jù)實(shí)際上都是存儲在以blk_為前綴的文件中,文件名包含了該文件存儲的塊的原始字節(jié)數(shù)颜武,每個塊還帶有一個相關(guān)聯(lián)的以.meta為后綴的文件璃搜,這個文件包括頭部(含版本和類型信息)和該區(qū)塊各區(qū)段的一系列的校驗(yàn)和拖吼。
當(dāng)目錄中數(shù)據(jù)塊的數(shù)量到達(dá)一定的規(guī)模的時候(可通過dfs.datanode.numblocks屬性設(shè)置,默認(rèn)為64)就會創(chuàng)建一個子目錄腺劣。