1. 程式人生 > 其它 >第九章 HDFS概述

第九章 HDFS概述

一、HDFS產生的背景

隨著資料量越來越大,在一個作業系統存不下所有的資料,那麼就分配到更多的作業系統管理的磁碟中,但是不方便管理和維護,迫切需要一種系統來管理多臺機器上的檔案,這就是分散式檔案管理系統。HDFS只是分散式檔案管理系統中的一種。

二、HDFS的定義

HDFS(Hadoop Distributed File System),它是一個檔案系統,用於儲存檔案,通過目錄樹來定位檔案;其次,它是分散式的,由很多伺服器聯合起來實現其功能,叢集中的伺服器有各自的角色。

HDFS的使用場景:適合一次寫入,多次讀出的場景。一個檔案經過建立、寫入和關閉之後就不需要改變。

三、HDFS的優缺點

1.HDFS優點

#1.高容錯性
➢資料自動儲存多個副本。它通過增加副本的形式,提高容錯性。
➢某一個副本丟失以後,它可以自動恢復。

#2.適合處理大資料
➢資料規模:能夠處理資料規模達到GB、TB、甚至PB級別的資料;
➢檔案規模:能夠處理百萬規模以上的檔案數量,數量相當之大。

#3.可構建在廉價機器上,通過多副本機制,提高可靠性。

2.HDFS缺點

#1.不適合低延時資料訪問,比如毫秒級的儲存資料,是做不到的。

#2.無法高效的對大量小檔案進行儲存。
➢儲存大量小檔案的話,它會佔用NameNode大量的記憶體來儲存檔案目錄和塊資訊。這樣是不可取的,因為NameNode的記憶體總是有限的;
➢小檔案儲存的定址時間會超過讀取時間,它違反了HDFS的設計目標。

#3.不支援併發寫入、檔案隨機修改。
➢一個檔案只能有一個寫,不允許多個執行緒同時寫;
➢僅支援資料append (追加),不支援檔案的隨機修改。

四、 HDFS組成架構

#1.NameNode (nn) :就是Master, 它是一個主管、管理者。
➢管理HDFS的名稱空間;
➢配置副本策略;
➢管理資料塊(B1ock) 對映資訊;
➢處理客戶端讀寫請求。

#2.DataNode: 就是Slave。NameNode下達命令, DataNode執行 實際的操作。
➢儲存實際的資料塊;
➢執行資料塊的讀/寫操作。

#3.Client: 就是客戶端。
➢檔案切分。檔案上同HDFS的時候,Client將檔案切分成一個一個的Block, 然局進行上傳;
➢與NameNode互動, 獲取檔案的位置資訊;
➢與DataNode互動,讀取或者寫入資料;
➢Client提供一些命令來管理HDFS, 比如NameNode格式化;
➢Client可以通過一些命令來訪問HDFS,比如對HDFS增刪改查操作;

#4.Secondary NameNode:並非NameNode的熱備。當NameNode掛掉的時候, 它並不能馬上昔換NameNode並提供服務.
➢輔助NameNode,分擔其工作量,比如定期合併simage和Edits,並推送臺NameNode;
➢在緊急情況下,可輔助恢復NameNode.

五、HDFS檔案塊大小

HDFS中的檔案在物理上是分塊儲存(B1ock)塊的大小可以通過配置引數(dfs blocksize)來規定,預設大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M。
#1.思考:為什麼塊的大小不能設定太小,也不能設定太大?
➢HDFS的塊設定太小,會增加定址時間,程式一直在找塊的開始位置;
➢如果塊設定的太大,從磁碟傳輸資料的時間會明顯大於定位這個塊開始位置所需的時間。導致程式在處理這塊資料時,會非常慢。

總結: HDFS塊的大小設定主要取決於磁碟傳輸速率。