日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

hdfs如何查找指定目录是否文件_hadoop实战教程-HDFS文件系统如何查看文件对应的block...

發布時間:2023/12/10 windows 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdfs如何查找指定目录是否文件_hadoop实战教程-HDFS文件系统如何查看文件对应的block... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題導讀:

1.文件與block的信息被保存在什么文件中?

2.如何查看整個目錄樹?

3.可以通過什么方式查看文件與block的對應關系?

(1)文件分割后,會有一個 文件 --> block的映射,這個映射是持久化到硬盤中的,具體的映射關系表是在FSNamesystem.java中構建的(該部分的構建使用的是FSDirectory.java的功能,filename - blockset);

有了文件到塊的映射表就可以通過文件找到blocklist;

(2)datanode的選取,hadoop有它本身的機制,一般來說,datanode默認是三個,選取的是不同機架的datanode,同機架里選一臺,另一個機架里選取兩臺(安全性等考慮);

(3)block寫入datanodes,選取的三個datanode,比如說是A、B、C,先寫給A,A再寫給B,B再寫給C;然后B收到C的寫入成功,A收到B的寫入成功,然后告訴namenode 和 client寫入成功;

(4)真正寫的并不是block,而是比block更小的好像是chunk , 還包括有各種校驗。

上面說一個大體的過程,下面詳細介紹一下,也就是從原理角度來理解。其實這里面有一個問題,我們能否通過命令來查看一個文件的所組成的block,它應該具有Java api,但是對于shell 命令,目前還沒有發現。所以如果我們想查看一個文件所處的block,可以提取BlocksMap的信息。

具體大家想可以詳細看看他們的原理

NameNode節點是就是HDFS的大腦。想了解HDFS文件系統,必須了解大腦結構。 咱們就從NameNode節點開始。NameNode類中,關于HDFS文件系統的存儲和管理都交給了FSNamesystem負責。下面介紹一下FSNamesystem的邏輯組成和類圖。

1. FSNameSystem層次結構

一些概念

INode: 它用來存放文件及目錄的基本信息:名稱,父節點、修改時間,訪問時間以及UGI信息等。

INodeFile: 繼承自INode,除INode信息外,還有組成這個文件的Blocks列表,重復因子,Block大小

INodeDirectory:繼承自INode,此外還有一個INode列表來組成文件或目錄樹結構

Block(BlockInfo):組成文件的物理存儲,有BlockId,size ,以及時間戳

BlocksMap: 保存數據塊到INode和DataNode的映射關系

FSDirectory:保存文件樹結構,HDFS整個文件系統是通過FSDirectory來管理

FSImage:保存的是文件系統的目錄樹

FSEditlog: 文件樹上的操作日志

FSNamesystem: HDFS文件系統管理

這些概念之間的層次關系:

1.jpeg (44.26 KB, 下載次數: 0)

2014-5-4 23:05 上傳

我們都知道,在NameNode內存中存在兩張很重要的映射表:

1. 文件系統的命名空間(文件目錄樹) 主要是 文件和Block映射關系 (保存在FSDirectory)

2. Block 和 INodeFile & DataNode的映射關系 (保存在FSNamesystem)

在上圖中,左邊黑線部分是

1 數據結構的層次關系;紅線部分是

2 關系的層次結構

(其中block & DataNode這個共用)

下面詳細的介紹上圖所表示的關系:

文件系統 FSNamesystem

FSNamesystem 主要有兩個對象:文件系統(FSDirectory)根節點rootDir 和BlocksMap映射表 (Block -> { INode, datanodes, self ref } )

文件系統目錄FSDirectory

保存文件目錄結構(INodeDirectory樹),實現FSImage和FSEditLog操作實現。

INode ( INodeFile & INodeDirectory )

在HDFS中,無論目錄還是文件,都是INode。INode有兩個派生類INodeFile和INodeDirectory。

INodeFile是INode文件類,INodeDirectory是INode目錄類。每一 INodeDirectory孩子節點都是由INodeDirectory目錄或INodeFile文件列表構成。這樣就形成了一棵INode樹形結構。

NameNode內存中保存著HDFS整個文件系統形成的樹,這棵樹保存在FSDirectory對象內。

Block & BlocksMap & BlockInfo

HDFS物理存儲單元是Block(缺省的Block大小為64M),每個Block會有幾個副本(缺省是3個),這些Block都是存儲在不同數據節點上的。映射關系保存在BlocksMap。

Block & INodeFile

每個INodeFile都有一個Block列表組成。每一個block有多個副本(缺省3個副本), 各副本保存在不同的數據節點上。 這樣在文件與Block和DataNode之間形成一個映射關系表。這張關系表就保存在FSDirectory對象 .

FSImage & FSEditlog(FSDirectory)

由于目錄樹(FSDirectory)在NameNode內存中保存,機器也有掉電的時候。若只保存在內存那勢必會造成數據的丟失。因此,系統會周期性的保存文件目錄樹到NameNode本地文件系統,生成FSImage。主要由FSImage和FSEditLog,這兩個類負責目錄樹持久化。

當 HDFS系統非常龐大時,FSImage也會非常大,這樣不能文件系統發生任何操作時,就更新到FSImage,所以一段時間內文件系統的操作日志會記錄到FSEditLog。到一定時間會把操作日志FSEditLog同步到FSImage,這樣就形成完整的文件目錄樹。

2. FSNameSystem 主要類關系圖

2.jpeg (130.2 KB, 下載次數: 0)

2014-5-4 23:05 上傳

這個類圖可以分成三個部分

Bock相關的部分(BlocksMap & BlockInof & Block)

INode相關的部分(INode & INodeDirectory & INodeFile & INodeDirectoryWithQuota)

FSImage & FSEditLog (Storage & StorageInfo)

其中

BlockInfo是Block的加強類,增加了INodeFile的引用和DataNode列表

INodeFirectoryWithQuota 是INodeDirectory的增強類,增加了Quota限制功能

從層次關系圖和類圖中,可以看出FSNamesystem中各數據結構之間的關系。了解FSNamesystem, 那么HDFS的文件系統就了解了90%。

大數據系列相關文章:

總結

以上是生活随笔為你收集整理的hdfs如何查找指定目录是否文件_hadoop实战教程-HDFS文件系统如何查看文件对应的block...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。