更新時間:2021年06月25日17時44分 來源:傳智教育 瀏覽次數:
HDFS磁盤上元數據文件分為兩類,用于持久化存儲:
fsimage 鏡像文件:是元數據的一個持久化的檢查點,包含Hadoop文件系統(tǒng)中的所有目錄和文件元數據信息,但不包含文件塊位置的信息。文件塊位置信息只存儲在內存中,是在 datanode加入集群的時候,namenode詢問datanode得到的,并且間斷的更新。
Edits 編輯日志:存放的是Hadoop文件系統(tǒng)的所有更改操作(文件創(chuàng)建,刪除或修改)的日志,文件系統(tǒng)客戶端執(zhí)行的更改操作首先會被記錄到edits文件中。
fsimage和edits文件都是經過序列化的,在NameNode啟動的時候,它會將fsimage文件中的內容加載到內存中,之后再執(zhí)行edits文件中的各項操作,使得內存中的元數據和實際的同步,存在內存中的元數據支持客戶端的讀操作,也是 完整的元數據。
當客戶端對HDFS中的文件進行新增或者修改操作,操作記錄首先被記入edits日志文件中,當客戶端操作成功后,相應的元數據會更新到內存元數據中。因為fsimage文件一般都很大(GB級別的很常見),如果所有的更新操作都往fsimage文件中添加,這樣會導致系統(tǒng)運行的十分緩慢。
HDFS這種設計實現(xiàn)著手于:一是內存中數據更新、查詢快,極大縮短了操作響應時間;二是內存中元數據丟失風險頗高(斷電等),因此輔佐元數據鏡像文件(fsimage)+編輯日志文件(edits)的備份機制進行確保元數據的安全。
<a href="itcast.cn/news/20201221/17071256759.shtml>怎樣使用Spark Shell來讀取HDFS文件?