詳解HDFS入門

大雄45發表於2021-04-27
導讀 HDFS(Hadoop Distributed File System)是hadoop生態系統的一個重要組成部分,是Hadoop中的的儲存元件,在整個Hadoop中的地位非同一般,也是最基礎的一部分,因為它涉及到資料儲存,MapReduce等計算模型都要依賴於儲存在HDFS中的資料。

作為Hadoop生態系統的一個重要組成部分,其存在不可或缺,基礎的才是最重要的,而HDFS就是這樣一個存在。下面就開始HDFS的學習。

一、 HDFS介紹

HDFS(Hadoop Distributed File System)是hadoop生態系統的一個重要組成部分,是Hadoop中的的儲存元件,在整個Hadoop中的地位非同一般,也是最基礎的一部分,因為它涉及到資料儲存,MapReduce等計算模型都要依賴於儲存在HDFS中的資料。HDFS是一個分散式檔案系統,以流式資料訪問模式儲存超大檔案,將資料分塊儲存到一個商業硬體叢集內的不同機器上。HDFS在最開始是作為Apache Nutch搜尋引擎專案的基礎架構而開發的。HDFS是Apache Hadoop Core專案的一部分。

分散式檔案系統解決的問題就是大資料儲存。它們是橫跨在多臺計算機上的儲存系統。分散式檔案系統在大資料時代有著廣泛的應用前景,它們為儲存和處理超大規模資料提供所需的擴充套件能力。

詳解HDFS入門詳解HDFS入門

二、HDFS設計理念

硬體出現故障是常態,而HDFS由成百上千的伺服器組成,每一個組成部分都有可能出現故障。因此故障的檢測和自動快速恢復是HDFS的核心架構目標。與一般的應用不同,HDFS上的應用主要是以流式讀取資料HDFS被設計成適合批次處理,而不是使用者互動式的。相較於資料訪問的反應時間,實際上更注重資料訪問的高吞吐量。典型的 HDFS檔案大小是GB到TB的級別。所以,HDFS被調整成支援大檔案。它應該提供很高的聚合資料頻寬,一個叢集中支援數百個節點,一個叢集中還應該支援千萬級別的檔案。

大部分 HDFS 應用對檔案要求的是 write-one-read-many訪問模型。一個檔案一旦建立、寫入、關閉之後就不需要修改了。這一假設簡化了資料一致性問題,使高吞吐量的資料訪問成為可能。

移動計算的代價比之移動資料的代價低。一個應用請求的計算,離它操作的資料越近就越高效,這在資料達到海量級別的時候更是如此。將計算移動到資料附近,比之將資料移動到應用所在顯然更好。

在異構的硬體和軟體平臺上的可移植性,這將推動需要大資料集的應用更廣泛地採用 HDFS 作為平臺。

詳解HDFS入門詳解HDFS入門

三、概念介紹

以下有幾個較為重要的概念需要介紹下:

  1. (1)超大檔案。目前的hadoop叢集能夠儲存幾百TB甚至PB級的資料。
  1. (2)流式資料訪問。HDFS的訪問模式是:一次寫入,多次讀取,更加關注的是讀取整個資料集的整體時間。
  1. (3)商用硬體。HDFS叢集的裝置不需要多麼昂貴和特殊,只要是一些日常使用的普通硬體即可,正因為如此,hdfs節點故障的可能性還是很高的,所以必須要有機制來處理這種單點故障,保證資料的可靠。
  1. (4)不支援低時間延遲的資料訪問。hdfs關心的是高資料吞吐量,不適合那些要求低時間延遲資料訪問的應用。
  1. (5)單使用者寫入,不支援任意修改。hdfs的資料以讀為主,只支援單個寫入者,並且寫操作總是以新增的形式在文末追加,不支援在任意位置進行修改。
四、為什麼我們需要HDFS?

1.資料量巨大,磁碟開始很糾結的處理我們需要的海量資訊。所以需要檔案系統有大規模資料分佈儲存能力。

2.讀取一塊磁碟的所有資料需要很長時間,寫入更是需要更長時間(寫入時間一般是讀取時間的3倍)即使有檔案為1ZB,或者小點10EB時,這樣的磁碟也無法做到隨讀隨取。所以需要檔案系統有高併發訪問能力。

3.當資料集的大小超過一臺 獨立物理計算機的儲存能力時,就有必要對它進行分割槽並儲存到若干臺單獨的計算機上。

4.從概念圖上看,分佈化的檔案系統會因為分佈後的結構不完整,導致系統複雜度加大,並且引入的網路程式設計,同樣導致分散式檔案系統更加複雜。所以需要強大的容錯能力。

5.HDFS解決以上方案是分片冗餘,本地校驗,需要資料塊儲存模式資料冗餘式儲存,直接將多份的分片檔案交給分片後的儲存伺服器去校驗。冗餘後的分片檔案還有個額外功能,只要冗餘的分片檔案中有一份是完整的,經過多次協同調整後,其他分片檔案也將完整。

經過協調校驗,無論是傳輸錯誤,I/O錯誤,還是個別伺服器當機,整個系統裡的檔案是完整的。

6.分佈後的檔案系統有個無法迴避的問題,因為檔案不在一個磁碟導致讀取訪問操作的延時,這個是HDFS現在遇到的主要問題。

現階段,HDFS的配置是按照高資料吞吐量最佳化的,可能會以高時間延時為代價。但萬幸的是,HDFS是具有很高彈性,可以針對具體應用再最佳化。

總結就是:可以實現負載均衡、提高響應效率,因為多個伺服器可以同時服務,提高了效率。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2770068/,如需轉載,請註明出處,否則將追究法律責任。

相關文章