1、HDFS產生背景及定義服務器
一、HDFS產生背景架構
隨着數據量愈來愈大,在一個操做系統存不下全部的數據,那麼就分配到更多的操做系統管理的磁盤中,可是不方便管理和維護,迫切須要一種系統來管理多臺機器上的文件,這就是分佈式文件管理系統。HDFS只是分佈式文件管理系統中的一種。併發
二、HDFS定義app
HDFS(Hadoop Distributed File System),它是一個文件系統,用於存儲文件,經過目錄樹來定位文件;其次,它是分佈式的,由不少服務器聯合起來實現其功能,集羣中的服務器有各自的角色。分佈式
HDFS的使用場景:適合一次寫入,屢次讀出的場景,且不支持文件的修改。適合用來作數據分析,並不適合用來作網盤應用。oop
2、HDFS優缺點大數據
一、優勢spa
1)高容錯性操作系統
a、數據自動保存多個副本。它經過增長副本的形式,提升容錯性。線程
b、某個副本丟失之後,它能夠自動恢復。
2)適合處理大數據
a、數據規模:可以處理數據規模達到GB、TB、甚至PB級別的數據
b、文件規模:可以處理百萬規模以上的文件數量,數量至關之大。
3)可構建在廉價機器上,經過多副本機制,提升可靠性。
二、缺點
1)不適合低延時數據訪問,好比毫秒級的存儲數據,是作不到的。
2)沒法高效的對大量小文件進行存儲。
a、存儲大量小文件的話,它會佔用NameNode大量的內存來存儲文件目錄和塊信息。這樣是不可取的,由於NameNode的內存老是有限的。
b、小文件存儲的尋址時間會超過讀取時間,它違反了HDFS的設計目標。
3)不支持併發寫入、文件隨機修改。
a、一個文件只能有一個寫,不容許多個線程同時寫;
b、僅支持數據append(追加),不支持文件的隨機修改。
3、HDFS架構組成
一、NameNode(nn):在整個集羣中是Master,它是一個主管、管理者。
1)管理HDFS的名稱空間;
2)配置副本策略
3)管理數據塊(Block)映射信息
4)處理客戶端讀寫請求
二、DataNode(dn):它是Slave,NameNode下達命令,DataNode執行實際的操做。
1)存儲實際的數據塊;
2)執行數據塊的讀/寫操做
三、Client:客戶端
1)文件切分。文件上傳HDFS的時候,Client將文件切分紅一個一個的Block,而後進行上傳
2)與NameNode交互,獲取文件的位置信息
3)與DataNode交互,讀取或者寫入數據
4)Client提供一些命令來管理HDFS,好比NameNode格式化
5)Client能夠經過一些命令來訪問HDFS,好比對HDFS增刪查改操做
四、Secondary NameNode:並不是NameNode的熱備。當NameNode掛掉的時候,它並不能立刻替換NameNode並提供服務。
1)輔助NameNode,分擔其工做量,好比按期合併Fsimage和Edits,並推送給NameNode
2)在緊急狀況下,可輔助恢復NameNode。
4、HDFS文件塊大小
HDFS的文件在物理上是分塊存儲(Block),塊的大小能夠經過配置參數(dfs.blocksize)來設定,默認大小在Hadoop2.x版本中是128M,老版本中是64M。
思考:爲何塊的大小不能設置過小,也不能設置太大?
1)HDFS的塊設置過小,會增長尋址時間,程序一直在找塊的開始位置;
2)若是塊設置的太大,從磁盤傳輸數據的時間會明顯大於定位這個塊開始位置所需時間,致使程序在處理這塊數據時,會很是慢。
總結:HDFS塊的大小設置主要取決於磁盤傳輸速率。