<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


        1.客戶端或者用戶通過調(diào)用FileSystem對(duì)象的Open()方法打開需要讀取的文件,這時(shí)就是HDSF分布式系統(tǒng)所獲取的一個(gè)對(duì)象

        2.FileSystem通過遠(yuǎn)程協(xié)議調(diào)用NameNode確定文件的前幾個(gè)Block的位置,對(duì)于每一個(gè)block,NameNode返回一個(gè)含有Block的元數(shù)據(jù)信息,接下來DataNode按照上面定義的距離(offSet偏移量)進(jìn)行排序,如果Client本身即是一個(gè)DataNode,那么就會(huì)優(yōu)先從本地DataNode節(jié)點(diǎn)讀取數(shù)據(jù).
      HDFS完成上面的工作之后返回一個(gè)FSDatalnputStream給客戶端,讓其從FSDatalnputStream中讀取。FSDatalnputStream包裝了一個(gè)類DFSInputStream,用來管理DataNode和NameNode的I/O操作。
        3.NameNode向客戶端返回一個(gè)包含了數(shù)據(jù)信息的地址,客戶端根據(jù)地址創(chuàng)建一個(gè)FSDDatalnputStream的對(duì)象開始進(jìn)行數(shù)據(jù)的讀取

        4.FSDatalnputStream根據(jù)開始存的前幾個(gè)Block的DataNode地址,連接到最近DataNode上對(duì)數(shù)據(jù)開始從頭讀取,客戶端會(huì)反復(fù)調(diào)用read()方法,以流的形式讀取DataNode這中的數(shù)據(jù)

        5.當(dāng)讀取到Block的結(jié)尾的時(shí)候,F(xiàn)SDatalnputStream會(huì)關(guān)閉當(dāng)前DataNode的連接然后查找能否讀取下一個(gè)Block的DataNode位置信息,此時(shí)給客戶端產(chǎn)生的感覺就是數(shù)據(jù)是連續(xù)讀取的,也就說在讀取的時(shí)候開始查找下一個(gè)塊所在的地址。讀取完成時(shí)需要使用close()方法關(guān)閉FSDatalnputStream
        HDFS寫流程:
        1.Client通過調(diào)用FileSystem類的Create()方法請(qǐng)求創(chuàng)建文件

        2.FileSystem通過對(duì)NameNode發(fā)出遠(yuǎn)程請(qǐng)求,在NameNode里面創(chuàng)建一個(gè)新的文件,但是此時(shí)并不關(guān)聯(lián)任何塊,NameNode進(jìn)行很多檢查來保證不存在要?jiǎng)?chuàng)建文件已經(jīng)在系統(tǒng)中,同時(shí)檢查是否有相當(dāng)權(quán)限來創(chuàng)建文件,如果這些都檢查完了,那么NamdNode會(huì)記錄下這個(gè)新文件的信息。FileSystem返回一個(gè)FSDatalnputStream給客戶端用來寫入數(shù)據(jù),F(xiàn)SDatalnputStream將包裝一個(gè)DFsOutputStream用于對(duì)DataNode和NameNode的通信,一旦文件創(chuàng)建失敗,會(huì)給客戶端返回一個(gè)l0Exception表示文件創(chuàng)建失敗并停止任務(wù)

        3.客戶端開始寫數(shù)據(jù)FSDatalnputStream把要寫的數(shù)據(jù)分成包的形式將其寫入到中間隊(duì)列中,其中的數(shù)據(jù)有DataStramer來讀取,DataStreamer的職責(zé)就是讓NameNode分配一個(gè)新的塊通過查找對(duì)應(yīng)DataNode來存數(shù)據(jù),來存儲(chǔ)的數(shù)據(jù)會(huì)被備份出一個(gè)副本,存儲(chǔ)到其他節(jié)點(diǎn)完成數(shù)據(jù)寫入即可

        4.FSDatalnputStream維護(hù)了一個(gè)內(nèi)部關(guān)于packets的隊(duì)列,里面存放著等待被DataNode確認(rèn)的信息,一旦數(shù)據(jù)信息寫入DataNode成功后,就會(huì)從隊(duì)列中移除

        5.當(dāng)數(shù)據(jù)完成寫入之后客戶會(huì)調(diào)用close方法,通過NameNode完成寫入之前通過一個(gè)方法flush將殘留數(shù)據(jù)一起寫進(jìn)去。和NameNode確定寫入的位置信息,并返回成功狀態(tài)。

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          艹b网站 www.操逼 | 女主播自己脱内衣全过程 | 国产又粗又硬又爽 | 亚洲一级成人 | 国产在线观看www | 丁香五月婷婷在线视频 | 九色porny丨精品自拍视频 | 九九九九九九精品 | 免费看日逼视频的网站 | 91承认视频在线观看 |