Hadoop Distributed File System,分佈式文件系統html
Block數據&##x5757;網絡
基本存儲單位,通常大小爲64M(配置大的塊主要是由於:1)減小搜尋時間,通常硬盤傳輸速率比尋道時間要快,大的塊能夠減小尋道時間;2)減小管理塊的數據開銷,每一個塊都須要在NameNode上有對應的記錄;3)對數據塊進行讀寫,減小創建網絡的鏈接成本)架構
一個大文件會被拆分紅一個個的塊,而後存儲於不一樣的機器。若是一個文件少於Block大小,那麼實際佔用的空間爲其文件的大小分佈式
基本的讀寫S#x5355;位,相似於磁盤的頁,每次都是讀寫一個塊oop
NameNode線程
存儲文件的metadata,運行時全部數據都保存到內存,整個HDFS可存儲的文件數受限於NameNode的內存大小日誌
一個Block在NameNode中對應一條記錄(通常一個block佔用150字節),若是是大量的小文件,會消耗大量內存。同時map task的數量是由splits來決定的,因此用MapReduce處理大量的小文件時,就會產生過多的map task,線程管理開銷將會增長做業時間。處理大量小文件的速度遠遠小於處理同等大小的大文件的速度。所以Hadoop建議存儲大文件htm
數據會定時保存到本地磁盤,但不保存block的位置信息,而是由DataNode註冊時上報和運行時維護(NameNode中與DataNode相關的信息並不保存到NameNode的文件系統中,而是NameNode每次重啓後,動態重建)blog
Secondary NameNode內存
DataNode
保存具體的block數據
負責數據的讀寫操做和複製操做
DataNode啓動時會向NameNode報告當前存儲的數據塊信息,後續也會定時報告修改信息