HDFS讀寫原理代碼簡(jiǎn)單實(shí)現(xiàn)

      網(wǎng)友投稿 824 2022-05-29

      HDFS讀寫原理和代碼簡(jiǎn)單實(shí)現(xiàn)

      關(guān)鍵詞:HDFS讀寫?? MRS? windows客戶端下讀寫

      摘要:本文主要研究了hdfs文件系統(tǒng)的讀寫流程以及基于MRS在windows客戶端下讀寫hdfs文件的實(shí)現(xiàn)

      1. HDFS的架構(gòu)和元數(shù)據(jù)

      1.1 HDFS采用master/slaves主從結(jié)構(gòu)模型管理數(shù)據(jù),結(jié)構(gòu)模型圖如下

      1.2 元數(shù)據(jù)的相關(guān)概念

      Fsimage:文件系統(tǒng)映射文件,也是元數(shù)據(jù)的鏡像文件(磁盤中),存儲(chǔ)某段時(shí)間namenode內(nèi)存元數(shù)據(jù)信息

      Edits log:操作日志文件

      1.3 元數(shù)據(jù)的工作特點(diǎn)

      (1) namenode始終在內(nèi)存中存儲(chǔ)元數(shù)據(jù),使得“讀操作”更加快

      (2)寫請(qǐng)求時(shí),向edits文件寫入日志,成功返回后才修改內(nèi)存,并向客戶端返回

      (3) NameNode內(nèi)存中存儲(chǔ)的是=fsimage+edits

      2. 文件的讀寫流程

      2.1 文件的讀取流程

      1) 客戶端Client調(diào)用FileSystem的open(),返回FSDataInputStream對(duì)象給客戶端.DistributeFileSystem對(duì)象通過(guò)RPC和NameNode通信,查詢?cè)獢?shù)據(jù)信息,確定文件路徑是否存在以及檢查權(quán)限,返回這個(gè)文件的數(shù)據(jù)塊位置列表(同一數(shù)據(jù)塊位置在不同DataNode上存儲(chǔ),NameNode具有機(jī)架感知功能,會(huì)將DataNode的主機(jī)進(jìn)行排序)

      2) 客戶通過(guò)FSDataInputStream read()方法讀取數(shù)據(jù).FSDataInputStream對(duì)象按照數(shù)據(jù)塊位置排序建立一條連接,讀取數(shù)據(jù).當(dāng)此數(shù)據(jù)塊讀取完畢后,FSDataInputStream對(duì)象關(guān)閉和此數(shù)據(jù)節(jié)點(diǎn)的連接,然后繼續(xù)按照優(yōu)先順序建立下一個(gè)數(shù)據(jù)塊連接,讀取數(shù)據(jù)…….在據(jù)讀取過(guò)程中,如果客戶端在與數(shù)據(jù)節(jié)點(diǎn)通信時(shí)出現(xiàn)錯(cuò)誤,則會(huì)嘗試讀取包含有此數(shù)據(jù)塊的下一個(gè)數(shù)據(jù)節(jié)點(diǎn),并且失敗的數(shù)據(jù)節(jié)點(diǎn)會(huì)被記錄,以后不會(huì)再連接

      3) 當(dāng)數(shù)據(jù)讀取完畢后,調(diào)用FSDataInputStream對(duì)象的close()函數(shù)。

      2.2 文件的寫入流程

      1)客戶端Client調(diào)用FileSystem的create()函數(shù),返回FSDataOutputStream對(duì)象給客戶端DistributedFileSystem對(duì)象通過(guò)RPC與namenode通信,確定文件存在不存在以及是否有創(chuàng)建文件的權(quán)限,先將操作寫入log,再載入內(nèi)存,將DataNode列表返回

      2) 客戶端通過(guò)FSDataOutputStream對(duì)象,寫數(shù)據(jù).FSDataOutputStream對(duì)象將數(shù)據(jù)按照128M分成塊,寫入Data Queue.然后將DataNode列表和Data Queue通過(guò)DataNode列表一同發(fā)送給最近的DataNode.這樣之后client端和NameNode分配的多個(gè)DataNode構(gòu)成pipeline管道.client每次向第一個(gè)DataNode寫入一個(gè)packet,這個(gè)packet便會(huì)直接在pipeline里傳給第二個(gè)、第三個(gè)DataNode.每個(gè)DataNode寫完一個(gè)塊后,會(huì)返回確認(rèn)信息. FSDataoutputStream將確認(rèn)信息保存在ACK Queue.所有的數(shù)據(jù)塊寫入pipeline中的數(shù)據(jù)節(jié)點(diǎn),并且ACK Queue成功返回.

      3) FSDataOutputStream對(duì)象close()方法關(guān)閉流.通知元數(shù)據(jù)節(jié)點(diǎn)寫入完畢

      3. 基于華為云MRS windows下讀寫hdfs的實(shí)現(xiàn)

      3.1 創(chuàng)建2.1.0非安全集群

      3.2 安全組規(guī)則入方向放開windows 客戶端ip和所有端口

      3.3 為集群的各個(gè)節(jié)點(diǎn)綁定彈性ip

      HDFS讀寫原理和代碼簡(jiǎn)單實(shí)現(xiàn)

      3.4 將彈性ip和集群節(jié)點(diǎn)主機(jī)名寫入windows的hosts文件

      3.5 打開https://github.com/huaweicloud/huaweicloud-mrs-example/tree/mrs-2.1,將樣例代碼下載下來(lái),然后是idea打開hdfs-examples項(xiàng)目

      3.6 在huawei下面創(chuàng)建test文件夾,并且Test.java文件放到這個(gè)文件夾內(nèi)

      3.7 從集群下載配置文件,置于項(xiàng)目conf文件夾下

      3.8 將下面配置配置于hdfs-site.xml中

      dfs.client.use.datanode.hostname

      true

      3.9 idea執(zhí)行程序,執(zhí)行結(jié)果如下

      附件: Test.rar 1.06KB 下載次數(shù):2次

      附件: 文檔.docx 455.30KB 下載次數(shù):4次

      EI企業(yè)智能 Hadoop MapReduce服務(wù)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:openEuler 20.03離線安裝Ansible-2.9.6
      下一篇:104_JavaWeb_文件上傳_ServletFileUpload_下載
      相關(guān)文章
      国产亚洲精品线观看动态图| 亚洲综合av一区二区三区不卡| 久久亚洲国产精品成人AV秋霞| 亚洲国产精品毛片av不卡在线 | 亚洲国产美女精品久久| 国产av无码专区亚洲av果冻传媒| 苍井空亚洲精品AA片在线播放 | 亚洲综合精品第一页| 亚洲成a人片在线观| 亚洲国产成人超福利久久精品| 亚洲美女精品视频| 亚洲精品美女在线观看播放| 亚洲视频在线观看地址| 亚洲欧洲日韩综合| 亚洲天堂一区在线| jiz zz在亚洲| 国产亚洲人成在线播放| 最新亚洲人成网站在线观看| 亚洲国产精品一区二区第四页| 亚洲aⅴ无码专区在线观看 | 精品亚洲成AV人在线观看| 亚洲精品免费在线视频| 亚洲性猛交xx乱| 亚洲第一男人天堂| 亚洲精品国产首次亮相| 亚洲JIZZJIZZ中国少妇中文| 国产av无码专区亚洲国产精品| 在线亚洲精品自拍| 亚洲国产成人片在线观看| 亚洲毛片在线观看| 亚洲国产日韩在线成人蜜芽 | 亚洲av无码国产综合专区| 亚洲一区在线免费观看| 亚洲色无码专区一区| 自拍偷自拍亚洲精品播放| 亚洲国产精品自在拍在线播放| 亚洲中文字幕久久精品无码喷水| 亚洲成色www久久网站夜月| 久久综合亚洲鲁鲁五月天| 亚洲国产精品综合久久20| 亚洲av午夜电影在线观看|