欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

HDFS的基本原理有哪些

HDFS的基本原理有哪些?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)南樂,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

1、NameNode概述

NameNode是HDFS的核心,相信這一點大家都知道,所以NameNode也被稱為Master。NameNode僅存儲HDFS的元數(shù)據(jù):文件系統(tǒng)中所有文件的目錄樹,并跟蹤整個集群中的文件。NameNode不存儲實際數(shù)據(jù)或數(shù)據(jù)集。數(shù)據(jù)本身實際存儲在DataNodes中。NameNode知道HDFS中任何給定文件的塊列表及其位置。使用此信息NameNode知道如何從塊中構(gòu)建文件。NameNode并不持久化存儲每個文件中各個塊所在的 DataNode的位置信息,這些信息會在系統(tǒng)啟動時從數(shù)據(jù)節(jié)點重建。NameNode對于HDFS至關(guān)重要,當(dāng)NameNode關(guān)閉時,HDFS / Hadoop集群無法訪問。總結(jié)一下,NameNode是Hadoop集群中的單點故障。NameNode所在機器通常會配置有大量內(nèi)存(RAM)。

2、DataNode概述

DataNode負(fù)責(zé)將實際數(shù)據(jù)存儲在HDFS中。DataNode也稱為Slave。NameNode和DataNode會保持不斷通信。DataNode啟動時,它將自己發(fā)布到NameNode并匯報自己負(fù)責(zé)持有的塊列表。當(dāng)某個DataNode關(guān)閉時,它不會影響數(shù)據(jù)或群集的可用性。NameNode將安排由其他DataNode管理的塊進(jìn)行副本復(fù)制。DataNode所在機器通常配置有大量的硬盤空間。因為實際數(shù)據(jù)存儲DataNode中。DataNode會定期向NameNode發(fā)送心跳,如果NameNode長時間沒有接受到DataNode發(fā)送的心跳, NameNode就會認(rèn)為該DataNode失效。block匯報時間間隔取參數(shù)dfs.blockreport.intervalMsec,參數(shù)未配置的話默認(rèn)為6小時。

3、HDFS的工作機制

NameNode負(fù)責(zé)管理整個文件系統(tǒng)元數(shù)據(jù);DataNode負(fù)責(zé)管理具體文件數(shù)據(jù)塊存儲;Secondary NameNode協(xié)助NameNode進(jìn)行元數(shù)據(jù)的備份。HDFS的內(nèi)部工作機制對客戶端保持透明,客戶端請求訪問HDFS都是通過向NameNode申請來進(jìn)行。HDFS寫數(shù)據(jù)流程和HDFS讀數(shù)據(jù)流程總結(jié)如下:

(1)HDFS寫數(shù)據(jù)流程

A.client發(fā)起文件上傳請求,通過RPC與NameNode建立通訊,NameNode檢查目標(biāo)文件是否已存在,父目錄是否存在,返回是否可以上傳;

B.client請求第一個block該傳輸?shù)侥男〥ataNode服務(wù)器上;

C.NameNode根據(jù)配置文件中指定的備份數(shù)量及副本放置策略進(jìn)行文件分配,返回可用的DataNode的地址,如:A、B、C;

D.client請求3臺DataNode中的一臺A上傳數(shù)據(jù)(本質(zhì)上是一個RPC調(diào)用,建立pipeline),A收到請求會繼續(xù)調(diào)用B,然后B調(diào)用C,將整個pipeline建立完成,后逐級返回client;

E.client開始往A上傳第一個block,以packet為單位(默認(rèn)64K),A收到一個packet就會傳給 B,B傳給 C;A每傳一個packet會放入一個應(yīng)答隊列等待應(yīng)答。

F.?dāng)?shù)據(jù)被分割成一個個packet數(shù)據(jù)包在pipeline上依次傳輸,在pipeline反方向上,逐個發(fā)送ack(命令正確應(yīng)答),最終由pipeline中第一個DataNode節(jié)點A將pipeline ack發(fā)送給client;

G.當(dāng)一個block傳輸完成之后,client再次請求NameNode上傳第二個block到服務(wù)器。

(2)HDFS讀數(shù)據(jù)流程

A、Client向 NameNode發(fā)起 RPC請求,來確定請求文件 block所在的位置;

B.NameNode會視情況返回文件的部分或者全部block列表,對于每個block,NameNode都會返回含有該block副本的DataNode地址;

C.這些返回的DN地址,會按照集群拓?fù)浣Y(jié)構(gòu)得出 DataNode與客戶端的距離,然后進(jìn)行排序,排序兩個規(guī)則:網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中距離 Client近的排靠前;心跳機制中超時匯報的DN狀態(tài)為STALE,這樣的排靠后;

D.Client選取排序靠前的DataNode來讀取block,如果客戶端本身就是DataNode,那么將從本地直接獲取數(shù)據(jù);

E.底層上本質(zhì)是建立Socket  Stream(FSDataInputStream),重復(fù)的調(diào)用父類DataInputStream的read方法,直到這個塊上的數(shù)據(jù)讀取完畢;

F.當(dāng)讀完列表的block后,若文件讀取還沒有結(jié)束,客戶端會繼續(xù)向NameNode獲取下一批的block列表;

G.讀取完一個block都會進(jìn)行checksum驗證,如果讀取DataNode時出現(xiàn)錯誤,客戶端會通知 NameNode,然后再從下一個擁有該block副本的DataNode繼續(xù)讀。

H.read方法是并行的讀取block信息,不是一塊一塊的讀取;NameNode只是返回Client請求包含塊的DataNode地址,并不是返回請求塊的數(shù)據(jù);

I.最終讀取來所有的block會合并成一個完整的最終文件。

看完上述內(nèi)容,你們掌握HDFS的基本原理有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站標(biāo)題:HDFS的基本原理有哪些
網(wǎng)頁URL:http://www.chinadenli.net/article30/pechso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google靜態(tài)網(wǎng)站品牌網(wǎng)站建設(shè)建站公司微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司