一、 硬件錯誤 因爲集羣不少時候由數量衆多的廉價機組成,使得硬件錯誤成爲常態node
二、 數據流訪問 全部應用以流的方式訪問數據,設置之初即是爲了用於批量的處理數據,而不是低延時的實時交互處理linux
三、 大數據集 典型的HDFS集羣上面的一個文件是以G或者T數量級的,支持一個集羣當中的文件數量達到千萬數量級數據庫
四、 簡單的相關模型 假定文件是一次寫入,屢次讀取的操做緩存
五、 移動計算比移動數據便宜 一個應用請求的計算,離它操做的數據越近,就越高效服務器
六、 多種軟硬件的可移植性網絡
HDFS起源於Google的GFS論文(GFS,Mapreduce,BigTable爲google的舊的三駕馬車)架構
發表於2003年10月分佈式
HDFS是GFS的克隆版oop
Hadoop Distributed File system性能
易於擴展的分佈式文件系統
運行在大量普通廉價機器上,提供容錯機制
爲大量用戶提供性能不錯的文件存取服務
四、HDFS的架構圖之基礎架構
一、NameNode是一箇中心服務器,單一節點(簡化系統的設計和實現),負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問
二、文件操做,namenode是負責文件元數據的操做,datanode負責處理文件內容的讀寫請求,跟文件內容相關的數據流不通過Namenode,只詢問它跟哪一個dataNode聯繫,不然NameNode會成爲系統的瓶頸
三、副本存放在哪些Datanode上由NameNode來控制,根據全局狀況做出塊放置決定,讀取文件時NameNode儘可能讓用戶先讀取最近的副本,下降讀取網絡開銷和讀取延時
四、NameNode全權管理數據庫的複製,它週期性的從集羣中的每一個DataNode接收心跳信號和狀態報告,接收到心跳信號意味着DataNode節點工做正常,塊狀態報告包含了一個該DataNode上全部的數據列表
注:元數據不只保存在內存中,還保存一份在磁盤中,防止意外斷電等致使數據丟失。
block塊的大小能夠經過hdfs-site.xml當中的配置文件進行指定:
<property>
<name>dfs.blocksize</name>
<value>塊大小 以Byte字節爲單位</value>//只寫數值就能夠 默認:134217728B,即128MB
</property>
<property>
<name>dfs.replication</name>
<value>3</value> //block的副本數量設置
</property>
block塊緩存:能夠將咱們的block塊緩存到內存當中,咱們在執行一些MR計算的時候,能夠直接從內存當中獲取數據,比較快,特別適用於一些小表join大表的狀況。
hdfs的權限驗證:採用的是linux相似的權限校驗機制,防止好人作錯事,不能阻止壞人乾乾事,hdfs相信你告訴我你是誰,你就是誰。