HDFS體系結構

2021-09-30 12:14:58 字數 1609 閱讀 5104

1、什麼是分布式檔案系統?

於是有了分布式檔案系統,分布式檔案系統允許檔案通過網路在多台主機上分享檔案,可以讓多機器上的使用者分享檔案和儲存空間,讓使用者感覺像是在訪問一台機器。

hdfs是分布式檔案系統的一種,不適合小檔案,適用於一次寫多次讀的情況,不支援併發寫。

那麼元資訊存在哪呢?在hadoop/tmp/dfs目錄下,有data、name、namesecondary三個資料夾,namenode的資訊儲存在hadoop/tmp/dfs/name/current資料夾下

current下有edits、 fsimage、 fstime、 version

fsimage(負責管理):元資料映象檔案,儲存的就是檔案/目錄元資訊和每個檔案對應的資料塊列表,由於fsimage很重要,所以要備份多份

hdfs_default.xml 下有hadoop.tmp.dir 是存放namenode 的路徑,如果是多個副本,用逗號隔開(英文逗號,逗號前後不能有空格),放在不同硬碟下

edits檔案:存放的是操作日誌(使用者增刪改的日誌)

上傳資料時如果出現網路中斷等錯誤,那麼在hdfs中使用者不應該看見,如果上傳成功,使用者應該看見,因此考慮用事物來保證,edits裡儲存的就是使用者的事物,例如上傳100g的檔案時,每上傳乙個資料塊就寫一條記錄,如果上傳成功,就記錄上傳完畢,如果失敗,就沒有上傳成功記錄,就代表失敗了,那麼edits就把操作刪了,使用者看不到了上傳失敗的檔案了。

那麼edits如何把資料轉移到fsimage裡?

使用者看到的資料來自fsimage,使用者上傳操作資訊都在edits,edits不斷的上傳操作,會導致edits越來越大,它可通過secondarynamenode來處理,secondarynamenode它只有乙個功能,就是把namenode中edits的資料合併到fsimage裡

fstime:edits會定期合併到fsimage裡,配置檔案裡core_default.xml裡fs.checkpoint.period(預設一小時)

fs.checkpoint.size(預設64m),達到預設條件時,會觸發edits合併到fsimage裡,大小的優先順序大於時間。如果大小到了64m(預設),那麼就會把edits

合併到fsimage裡

datanode:

真正儲存檔案的,按照塊儲存

hdfs預設block大小是64mb,以乙個256mb檔案,共有256/64=4個block.

不同於普通檔案系統的是,hdfs中,如果乙個檔案小於乙個資料塊的大小,並不占用整個資料塊儲存空間,而是占用實際儲存空間

replication。多複本。預設是三個。

檔案為什麼劃分塊?

因為檔案非常大,讀寫速度慢,讀寫時會獨佔檔案,使其他程序不能對檔案進行讀寫 ,因此併發率低,所以把大檔案劃分成塊,而且如果檔案破壞一點, 整個檔案都不能了  , 如果檔案丟了, 整個丟了 ,如果劃分成塊, 丟乙個塊 可能影響不大,還能繼續使用,linux儲存也是用block塊。

檔案預設塊的大小是在hdfs_default.xml中,設定dfs.block.size  預設大小是64m,block塊存放在/hadoop/tmp/dfs/data/current下,有兩個檔案乙個資料檔案 乙個校驗檔案

datanode副本預設是3,在hdfs_default.xml中的dfs.replication設定的

HDFS的體系結構和操作

hdfs fs 常用命令 1.對hdfs操作的命令格式是hadoop fs 1.1 ls 表示對hdfs下一級目錄的檢視 hadoop fs ls hdfs chaoren 9000 對hdfs的根目錄進行檢視 linux下 ls path 這個可以使用more core site.xml進行檢視,...

HDFS體系結構 各種程序狀態

namenode預設大小1000m namenode守護程序作用 維護hdfs集群元資料的映象檔案 fsimage fsimage 包括 檔案屬性資訊,檔案與block塊的對應關係 維護客戶端對hdfs的相關操作,並記錄 edits log 接收所有來自datanode的心跳匯報,內容 block塊...

mysql 體系結構 了解MySQL體系結構

mysql 資料庫體系結構圖 mysql 由以下幾部分組成 1 connectors 不同語言中與 sql 的互動 show variables like connection variable name value character set connection utf8 collation c...