一、HDFS node
HDFS(Hadoop Distributed File System)是Hadoop項目的核心子項目,是分佈式計算中數據存儲管理的基礎,是基於流數據模式訪問和處理超大文件的需求而開發的,能夠運行於廉價的商用服務器上。它所具備的高容錯、高可靠性、高可擴展性、高得到性、高吞吐率等特徵爲海量數據提供了不怕故障的存儲,爲超大數據集(Large Data Set)的應用處理帶來了不少便利。shell
二、HDFS 服務器
HDFS 源於 Google 在2003年10月份發表的GFS(Google File System) 論文。 架構
三、HDFS的優缺點併發
優勢:app
一、高容錯性負載均衡
數據自動保存多個副本。它經過增長副本的形式,提升容錯性。框架
某一個副本丟失之後,它能夠自動恢復,這是由 HDFS 內部機制實現的,咱們沒必要關心。機器學習
二、適合批處理分佈式
它是經過移動計算而不是移動數據。
它會把數據位置暴露給計算框架。
三、適合大數據處理
處理數據達到 GB、TB、甚至PB級別的數據。
可以處理百萬規模以上的文件數量,數量至關之大。
可以處理10K節點的規模。
四、流式文件訪問
簡化一致性模型,實現一次寫入,屢次讀取。文件一旦寫入不能修改,只能追加。
它能保證數據的一致性。
五、可構建在廉價機器上
它經過多副本機制,提升可靠性。
它提供了容錯和恢復機制。好比某一個副本丟失,能夠經過其它副原本恢復。
缺點:
一、低延時數據訪問
* 好比毫秒級的來存儲數據,這是不行的,它作不到。
* 它適合高吞吐率的場景,就是在某一時間內寫入大量的數據。可是 它在低延時的狀況下是不行的,好比毫秒級之內讀取數據,這樣它 是很難作到的。
二、小文件存儲
*存儲大量小文件(這裏的小文件是指小於HDFS系統的Block大小的文 件(默認64M))的話,它會佔用 NameNode大量的內存來存儲文 件、目錄和塊信息。這樣是不可取的,由於NameNode的內存老是有 限的。
*小文件存儲的尋道時間會超過讀取時間,它違反了HDFS的設計目 標。
三、併發寫入、文件隨機修改
*一個文件只能有一個寫,不容許多個線程同時寫。
*僅支持數據 append(追加),不支持文件的隨機修改。
hdfs的特性:
* 高容錯,可擴展性及可配置性強
* 跨平臺
* shell命令接口
* 機架感知功能
* 負載均衡
Web界面
4.HDFS存儲數據
HDFS 採用Master/Slave的架構來存儲數據,這種架構主要由HDFS Client、NameNode、DataNode和Secondary NameNode四個部分組成。
一、Client:就是客戶端。
文件切分。文件上傳 HDFS 的時候,Client 將文件切分紅 一個一個的Block,而後進行存儲。
與 NameNode 交互,獲取文件的位置信息。
與 DataNode 交互,讀取或者寫入數據。
Client 提供一些命令來管理 HDFS,好比啓動或者關閉HDFS。
Client 能夠經過一些命令來訪問 HDFS。
二、NameNode:就是 master,它是一個主管、管理者。
管理 HDFS 的名稱空間
管理數據塊(Block)映射信息
配置副本策略
處理客戶端讀寫請求。
三、DataNode:就是Slave。NameNode 下達命令,DataNode 執行實際的操做。
存儲實際的數據塊。
執行數據塊的讀/寫操做。
四、Secondary NameNode:並不是 NameNode 的熱備。當NameNode 掛掉的時候,它並不能立刻替換 NameNode 並提供服務。
輔助 NameNode,分擔其工做量。
按期合併 fsimage和fsedits,並推送給NameNode。
在緊急狀況下,可輔助恢復 NameNode。
工做流程:
secondarynamenode通知namenode切換edits文件
secondarynamenode從namenode得到fsimage和edits(經過http)
secondarynamenode將fsimage載入內存,而後開始合併edits
secondarynamenode將新的fsimage發回給namenode
namenode用新的fsimage替換舊的fsimage
5.數據損壞處理
* 當DN(DataNode)讀取block的時候,它會計算checksum;
* 若是計算後的checksum,與block建立時值不同,說明該block已經損壞。
* client讀取其它DN上的block;NN(NameNode)標記該塊已經損壞,而後複製block達到預期設置的文件備份數;
* DN在其文件建立後三週驗證其checksum。
關注大數據and機器學習公衆號,一塊兒開創將來。
CLbigdata