什麼是 HDFS?(Hadoop 分散式檔案系統)
概要: 說明什麼是 HDFS (Hadoop 分散式檔案系統)。本文亦說明如何使用 HDFS 並提供範例。
手順
什麼是 HDFS?(Hadoop 分散式檔案系統)
事實
Hadoop 分散式檔案系統
解答
關於 Hadoop 分散式檔案系統 (HDFS)
若要瞭解如何將 Hadoop® 叢集擴充至數百 (甚至數千) 個節點,您必須從 Hadoop 分散式檔案系統 (HDFS) 開始。Hadoop
叢集中的資料會劃分為較小的部分 (稱為區塊),並分散到整個叢集。如此一來,您就可以在大型資料集的較小子集上執行對應和減少功能,進而提供大資料處理所需的擴充能力。
目標是什麼?
Hadoop 的目標是在非常大型的叢集中使用常用的伺服器,其中每個伺服器都有一組便宜的內部磁片磁碟機。為了獲得更高的效能,MapReduce
會嘗試將工作負載指派給儲存要處理資料的伺服器。這稱為資料當地語系化。(因為此原則,不建議在 Hadoop 環境中使用儲存區域網路 (SAN) 或網路連接儲存裝置 (NAS)。若為使用 SAN 或 NAS 的 Hadoop 部署,額外的網路通訊額外負荷可能會導致效能瓶頸,尤其是大型叢集。)現在請花點時間思考 1000 部機器叢集,其中每台機器都有三個內部磁片磁碟機;然後,考慮由 3000 部平價磁片磁碟機和 1000 部平價伺服器所組成的叢集故障率!
我們可能已位於此處的同一頁:這個元件代表您要在 Hadoop 叢集中遇到的失敗時間 (MTTF) 可能類似于孩童外套上的拉鍊:它將會失敗 (而且從商業上來說,只有當您真正需要它們時,拉鍊似乎才會失敗)。關於 Hadoop,最清楚的是,與不經濟實惠的硬體相關聯的 MTTF 速率實在是清楚了 (如果可以的話,這是設計點),而 Hadoop 的優點之一是它具備內建的容錯能力和錯誤補償功能。HDFS 亦相同,因為資料會分為區塊,且這些區塊的副本會儲存在 Hadoop 叢集中的其他伺服器上。也就是個別檔案實際上會以較小的區塊儲存,並在整個叢集中的多個伺服器上複製。
HDFS 範例
想起一個檔案,其中包含適用于美國所有人的電話號碼;姓氏起始為 A 的人員,可能會儲存在伺服器 1、B 伺服器 2 上,依此類而定。在 Hadoop 環境中,此電話簿的一部分會儲存在叢集中,若要重建整個電話簿,您的程式需要叢集中每個伺服器的區塊。為了在元件故障時達到可用性,HDFS 預設會將這些較小的零件複製到兩個額外的伺服器上。(此備援可根據每個檔案或整體環境增加或減少;例如,開發 Hadoop 叢集通常不需要任何資料備援。)此備援提供多種優點,最明顯的是更高的可用性。
此外,此備援可讓 Hadoop 叢集拆分作業到較小的區塊,並在叢集中的所有伺服器上執行這些工作,以獲得更好的擴充能力。最後,您將享有資料當地語系化的優點,這對於處理大型資料集至關重要。本章稍後我們將詳述這些重要優勢。