詳解HDFS入門
導讀 | HDFS(Hadoop Distributed File System)是hadoop生態系統的一個重要組成部分,是Hadoop中的的儲存元件,在整個Hadoop中的地位非同一般,也是最基礎的一部分,因為它涉及到資料儲存,MapReduce等計算模型都要依賴於儲存在HDFS中的資料。 |
作為Hadoop生態系統的一個重要組成部分,其存在不可或缺,基礎的才是最重要的,而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檔案大小是GB到TB的級別。所以,HDFS被調整成支援大檔案。它應該提供很高的聚合資料頻寬,一個叢集中支援數百個節點,一個叢集中還應該支援千萬級別的檔案。
大部分 HDFS 應用對檔案要求的是 write-one-read-many訪問模型。一個檔案一旦建立、寫入、關閉之後就不需要修改了。這一假設簡化了資料一致性問題,使高吞吐量的資料訪問成為可能。
移動計算的代價比之移動資料的代價低。一個應用請求的計算,離它操作的資料越近就越高效,這在資料達到海量級別的時候更是如此。將計算移動到資料附近,比之將資料移動到應用所在顯然更好。
在異構的硬體和軟體平臺上的可移植性,這將推動需要大資料集的應用更廣泛地採用 HDFS 作為平臺。
以下有幾個較為重要的概念需要介紹下:
- (1)超大檔案。目前的hadoop叢集能夠儲存幾百TB甚至PB級的資料。
- (2)流式資料訪問。HDFS的訪問模式是:一次寫入,多次讀取,更加關注的是讀取整個資料集的整體時間。
- (3)商用硬體。HDFS叢集的裝置不需要多麼昂貴和特殊,只要是一些日常使用的普通硬體即可,正因為如此,hdfs節點故障的可能性還是很高的,所以必須要有機制來處理這種單點故障,保證資料的可靠。
- (4)不支援低時間延遲的資料訪問。hdfs關心的是高資料吞吐量,不適合那些要求低時間延遲資料訪問的應用。
- (5)單使用者寫入,不支援任意修改。hdfs的資料以讀為主,只支援單個寫入者,並且寫操作總是以新增的形式在文末追加,不支援在任意位置進行修改。
1.資料量巨大,磁碟開始很糾結的處理我們需要的海量資訊。所以需要檔案系統有大規模資料分佈儲存能力。
2.讀取一塊磁碟的所有資料需要很長時間,寫入更是需要更長時間(寫入時間一般是讀取時間的3倍)即使有檔案為1ZB,或者小點10EB時,這樣的磁碟也無法做到隨讀隨取。所以需要檔案系統有高併發訪問能力。
3.當資料集的大小超過一臺 獨立物理計算機的儲存能力時,就有必要對它進行分割槽並儲存到若干臺單獨的計算機上。
4.從概念圖上看,分佈化的檔案系統會因為分佈後的結構不完整,導致系統複雜度加大,並且引入的網路程式設計,同樣導致分散式檔案系統更加複雜。所以需要強大的容錯能力。
5.HDFS解決以上方案是分片冗餘,本地校驗,需要資料塊儲存模式資料冗餘式儲存,直接將多份的分片檔案交給分片後的儲存伺服器去校驗。冗餘後的分片檔案還有個額外功能,只要冗餘的分片檔案中有一份是完整的,經過多次協同調整後,其他分片檔案也將完整。
經過協調校驗,無論是傳輸錯誤,I/O錯誤,還是個別伺服器當機,整個系統裡的檔案是完整的。
6.分佈後的檔案系統有個無法迴避的問題,因為檔案不在一個磁碟導致讀取訪問操作的延時,這個是HDFS現在遇到的主要問題。
現階段,HDFS的配置是按照高資料吞吐量最佳化的,可能會以高時間延時為代價。但萬幸的是,HDFS是具有很高彈性,可以針對具體應用再最佳化。
總結就是:可以實現負載均衡、提高響應效率,因為多個伺服器可以同時服務,提高了效率。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2770068/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Hadoop入門(二)之 HDFS 詳細解析Hadoop
- HDFS入門概述
- HDFS的詳解(一)
- HDFS短路讀詳解
- HDFS balance策略詳解
- Logstash讀取Kafka資料寫入HDFS詳解Kafka
- lambda 的入門詳解
- Anaconda 使用入門詳解
- Hadoop 基礎之 HDFS 入門Hadoop
- Hadoop的HDFS架構入門Hadoop架構
- Hadoop 入門筆記—核心元件 HDFSHadoop筆記元件
- Solon詳解(一)- 快速入門
- Redis入門--進階詳解Redis
- Spring入門之IOC詳解Spring
- Logback 快速入門 / 使用詳解
- HDFS HA 高可用機制詳解
- Hadoop配置hdfs-site.xml詳解HadoopXML
- Flutter 入門 — Container 屬性詳解FlutterAI
- Vue入門—事件與方法詳解Vue事件
- 詳解安卓架構入門安卓架構
- 卡特蘭(Catalan)數入門詳解
- spring-boot入門程式詳解Springboot
- Go 中的 gRPC 入門詳解GoRPC
- 詳解前端HTTP協議入門教程前端HTTP協議
- Next.js 入門超詳解教程JS
- 樹莓派入門操作流程詳解樹莓派
- Springboot mini - Solon詳解(一)- 快速入門Spring Boot
- 架構師入門必看系列,分散式檔案系統HDFS解讀架構分散式
- 專題一之Spring Boot入門詳解Spring Boot
- 新手入門,webpack入門詳細教程Web
- Hadoop框架:HDFS讀寫機制與API詳解Hadoop框架API
- 圖文詳解 HDFS 的工作機制及其原理
- webpack4.x最詳細入門講解Web
- gitbook 入門教程之常用命令詳解Git
- Springboot是什麼?Springboot詳解!入門介紹Spring Boot
- Python入門小專案-氣泡排序詳解Python排序
- Jaeger Client Go 鏈路追蹤|入門詳解clientGo
- Python程式設計入門基礎語法詳解Python程式設計