十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章將為大家詳細(xì)講解有關(guān)HDFS的工作原理是什么,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
為企業(yè)提供做網(wǎng)站、成都做網(wǎng)站、網(wǎng)站優(yōu)化、成都全網(wǎng)營(yíng)銷、競(jìng)價(jià)托管、品牌運(yùn)營(yíng)等營(yíng)銷獲客服務(wù)。創(chuàng)新互聯(lián)擁有網(wǎng)絡(luò)營(yíng)銷運(yùn)營(yíng)團(tuán)隊(duì),以豐富的互聯(lián)網(wǎng)營(yíng)銷經(jīng)驗(yàn)助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營(yíng)銷獲客難題,做到“讓獲客更簡(jiǎn)單”。自創(chuàng)立至今,成功用技術(shù)實(shí)力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營(yíng)銷”三大難題,同時(shí)降低了營(yíng)銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認(rèn)可!
HDFS的工作原理
HDFS支持在計(jì)算節(jié)點(diǎn)之間快速傳輸數(shù)據(jù)。在開(kāi)始階段,它與MapReduce緊密耦合——MapReduce是一個(gè)用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算的編程框架。
當(dāng)HDFS接收數(shù)據(jù)時(shí),會(huì)將信息分解為單獨(dú)的塊,并將它們分布到集群中的不同節(jié)點(diǎn),從而支持高效的并行處理。
此外,HDFS專門(mén)設(shè)計(jì)有高容錯(cuò)的特性。HDFS可以多次復(fù)制每個(gè)數(shù)據(jù)片段,并將副本分發(fā)給各個(gè)節(jié)點(diǎn),將至少一個(gè)副本放在其他服務(wù)器機(jī)架上。因此,在集群中的其他地方也可以找到崩潰節(jié)點(diǎn)上的數(shù)據(jù)。這確保了在恢復(fù)數(shù)據(jù)時(shí)可以繼續(xù)進(jìn)行處理。
HDFS使用主/從架構(gòu)。在其最初版本中,每個(gè)Hadoop集群由一個(gè)NameNode(用于管理文件系統(tǒng)運(yùn)行)和支持DataNode(用于管理單個(gè)計(jì)算節(jié)點(diǎn)上的數(shù)據(jù)存儲(chǔ))組成。這些HDFS元素結(jié)合起來(lái),可支持具有大數(shù)據(jù)集的應(yīng)用程序。
這個(gè)主節(jié)點(diǎn)“數(shù)據(jù)分塊”架構(gòu),從谷歌文件系統(tǒng)(GFS)以及IBM的通用并行文件系統(tǒng)(GPFS)中吸取了部分設(shè)計(jì)指導(dǎo)元素。GFS是一個(gè)可擴(kuò)展的分布式文件系統(tǒng),用于大型的、分布式的、對(duì)大量數(shù)據(jù)進(jìn)行訪問(wèn)的應(yīng)用。它運(yùn)行于廉價(jià)的普通硬件上,并提供容錯(cuò)功能,可以給大量的用戶提供總體性能較高的服務(wù)。GPFS是一種專門(mén)為集群環(huán)境設(shè)計(jì)的高性能、可擴(kuò)展的并行文件系統(tǒng),可以在集群中的多個(gè)節(jié)點(diǎn)間實(shí)現(xiàn)對(duì)共享文件系統(tǒng)中文件的快速存取操作,并提供穩(wěn)定的故障恢復(fù)和容錯(cuò)機(jī)制。此外,雖然HDFS不是與可移植操作系統(tǒng)接口(POSIX)的模型兼容的,但它在某些方面也與POSIX設(shè)計(jì)風(fēng)格相呼應(yīng)。
HDFS架構(gòu)圖-應(yīng)用程序通過(guò)Client與NameNode和DataNode進(jìn)行交互
為什么要使用HDFS
HDFS最早出自雅虎,用于滿足該公司廣告服務(wù)和搜索引擎的部分需求。與其他面向Web的公司一樣,雅虎發(fā)現(xiàn)自己需要處理的應(yīng)用程序的用戶訪問(wèn)越來(lái)越多,而這些用戶正在產(chǎn)生越來(lái)越多的數(shù)據(jù)。后來(lái),F(xiàn)acebook、eBay和Twitter等公司也開(kāi)始使用HDFS作為大數(shù)據(jù)分析的基礎(chǔ),來(lái)解決相同的需求。
但HDFS的用途遠(yuǎn)不止于此。上述所提到的大規(guī)模Web搜索,我們可以將其歸類于數(shù)據(jù)密集型并行計(jì)算。此外,HDFS也常用于計(jì)算密集型并行計(jì)算應(yīng)用場(chǎng)景,如氣象計(jì)算。在數(shù)據(jù)密集與計(jì)算密集混合型場(chǎng)景中也多有應(yīng)用,如3D建模與渲染。HDFS也是許多開(kāi)源數(shù)據(jù)倉(cāng)庫(kù)(有時(shí)稱為數(shù)據(jù)湖,Data Lake)的核心。
HDFS通常用于大規(guī)模部署,因?yàn)樗邆湟粋€(gè)重要特性,就是可運(yùn)行在普通廉價(jià)機(jī)器上。還有,例如運(yùn)行Web搜索和相關(guān)應(yīng)用程序的這種系統(tǒng),往往需要可以擴(kuò)展到數(shù)百PB和數(shù)千個(gè)節(jié)點(diǎn),因此系統(tǒng)必須擁有易于擴(kuò)展的特性,這正是HDFS所具備的。此外,服務(wù)器故障在這種規(guī)模下很常見(jiàn),HDFS所提供的容錯(cuò)能力在這方面也很有實(shí)際價(jià)值。
不適用于HDFS的場(chǎng)景
首先,HDFS不適用于對(duì)延遲要求較高的場(chǎng)景,如實(shí)時(shí)查詢。在延遲方面,HDFS沒(méi)有充分的優(yōu)勢(shì)。其次,HDFS也難以支持大量小文件的存儲(chǔ)。在Hadoop系統(tǒng)中,通常將“小文件”定義為遠(yuǎn)小于HDFS的block size(默認(rèn)64MB)的文件,由于每個(gè)文件都會(huì)產(chǎn)生各自的MetaData元數(shù)據(jù),Hadoop通過(guò)Namenode來(lái)存儲(chǔ)這些信息,若小文件過(guò)多,容易導(dǎo)致占用大量NameNode內(nèi)存,也會(huì)使尋道時(shí)間超過(guò)讀取時(shí)間,為系統(tǒng)帶來(lái)性能瓶頸。
此外,HDFS不支持多用戶寫(xiě)入,也無(wú)法進(jìn)行文件隨機(jī)修改。僅支持以append的方式,即通過(guò)追加的方式添加到文件結(jié)尾處。HDFS適用于存儲(chǔ)半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),若有數(shù)據(jù)嚴(yán)格的結(jié)構(gòu)化特性,強(qiáng)行采用HDFS是不合適的。最后,HDFS適用于TB、PB級(jí)的大數(shù)據(jù)處理,文件數(shù)量通常在百萬(wàn)以上,如果數(shù)據(jù)量很小,完全沒(méi)有必要采用HDFS。
HDFS和Hadoop的歷史
這里簡(jiǎn)要說(shuō)一些關(guān)鍵的時(shí)間節(jié)點(diǎn)。2006年,Apache Hadoop項(xiàng)目正式啟動(dòng),HDFS和MapReduce開(kāi)始獨(dú)立發(fā)展。該軟件開(kāi)始廣泛應(yīng)用于各行各業(yè)的大數(shù)據(jù)分析項(xiàng)目中。2012年,HDFS和Hadoop版本1.0發(fā)布。
2013年Hadoop 2.0版本加入了通用YARN資源管理器,MapReduce和HDFS有效解耦。此后,Hadoop支持各種數(shù)據(jù)處理框架和文件系統(tǒng)。雖然MapReduce經(jīng)常被Apache Spark所替代,但HDFS仍然是Hadoop的一種流行的文件格式。
在發(fā)布了四個(gè)alpha版本和一個(gè)beta版本之后,Apache Hadoop 3.0.0在2017年12月開(kāi)始普遍可用,HDFS增強(qiáng)支持額外的NameNode、擦除編碼工具和更大的數(shù)據(jù)壓縮。與此同時(shí),HDFS工具,如LinkedIn的開(kāi)源Dr. Elephant和Dynamometer 性能測(cè)試工具的進(jìn)步,也使HDFS能夠支持更進(jìn)一步的開(kāi)發(fā)實(shí)現(xiàn)。
關(guān)于“HDFS的工作原理是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。