一、數(shù)據(jù)塊(blck)
創(chuàng)新互聯(lián)專注于滄縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供滄縣營銷型網(wǎng)站建設(shè),滄縣網(wǎng)站制作、滄縣網(wǎng)頁設(shè)計、滄縣網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造滄縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供滄縣網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
HDFS(Hadp Distributed File System)默認的最基本的存儲單位是64M的數(shù)據(jù)塊。
和普通文件系統(tǒng)相同的是,HDFS中的文件是被分成64M一塊的數(shù)據(jù)塊存儲的。
不同于普通文件系統(tǒng)的是,HDFS中,如果一個文件小于一個數(shù)據(jù)塊的大小,并不占用整個數(shù)據(jù)塊存儲空間。
二、元數(shù)據(jù)節(jié)點(Namende)和數(shù)據(jù)節(jié)點(datande)
元數(shù)據(jù)節(jié)點用來管理文件系統(tǒng)的命名空間
其將所有的文件和文件夾的元數(shù)據(jù)保存在一個文件系統(tǒng)樹中。
這些信息也會在硬盤上保存成以下文件:命名空間鏡像(namespace p_w_picpath)及修改日志(edit lg)
其還保存了一個文件包括哪些數(shù)據(jù)塊,分布在哪些數(shù)據(jù)節(jié)點上。然而這些信息并不存儲在硬盤上,而是在系統(tǒng)啟動的時候從數(shù)據(jù)節(jié)點收集而成的。
數(shù)據(jù)節(jié)點是文件系統(tǒng)中真正存儲數(shù)據(jù)的地方。
客戶端(client)或者元數(shù)據(jù)信息(namende)可以向數(shù)據(jù)節(jié)點請求寫入或者讀出數(shù)據(jù)塊。
其周期性的向元數(shù)據(jù)節(jié)點回報其存儲的數(shù)據(jù)塊信息。
從元數(shù)據(jù)節(jié)點(secndary namende)
從元數(shù)據(jù)節(jié)點并不是元數(shù)據(jù)節(jié)點出現(xiàn)問題時候的備用節(jié)點,它和元數(shù)據(jù)節(jié)點負責(zé)不同的事情。
其主要功能就是周期性將元數(shù)據(jù)節(jié)點的命名空間鏡像文件和修改日志合并,以防日志文件過大。這點在下面會詳細敘述。
合并過后的命名空間鏡像文件也在從元數(shù)據(jù)節(jié)點保存了一份,以防元數(shù)據(jù)節(jié)點失敗的時候,可以恢復(fù)。
1、元數(shù)據(jù)節(jié)點文件夾結(jié)構(gòu)
VERSIN文件是java prperties文件,保存了HDFS的版本號。
layutVersin是一個負整數(shù),保存了HDFS的持續(xù)化在硬盤上的數(shù)據(jù)結(jié)構(gòu)的格式版本號。
namespaceID是文件系統(tǒng)的唯一標識符,是在文件系統(tǒng)初次格式化時生成的。
cTime此處為0
strageType表示此文件夾中保存的是元數(shù)據(jù)節(jié)點的數(shù)據(jù)結(jié)構(gòu)。
namespaceID=1232737062 cTime=0 strageType=NAME_NDE layutVersin=-18
2、文件系統(tǒng)命名空間映像文件及修改日志
當文件系統(tǒng)客戶端(client)進行寫操作時,首先把它記錄在修改日志中(edit lg)
元數(shù)據(jù)節(jié)點在內(nèi)存中保存了文件系統(tǒng)的元數(shù)據(jù)信息。在記錄了修改日志后,元數(shù)據(jù)節(jié)點則修改內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)。
每次的寫操作成功之前,修改日志都會同步(sync)到文件系統(tǒng)。
fsp_w_picpath文件,也即命名空間映像文件,是內(nèi)存中的元數(shù)據(jù)在硬盤上的checkpint,它是一種序列化的格式,并不能夠在硬盤上直接修改。
同數(shù)據(jù)的機制相似,當元數(shù)據(jù)節(jié)點失敗時,則最新checkpint的元數(shù)據(jù)信息從fsp_w_picpath加載到內(nèi)存中,然后逐一重新執(zhí)行修改日志中的操作。
從元數(shù)據(jù)節(jié)點就是用來幫助元數(shù)據(jù)節(jié)點將內(nèi)存中的元數(shù)據(jù)信息checkpint到硬盤上的
checkpint的過程如下:
從元數(shù)據(jù)節(jié)點通知元數(shù)據(jù)節(jié)點生成新的日志文件,以后的日志都寫到新的日志文件中。
從元數(shù)據(jù)節(jié)點用http get從元數(shù)據(jù)節(jié)點獲得fsp_w_picpath文件及舊的日志文件。
從元數(shù)據(jù)節(jié)點將fsp_w_picpath文件加載到內(nèi)存中,并執(zhí)行日志文件中的操作,然后生成新的fsp_w_picpath文件。
從元數(shù)據(jù)節(jié)點將新的fsp_w_picpath文件用http pst傳回元數(shù)據(jù)節(jié)點
元數(shù)據(jù)節(jié)點可以將舊的fsp_w_picpath文件及舊的日志文件,換為新的fsp_w_picpath文件和新的日志文件(第一步生成的),然后更新fstime文件,寫入此次checkpint的時間。
這樣元數(shù)據(jù)節(jié)點中的fsp_w_picpath文件保存了最新的checkpint的元數(shù)據(jù)信息,日志文件也重新開始,不會變的很大了。
3、從元數(shù)據(jù)節(jié)點的目錄結(jié)構(gòu)
4、數(shù)據(jù)節(jié)點的目錄結(jié)構(gòu)
數(shù)據(jù)節(jié)點的VERSION文件格式如下:
namespaceID=1232737062 storageID=DS-1640411682-127.0.1.1-50010-1254997319480 cTime=0 storageType=DATA_NODE layoutVersion=-18
blk_
blk_
當一個目錄中的數(shù)據(jù)塊到達一定數(shù)量的時候,則創(chuàng)建子文件夾來保存數(shù)據(jù)塊及數(shù)據(jù)塊屬性信息。