大講臺大數(shù)據(jù)精英架構6期
HDFS存儲的機制
Hadoop的分布式(底部評 獲課)文件系統(tǒng)HDFS是建立在Linux文件系統(tǒng)之上的一個虛擬分布式文件系統(tǒng),它由一個管理節(jié)點( NameNode )和N個數(shù)據(jù)節(jié)點( DataNode )組成,每個節(jié)點均是一臺普通的計算機。在使用上同我們熟悉的單機上的文件系統(tǒng)非常類似,一樣可以建目錄,創(chuàng)建,復制,刪除文件,查看文件內容等。但其底層實現(xiàn)上是把文件切割成Block(塊),然后這些Block分散地存儲于不同的DataNode上,每個Block還可以復制數(shù)份存儲于不同的DataNode上,達到容錯容災之目的。NameNode則是整個HDFS的核心,它通過維護一些數(shù)據(jù)結構,記錄了每一個文件被切割成了多少個Block,這些Block可以從哪些DataNode中獲得,各個DataNode的狀態(tài)等重要信息。
HDFS的數(shù)據(jù)塊
每個磁盤都有默認的數(shù)據(jù)塊大小,這是磁盤進行讀寫的基本單位.構建于單個磁盤之上的文件系統(tǒng)通過磁盤塊來管理該文件系統(tǒng)中的塊.該文件系統(tǒng)中的塊一般為磁盤塊的整數(shù)倍.磁盤塊一般為512字節(jié).HDFS也有塊的概念,默認為64MB(一個map處理的數(shù)據(jù)大小).HDFS上的文件也被劃分為塊大小的多個分塊,與其他文件系統(tǒng)不同的是,HDFS中小于一個塊大小的文件不會占據(jù)整個塊的空間.
?任務粒度——數(shù)據(jù)切片(Splits)
把原始大數(shù)據(jù)集切割成小數(shù)據(jù)集時,通常讓小數(shù)據(jù)集小于或等于HDFS中一個Block的大小(缺省是64M),這樣能夠保證一個小數(shù)據(jù)集位于一臺計算機上,便于本地計算。有M個小數(shù)據(jù)集待處理,就啟動M個Map任務,注意這M個Map任務分布于N臺計算機上并行運行,Reduce任務的數(shù)量R則可由用戶指定。
HDFS用塊存儲帶來的第一個明顯的好處一個文件的大小可以大于網(wǎng)絡中任意一個磁盤的容量,數(shù)據(jù)塊可以利用磁盤中任意一個磁盤進行存儲.第二個簡化了系統(tǒng)的設計,將控制單元設置為塊,可簡化存儲管理,計算單個磁盤能存儲多少塊就相對容易.同時也消除了對元數(shù)據(jù)的顧慮,如權限信息,可以由其他系統(tǒng)單獨管理。