HDFS架構簡述
一、HDFS簡介
HDFS(Hadoop distributed File System):Hadoop分布式文件系統。是基於流數據模式訪問和處理超大文件的需要而開發的,可以運行於廉價的服務器上。它所具有的高容錯,高可靠性,高可擴展性,高獲得性,高吞吐率等特征為海量數據提供了不怕故障的存儲,為超大數據集的應用帶來了很多便利。簡單來說就是把一個超大號文件按一定大小分割並放置在多台服務器上,這樣多台服務器同時工作,效率超高,而且安全性也會提高。
二、HDFS組成結構以及各部分作用
HDFS主要由四個部分組成,分別為Client,nameNode、DataNode、以及Secondary NameNode組成。
2.1Client(客戶端)
- 文件切分:文件上傳HDFS的時候,client根據需求將文件切分成一個一個的小數據塊(block),然后進行存儲。
- 每個小數據塊(block)在其他服務器上都有副本,client會與namenode進行通信,獲取文件及其副本位置,為以后做打算。
- 與DataNode進行通信,讀取或寫入數據。
- client可以管理HDFS,比如啟動或關閉。
2.2nameNode(管理者)
nameNode在HDFS是管理者的作用,類似於現實世界中的國王地位,客戶端和secondary nameNode都是與他進行通信,然后由他發號施令來操作DataNode。主要作用有:
- 管理HDFS的名稱空間
- 管理數據塊(block)映射信息
- 配置副本策略
- 處理客戶端請求
2.3DataNode(執行者)
DataNode在文檔中的角色是slave,翻譯過來就是奴隸的意思(所以大家知道他的地位了吧),主要就是存儲數據塊和讀寫數據塊用的:
- 存儲實際的數據塊(block)
- 執行數據塊的讀寫操作
2.4secondary nameNode
他是nameNode的死忠,幫助nameNode完成一些工作,並且在nameNode要掛的時候給他續命,主要作用如下:
- 定期合並nameNode中的fsimage(映像文件)和fsedits(日志),並推送給nameNode,避免nameNode中的fsedits過大。
- 在緊急情況下,可輔助恢復nameNode。
三、副本放置策略
第一個副本:放置在上傳文件的DN;如果是集群外提交,則隨機挑選一台磁盤不太滿,CPU不太忙的節點。
第二個副本:放置在於第一個副本不同的 機架的節點上。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上轉載自 https://blog.csdn.net/a15732111571/article/details/89570865
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
優點:
數據冗余,硬件容錯
適合存儲大文件
處理流式數據
可構建在廉價機器上
缺點:
不能低延遲的數據訪問
不適合存儲小文件(原因及解決方法:存儲每份數據文件對應一個元數據,多份文件需要存儲多份元數據,耗費進程,解決方法:Hadoop Archive 將小文件打包成xxx.har,對於hadoop只有一份元數據,每個文件的名字由har自管理)