什麼是 Hadoop 分佈式文件系統 (HDFS)? 架構、功能和運營
已發表: 2020-02-03Hadoop 分佈式文件系統或 HDFS 是 Hadoop 的主要存儲系統。 它存儲在商品硬件上運行的大型數據文件。 該存儲系統具有可擴展性、易於擴展性和容錯性。
當一台物理機上存儲的數據過多時,就變成了將存儲分散到多台機器上,以避免數據丟失。 HDFS 就是這樣一種分佈式文件存儲系統,它管理跨許多物理機的存儲操作。 這是一個 HDFS 教程,可讓您更好地了解該系統的工作原理。 讓我們從它的架構開始。
目錄
HDFS 架構
Hadoop分佈式文件系統具有主從架構,包含以下組件:
- Namenode :它是同時擁有 namenode 軟件和 Linux/GNU 操作系統的商品硬件。 Namenode 軟件可以在商用硬件上順利運行,而不會遇到任何麻煩。 以namenode為組件的系統作為主服務器。 它執行的任務包括調節客戶端如何訪問文件、管理文件系統命名空間以及執行操作,包括打開、關閉和重命名目錄和文件。
- Datanode :它是一種商品硬件,包含數據節點軟件和 Linux/GNU 操作系統。 集群中的節點將始終具有與之關聯的數據節點。 這些節點負責管理商品硬件/系統的存儲。 數據節點執行的一些任務包括根據客戶端請求的讀/寫操作以及根據namenode給出的指令創建、複製和刪除塊。
- 塊:整個用戶數據存儲在 HDFS 文件中。 屬於特定文件系統的每個文件都分為一個或多個段,然後存儲為數據節點。 文件分成的文件段是塊。 因此,HDFS 能夠讀取或寫入的最小數據是一個塊。 最初,每個塊的大小為 64MB。 但是,這個大小可以根據 HDFS 配置的變化而增加。
HDFS 架構給出了 HDFS 工作的清晰和明確的畫面。 它由幾個數據節點組成,但只有一個名稱節點。 元數據存儲在namenode中,而這兩種節點的實際工作人員是datanode。 節點組織在不同的機架中,數據塊存儲在這些機架上,以提高容錯性和數據可靠性。 客戶端必須與名稱節點交互才能讀/寫文件。 集群有幾個使用本地磁盤存儲可用數據的數據節點。 Datanode 和 namenode 永遠保持聯繫。 Datanode 還負責使用複制功能將數據複製到不同的數據節點。
HDFS 中的讀寫操作發生在最小的級別,即塊級別。 數據複製的概念是 HDFS 工作方式的核心——在節點故障期間通過創建塊的副本並在整個集群中分佈這些副本來確保數據的高可用性。
HDFS 操作
HDFS 和 Linux 文件系統非常相似。 因此,HDFS 允許我們執行我們習慣於使用本地文件系統執行的所有操作——我們可以創建一個控制器、更改權限、複製文件,以及做更多的事情。 我們還擁有多種文件訪問權限,包括讀取、寫入和執行。

HDFS 中的讀取操作:如果要讀取存儲在 HDFS 中的文件,則必須與 namenode 交互。 如前所述,所有元數據都存儲在名稱節點中。 一旦您與 namenode 交互,它將為您提供存儲您要查找的文件的數據節點的地址。 然後,您可以與 namenode 提供地址的數據節點進行交互,然後從那裡讀取信息。
您與文件系統的 API 交互,它請求 namenode 共享塊地址。 在提供此信息之前,namenode 會運行檢查以確定您是否有權訪問此數據。 一旦完成此檢查,namenode 要么共享塊位置,要么由於限制拒絕訪問。
名稱節點為您提供了一種令牌形式,您需要將其顯示給相應的數據節點以訪問文件。 這是 HDFS 用來確保正確的人訪問數據的一種安全機制。 數據節點只會讓您在顯示令牌後讀取文件。


寫操作:寫操作遵循相同的初始模式。 您需要請求 namenode 讓您寫入數據。 作為回報,它將為您提供必須執行寫入操作的數據節點的位置。 完成此操作後,數據節點將開始在其他數據節點上複製這些寫入數據塊。 複製完成後,您將收到確認。 寫操作中的認證機制與讀操作相同。
HDFS 功能
- 可用性:HDFS 的高可用性帶來的文件系統並不多。 文件系統遵循一種在整個集群的數據節點(從屬)上以塊副本的形式複制數據的機制。 要訪問這些數據,您需要與包含他們正在尋找的信息塊的數據節點進行交互。
- 可靠性:Hadoop分佈式文件系統是一個高度可靠的數據存儲系統。 可以存儲在 HDFS 上的數據量以 PB 為單位。 它使用一個集群來存儲它的所有數據,這些數據被分開形成塊。 然後它使用集群的節點來存儲這些塊。
- 容錯性:此功能是 HDFS 在不如通常情況下有利的條件下的工作強度。 HDFS 可以像其他文件系統一樣容忍故障。 它可以保護您的數據免受任何不可預見的影響,即使在未來也是如此。 正如已經提到的,數據的複制是在不同的機器上完成的。 當這些機器中的任何一個停止工作時會發生什麼? 這可能是任何其他系統的重大問題,但不是 HDFS。 HDFS 允許您從任何其他也具有您正在尋找的數據塊的副本的機器訪問您的數據。 這稱為真正的容錯。
- 可擴展性:HDFS 使用集群中的不同節點來存儲數據。 當存儲需求增加時,您始終可以繼續擴展集群。 這是 HDFS 獨有的另一個功能。 文件分發系統為您提供了兩種擴展集群的機制——水平和垂直可擴展性。
- 複製:複製是一種將 HDFS 與其他存儲系統區分開來的功能。 複製可最大限度地減少由於不利事件(例如節點崩潰、硬件故障等)而導致的數據丟失實例。 複製過程定期在不同的機器上進行。 因此,如果機器出現故障,不會丟失數據。 您可以使用任何其他機器來獲取數據。
HDFS 目標
- 管理龐大的數據集:與其他文件分發系統不同,HDFS 具有管理具有大量數據集的應用程序所需的架構。 根據所討論數據集的規模,每個集群可以有數百個節點。
- 故障檢測和恢復:在檢測故障並適當處理故障方面,沒有多少人能勝過 HDFS。 大量有問題的商品硬件使 HDFS 面臨組件頻繁故障的風險。 然而,這並不是一個缺點。 處理此類商品硬件的每個系統都可能出現故障。 但是,問題仍然是系統是否擅長快速自動檢測這些故障並同時提供恢復。 HDFS當然是有能力的。
- 提高吞吐量: HDFS 有效地處理每個任務,因為實際計算是在數據本身附近進行的。 當我們處理龐大的數據集時,這一點尤其重要。 這種機制增加了吞吐量並顯著解決了網絡流量問題。
總而言之,我們想說的是,HDFS 可以以可靠的方式存儲大量數據,而不會感受到硬件故障的影響。 它還具有高度容錯性、高可用性和高度可擴展性。
要深入 Hadoop 並成為專家,請查看 upGrad 和 BITS Pilani 在大數據和分析方面的 PG 認證。 獲得實踐經驗,與行業專家、專業導師、BITS Pilani 校友身份等進行一對一的交流。
如果您有興趣了解有關大數據的更多信息,請查看我們的 PG 大數據軟件開發專業文憑課程,該課程專為在職專業人士設計,提供 7 多個案例研究和項目,涵蓋 14 種編程語言和工具,實用的動手操作研討會,超過 400 小時的嚴格學習和頂級公司的就業幫助。
從世界頂級大學在線學習軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。