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