您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Hadoop文件讀取的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Hadoop文件讀取的示例分析”這篇文章吧。
客戶(hù)端通過(guò)調(diào)用FileSystem對(duì)象的open()方法來(lái)打開(kāi)希望讀取的文件,對(duì)于HDFS來(lái)說(shuō),這個(gè)對(duì)象是分布式系統(tǒng)(步驟1)的一個(gè)實(shí)例。DistributedFileSystem通過(guò)使用RPC來(lái)調(diào)用namenode,以確定文件起始?jí)K的位置(步驟2),對(duì)于每一個(gè)塊,namenode返回存有該塊復(fù)本的datanode地址,此外,這些datanode(比如,在一個(gè)MapReduce任務(wù)中),并保存有相應(yīng)數(shù)據(jù)庫(kù)的一個(gè)復(fù)本時(shí),該節(jié)點(diǎn)將本地datanode中讀取數(shù)據(jù)。DistributedFileSystem累返回一個(gè)FSDataInputStream對(duì)象(一個(gè)支持文件定位的輸入流)給客戶(hù)端并讀取數(shù)據(jù)。FSDataInputStream類(lèi)轉(zhuǎn)而封裝DFSInputStream對(duì)象,該對(duì)象管理著datanode和namenode的I/O,接著,客戶(hù)端對(duì)這個(gè)輸入流調(diào)用read()方法(步驟3)。存儲(chǔ)著文件起始?jí)K的datanode地址的DFSInputStream隨機(jī)連接距離最近的datanode。通過(guò)對(duì)數(shù)據(jù)流反復(fù)調(diào)用read()方法,可以將數(shù)據(jù)從datanode傳輸?shù)娇蛻?hù)端(步驟4).到達(dá)塊的末端時(shí),DFSInputStream會(huì)關(guān)閉與該datanode的連接,然后需找下一個(gè)塊的最近datanode(步驟5)??蛻?hù)端只需要讀取連續(xù)的流,并且操作對(duì)于客戶(hù)端都是透明的??蛻?hù)端從流中讀取數(shù)據(jù)時(shí),塊是按照打開(kāi)DFSInputStream與datanode新建連接的順序讀取的,它也需要詢(xún)問(wèn)namenode來(lái)檢索下一批所需快的datanode的位置,一旦客戶(hù)端完成讀取,就對(duì)FSDataInputStream調(diào)用close()方法(步驟6)。在讀取數(shù)據(jù)的時(shí)候,如果DFSInputStream在與datanode通信時(shí)遇到錯(cuò)誤,它便會(huì)嘗試從這個(gè)快的另外一個(gè)最領(lǐng)近datanode讀取數(shù)據(jù)。它也會(huì)機(jī)主那個(gè)故障datanode,以保證以后不會(huì)反復(fù)讀取該節(jié)點(diǎn)上后續(xù)的塊。DFSInputStream也會(huì)通過(guò)校驗(yàn)和確認(rèn)從datanode發(fā)來(lái)的數(shù)據(jù)是否完整。如果發(fā)現(xiàn)一個(gè)損壞的塊,它就會(huì)在DFSInputStream視圖從其他datanode讀取一個(gè)塊的復(fù)本之前通知namenode。這個(gè)設(shè)計(jì)的一個(gè)重點(diǎn)是:namenode告知客戶(hù)端每個(gè)塊中最近的datanode,并讓客戶(hù)端直接聯(lián)系該datanode且檢索鎖具。由于數(shù)據(jù)流分散在該集群中的所有datanode,所以這種設(shè)計(jì)能使HDFS可擴(kuò)展到大量的并發(fā)客戶(hù)端。同時(shí),namenode僅需要相應(yīng)塊位置的請(qǐng)求(這些信息存儲(chǔ)在內(nèi)存中,因而非常高效),而無(wú)需相應(yīng)數(shù)據(jù)請(qǐng)求,否則隨著客戶(hù)端數(shù)據(jù)的增長(zhǎng),namenode很快會(huì)變?yōu)橐粋€(gè)瓶頸。
以上是“Hadoop文件讀取的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。