詳解大數(shù)據(jù)開發(fā)-HDFS入門
今天帶來的是全新的章節(jié),大數(shù)據(jù)開發(fā)-HDFS,作為Hadoop生態(tài)系統(tǒng)的一個重要組成部分,其存在不可或缺,基礎(chǔ)的才是最重要的,而HDFS就是這樣一個存在。下面就開始HDFS的學習。
一、 HDFS介紹
HDFS(Hadoop Distributed File System)是hadoop生態(tài)系統(tǒng)的一個重要組成部分,是Hadoop中的的存儲組件,在整個Hadoop中的地位非同一般,也是最基礎(chǔ)的一部分,因為它涉及到數(shù)據(jù)存儲,MapReduce等計算模型都要依賴于存儲在HDFS中的數(shù)據(jù)。HDFS是一個分布式文件系統(tǒng),以流式數(shù)據(jù)訪問模式存儲超大文件,將數(shù)據(jù)分塊存儲到一個商業(yè)硬件集群內(nèi)的不同機器上。HDFS在最開始是作為Apache Nutch搜索引擎項目的基礎(chǔ)架構(gòu)而開發(fā)的。HDFS是Apache Hadoop Core項目的一部分。
分布式文件系統(tǒng)解決的問題就是大數(shù)據(jù)存儲。它們是橫跨在多臺計算機上的存儲系統(tǒng)。分布式文件系統(tǒng)在大數(shù)據(jù)時代有著廣泛的應用前景,它們?yōu)榇鎯吞幚沓笠?guī)模數(shù)據(jù)提供所需的擴展能力。
二、HDFS設(shè)計理念
硬件出現(xiàn)故障是常態(tài),而HDFS由成百上千的服務器組成,每一個組成部分都有可能出現(xiàn)故障。因此故障的檢測和自動快速恢復是HDFS的核心架構(gòu)目標。與一般的應用不同,HDFS上的應用主要是以流式讀取數(shù)據(jù)HDFS被設(shè)計成適合批量處理,而不是用戶交互式的。相較于數(shù)據(jù)訪問的反應時間,實際上更注重數(shù)據(jù)訪問的高吞吐量。典型的 HDFS文件大小是GB到TB的級別。所以,HDFS被調(diào)整成支持大文件。它應該提供很高的聚合數(shù)據(jù)帶寬,一個集群中支持數(shù)百個節(jié)點,一個集群中還應該支持千萬級別的文件。
大部分 HDFS 應用對文件要求的是 write-one-read-many訪問模型。一個文件一旦創(chuàng)建、寫入、關(guān)閉之后就不需要修改了。這一假設(shè)簡化了數(shù)據(jù)一致性問題,使高吞吐量的數(shù)據(jù)訪問成為可能。
移動計算的代價比之移動數(shù)據(jù)的代價低。一個應用請求的計算,離它操作的數(shù)據(jù)越近就越高效,這在數(shù)據(jù)達到海量級別的時候更是如此。將計算移動到數(shù)據(jù)附近,比之將數(shù)據(jù)移動到應用所在顯然更好。
在異構(gòu)的硬件和軟件平臺上的可移植性,這將推動需要大數(shù)據(jù)集的應用更廣泛地采用 HDFS 作為平臺。
三、概念介紹
以下有幾個較為重要的概念需要介紹下
(1)超大文件。目前的hadoop集群能夠存儲幾百TB甚至PB級的數(shù)據(jù)。
(2)流式數(shù)據(jù)訪問。HDFS的訪問模式是:一次寫入,多次讀取,更加關(guān)注的是讀取整個數(shù)據(jù)集的整體時間。
(3)商用硬件。HDFS集群的設(shè)備不需要多么昂貴和特殊,只要是一些日常使用的普通硬件即可,正因為如此,hdfs節(jié)點故障的可能性還是很高的,所以必須要有機制來處理這種單點故障,保證數(shù)據(jù)的可靠。
(4)不支持低時間延遲的數(shù)據(jù)訪問。hdfs關(guān)心的是高數(shù)據(jù)吞吐量,不適合那些要求低時間延遲數(shù)據(jù)訪問的應用。
(5)單用戶寫入,不支持任意修改。hdfs的數(shù)據(jù)以讀為主,只支持單個寫入者,并且寫操作總是以添加的形式在文末追加,不支持在任意位置進行修改。
四、為什么我們需要HDFS?
1.數(shù)據(jù)量巨大,磁盤開始很糾結(jié)的處理我們需要的海量信息。所以需要文件系統(tǒng)有大規(guī)模數(shù)據(jù)分布存儲能力。
2.讀取一塊磁盤的所有數(shù)據(jù)需要很長時間,寫入更是需要更長時間(寫入時間一般是讀取時間的3倍)即使有文件為1ZB,或者小點10EB時,這樣的磁盤也無法做到隨讀隨取。所以需要文件系統(tǒng)有高并發(fā)訪問能力。
3.當數(shù)據(jù)集的大小超過一臺獨立物理計算機的存儲能力時,就有必要對它進行分區(qū)并存儲到若干臺單獨的計算機上。
4.從概念圖上看,分布化的文件系統(tǒng)會因為分布后的結(jié)構(gòu)不完整,導致系統(tǒng)復雜度加大,并且引入的網(wǎng)絡(luò)編程,同樣導致分布式文件系統(tǒng)更加復雜。所以需要強大的容錯能力。
5.HDFS解決以上方案是分片冗余,本地校驗,需要數(shù)據(jù)塊存儲模式數(shù)據(jù)冗余式存儲,直接將多份的分片文件交給分片后的存儲服務器去校驗。冗余后的分片文件還有個額外功能,只要冗余的分片文件中有一份是完整的,經(jīng)過多次協(xié)同調(diào)整后,其他分片文件也將完整。
經(jīng)過協(xié)調(diào)校驗,無論是傳輸錯誤,I/O錯誤,還是個別服務器宕機,整個系統(tǒng)里的文件是完整的。
6.分布后的文件系統(tǒng)有個無法回避的問題,因為文件不在一個磁盤導致讀取訪問操作的延時,這個是HDFS現(xiàn)在遇到的主要問題。
現(xiàn)階段,HDFS的配置是按照高數(shù)據(jù)吞吐量優(yōu)化的,可能會以高時間延時為代價。但萬幸的是,HDFS是具有很高彈性,可以針對具體應用再優(yōu)化。
總結(jié)就是:可以實現(xiàn)負載均衡、提高響應效率,因為多個服務器可以同時服務,提高了效率。
以上就是本期的所有內(nèi)容了,Hadoop在大數(shù)據(jù)開發(fā)的學習當中,占據(jù)著相當重要的地位,相關(guān)知識點也會比較多,所以關(guān)于HDFS一定要好好理解,以免在后面學習Hadoop造成更多的困難。