本文主要介紹視頻詳細(xì)講解hdfs的工作機(jī)制和原理(hdfs的工作機(jī)制和原理詳細(xì)是什么),下面一起看看視頻詳細(xì)講解hdfs的工作機(jī)制和原理(hdfs的工作機(jī)制和原理詳細(xì)是什么)相關(guān)資訊。
大家好,我 m大d。
今天,我 我要和大家分享的是關(guān)于大數(shù)據(jù)引入的學(xué)習(xí)內(nèi)容,技術(shù)棧——hadoop。
為了解決大數(shù)據(jù)中海量數(shù)據(jù)的存儲(chǔ)和計(jì)算問(wèn)題,hadoop提供了一套分布式系統(tǒng)基礎(chǔ)設(shè)施,其核心內(nèi)容包括hdfs (hadoop分布式文件系統(tǒng))、mapreduce計(jì)算引擎和yarn(另一種資源協(xié)商器)統(tǒng)一資源管理和調(diào)度。
隨著大數(shù)據(jù)技術(shù)的更新迭代,hadoop不再是單獨(dú)的技術(shù),而是大數(shù)據(jù)處理的生態(tài)系統(tǒng),如下圖所示。
除了上面提到的hadoop的三大核心組件,還有數(shù)據(jù)采集工具sqoop和flume,可以將海量數(shù)據(jù)提取到hadoop平臺(tái)進(jìn)行后續(xù)的大數(shù)據(jù)分析;zookeeper可以保證hadoop集群在部分節(jié)點(diǎn)宕機(jī)的情況下依然可靠運(yùn)行(干貨總結(jié)!獲得動(dòng)物園管理員在一篇文章中,你不 面試不用背八股(文末發(fā)pdf基于hadoop計(jì)算平臺(tái)的大數(shù)據(jù)技術(shù)框架,如數(shù)據(jù)倉(cāng)庫(kù)hive、流計(jì)算風(fēng)暴、數(shù)據(jù)挖掘工具mahout、分布式數(shù)據(jù)庫(kù)hbase等。
hdfshdfs (hadoop分布式文件系統(tǒng))是google公司gfs論文思想的實(shí)現(xiàn),也作為hadoop的存儲(chǔ)系統(tǒng),包括客戶端、元數(shù)據(jù)節(jié)點(diǎn)、備份節(jié)點(diǎn)和數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)。
cli:元數(shù)據(jù)是管理和維護(hù)hdfs的命名空間,以fsimage和editlog的形式存儲(chǔ)在本地磁盤上,可以記錄客戶端在hdfs上的各種操作,如修改時(shí)間、訪問(wèn)時(shí)間、塊信息等。監(jiān)控和管理datanode:負(fù)責(zé)監(jiān)控集群中datanode的健康狀態(tài)。一旦發(fā)現(xiàn)某個(gè)datanode出現(xiàn)故障,就會(huì)將其從hdfs集群中刪除,并且該datanode的數(shù)據(jù)會(huì)再次備份到其他datanode上(此過(guò)程稱為數(shù)據(jù)重新平衡,即重新平衡),以確保數(shù)據(jù)副本的完整性和集群的高可用性。secondarynamenode是namenode元數(shù)據(jù)的備份。namenode關(guān)閉后,輔助namenode將接管namenode 的工作,并負(fù)責(zé)整個(gè)集群的管理。而且為了可靠,secondarynamenode和namenode運(yùn)行在不同的機(jī)器上,secondarynamenode的內(nèi)存和namenode一樣大。
同時(shí),為了減輕namenode的壓力,namenode不會(huì)自動(dòng)合并hdfs的元數(shù)據(jù)圖像文件(fsimage)和編輯日志(editlog),而是將任務(wù)留給secondarynamenode,合并后將結(jié)果發(fā)送給namenode,然后將合并后的結(jié)果存儲(chǔ)到本地磁盤。
存儲(chǔ)在hdfs上的datanode文件由數(shù)據(jù)塊組成,所有這些數(shù)據(jù)塊都存儲(chǔ)在datanode節(jié)點(diǎn)上。datanode負(fù)責(zé)具體的數(shù)據(jù)存儲(chǔ),定期向namenode上報(bào)數(shù)據(jù)的元信息,并在namenode的指導(dǎo)下完成數(shù)據(jù)的i/o操作。
其實(shí)在datanode上,一個(gè)數(shù)據(jù)塊就是一個(gè)普通的文件,可以在datanode存儲(chǔ)塊對(duì)應(yīng)的目錄下看到(默認(rèn)在$(dfs.data.dir)/current的子目錄下)。塊名為blk_id,大小可以通過(guò)dfs.blocksize設(shè)置,默認(rèn)為128mb。
初始化時(shí),集群中的每個(gè)datanode都會(huì)以block report的形式向namenode報(bào)告當(dāng)前存儲(chǔ)在該節(jié)點(diǎn)中的block信息。當(dāng)集群正常工作時(shí),datanode仍然會(huì)定期向namenode報(bào)告最新的block信息,同時(shí)進(jìn)行連接。接受namenode的指令,例如在本地磁盤上創(chuàng)建、移動(dòng)或刪除數(shù)據(jù)塊。
hdfs數(shù)據(jù)副本hdfs文件系統(tǒng)在設(shè)計(jì)之初就充分考慮了容錯(cuò)的問(wèn)題,將同一個(gè)數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù)副本(副本數(shù)量可以設(shè)置,默認(rèn)為3個(gè))存儲(chǔ)在幾個(gè)不同的datanode上。一個(gè)datanode節(jié)點(diǎn)關(guān)閉后,hdfs將從備份節(jié)點(diǎn)讀取數(shù)據(jù)。這種容錯(cuò)機(jī)制可以很好地實(shí)現(xiàn)即使節(jié)點(diǎn)失效,數(shù)據(jù)也不會(huì)丟失。
hdfs namenode工作機(jī)制namenode工作機(jī)制縮寫為nn。
nn啟動(dòng)時(shí),會(huì)將鏡像文件(fsimage)和編輯日志(editlog)加載到內(nèi)存中;客戶端發(fā)送添加、刪除、修改、查詢等操作請(qǐng)求;nn將記錄操作,滾動(dòng)日志,然后在內(nèi)存中處理操作。secondarynamenode的工作機(jī)理簡(jiǎn)稱為2nn。
當(dāng)編輯的日志數(shù)據(jù)達(dá)到一定量或每隔一定時(shí)間,就會(huì)觸發(fā)2nn向nn發(fā)送檢查點(diǎn)請(qǐng)求;如果發(fā)送的請(qǐng)求有響應(yīng),2nn會(huì)請(qǐng)求執(zhí)行檢查點(diǎn)請(qǐng)求;2nn會(huì)引導(dǎo)nn滾動(dòng)更新編輯日志,并將編輯日志復(fù)制到2nn中;像編輯日志一樣將鏡像文件復(fù)制到2nn的本地檢查點(diǎn)目錄;2nn將圖像文件導(dǎo)入內(nèi)存,回放編輯日志并合并到新的fsimage.ckpt中;;壓縮fsimage.ckpt并寫入本地磁盤;2nn向nn發(fā)送fsimage.ckptnn會(huì)用新的fsimage.ckpt文件替換原來(lái)的fsimage,然后直接加載并啟用該文件。在hdfs文件的讀取過(guò)程中,客戶端調(diào)用filesystem對(duì)象的open方法,實(shí)際獲得一個(gè)distributedfilesystem實(shí)例;向namenode發(fā)送讀取文件的請(qǐng)求,然后namenode返回文件數(shù)據(jù)塊所在的datanode列表(按照客戶端到datanode網(wǎng)絡(luò)拓?fù)涞木嚯x排序),還返回一個(gè)文件系統(tǒng)fsdatainputstream對(duì)象;客戶端調(diào)用read方法時(shí),會(huì)找出最近的datanode并連接;數(shù)據(jù)不斷從datanode流向客戶端。hdfs文件寫入過(guò)程客戶端通過(guò)調(diào)用distributedfilesystem的create方法創(chuàng)建一個(gè)新文件。文件;distributedfilesystem向namenode發(fā)送文件寫請(qǐng)求,此時(shí)namenode會(huì)做各種檢查,比如文件是否存在,客戶端是否有權(quán)限創(chuàng)建等等。如果驗(yàn)證失敗,將引發(fā)i/o異常。如果驗(yàn)證通過(guò),namenode會(huì)將操作寫入編輯日志并返回一個(gè)可寫的datanode列表,同時(shí)還會(huì)返回文件系統(tǒng)fsdataoutputstream的對(duì)象;收到可寫列表后,客戶端會(huì)調(diào)用write方法將文件分成固定大小的數(shù)據(jù)包,并排列在數(shù)據(jù)隊(duì)列中。數(shù)據(jù)隊(duì)列中的數(shù)據(jù)包被寫入第一個(gè)datanode,然后第一個(gè)datanode將數(shù)據(jù)包發(fā)送到第二個(gè)datanode,依此類推。datanode收到數(shù)據(jù)后會(huì)返回確認(rèn)信息,收到datanode的所有確認(rèn)信息后寫操作完成。最后,更多圖解大數(shù)據(jù)技術(shù)的干貨文章,關(guān)注官方賬號(hào):數(shù)據(jù)節(jié)拍,回復(fù):圖文系列。另外,非常歡迎大家掃描下方二維碼,加我vx: abox _ 0226,并備注 加入團(tuán)體 。關(guān)于大數(shù)據(jù)技術(shù)的問(wèn)題將在小組中一起討論。
標(biāo)簽:
數(shù)據(jù)節(jié)點(diǎn)
了解更多視頻詳細(xì)講解hdfs的工作機(jī)制和原理(hdfs的工作機(jī)制和原理詳細(xì)是什么)相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。