成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何解析HDFS的寫文件流程-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關如何解析HDFS的寫文件流程的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

在如東等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站建設、成都做網(wǎng)站 網(wǎng)站設計制作按需規(guī)劃網(wǎng)站,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,如東網(wǎng)站建設費用合理。

文件是如何寫入HDFS的 ?

下面我們來先看看下面的“寫”流程圖: 
如何解析HDFS的寫文件流程

        假如我們有一個文件test.txt,想要把它放到Hadoop上,執(zhí)行如下命令:

引用


        # hadoop fs  -put  /usr/bigdata/dataset/input/20130706/test.txt   /opt/bigdata/hadoop/dataset/input/20130706  //或執(zhí)行下面的命令 
        # hadoop fs -copyFromLocal /usr/bigdata/dataset/input/20130706/test.txt  /opt/bigdata/hadoop/dataset/input/20130706        
       

        整個寫流程如下: 
        第一步,客戶端調用DistributedFileSystem的create()方法,開始創(chuàng)建新文件:DistributedFileSystem創(chuàng)建DFSOutputStream,產(chǎn)生一個RPC調用,讓NameNode在文件系統(tǒng)的命名空間中創(chuàng)建這一新文件; 
        第二步,NameNode接收到用戶的寫文件的RPC請求后,誰偶先要執(zhí)行各種檢查,如客戶是否有相關的創(chuàng)佳權限和該文件是否已存在等,檢查都通過后才會創(chuàng)建一個新文件,并將操作記錄到編輯日志,然后DistributedFileSystem會將DFSOutputStream對象包裝在FSDataOutStream實例中,返回客戶端;否則文件創(chuàng)建失敗并且給客戶端拋IOException。 
        第三步,客戶端開始寫文件:DFSOutputStream會將文件分割成packets數(shù)據(jù)包,然后將這些packets寫到其內(nèi)部的一個叫做data queue(數(shù)據(jù)隊列)。data queue會向NameNode節(jié)點請求適合存儲數(shù)據(jù)副本的DataNode節(jié)點的列表,然后這些DataNode之前生成一個Pipeline數(shù)據(jù)流管道,我們假設副本集參數(shù)被設置為3,那么這個數(shù)據(jù)流管道中就有三個DataNode節(jié)點。 
        第四步,首先DFSOutputStream會將packets向Pipeline數(shù)據(jù)流管道中的第一個DataNode節(jié)點寫數(shù)據(jù),第一個DataNode接收packets然后把packets寫向Pipeline中的第二個節(jié)點,同理,第二個節(jié)點保存接收到的數(shù)據(jù)然后將數(shù)據(jù)寫向Pipeline中的第三個DataNode節(jié)點。 
        第五步,DFSOutputStream內(nèi)部同樣維護另外一個內(nèi)部的寫數(shù)據(jù)確認隊列——ack queue。當Pipeline中的第三個DataNode節(jié)點將packets成功保存后,該節(jié)點回向第二個DataNode返回一個確認數(shù)據(jù)寫成功的信息,第二個DataNode接收到該確認信息后在當前節(jié)點數(shù)據(jù)寫成功后也會向Pipeline中第一個DataNode節(jié)點發(fā)送一個確認數(shù)據(jù)寫成功的信息,然后第一個節(jié)點在收到該信息后如果該節(jié)點的數(shù)據(jù)也寫成功后,會將packets從ack queue中將數(shù)據(jù)刪除。 
        在寫數(shù)據(jù)的過程中,如果Pipeline數(shù)據(jù)流管道中的一個DataNode節(jié)點寫失敗了會發(fā)生什問題、需要做哪些內(nèi)部處理呢?如果這種情況發(fā)生,那么就會執(zhí)行一些操作: 
        首先,Pipeline數(shù)據(jù)流管道會被關閉,ack queue中的packets會被添加到data queue的前面以確保不會發(fā)生packets數(shù)據(jù)包的丟失,為存儲在另一正常dataname的當前數(shù)據(jù)指定一個新的標識,并將該標識傳送給namenode,以便故障datanode在恢復后可以刪除存儲的部分數(shù)據(jù)塊; 
        接著,在正常的DataNode節(jié)點上的以保存好的block的ID版本會升級——這樣發(fā)生故障的DataNode節(jié)點上的block數(shù)據(jù)會在節(jié)點恢復正常后被刪除,失效節(jié)點也會被從Pipeline中刪除; 
        最后,剩下的數(shù)據(jù)會被寫入到Pipeline數(shù)據(jù)流管道中的其他兩個節(jié)點中。 
        如果Pipeline中的多個節(jié)點在寫數(shù)據(jù)是發(fā)生失敗,那么只要寫成功的block的數(shù)量達到dfs.replication.min(默認為1),那么就任務是寫成功的,然后NameNode后通過一步的方式將block復制到其他節(jié)點,最后事數(shù)據(jù)副本達到dfs.replication參數(shù)配置的個數(shù)。 
        第六步,,完成寫操作后,客戶端調用close()關閉寫操作,刷新數(shù)據(jù); 
        第七步,,在數(shù)據(jù)刷新完后NameNode后關閉寫操作流。到此,整個寫操作完成。      

感謝各位的閱讀!關于“如何解析HDFS的寫文件流程”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

標題名稱:如何解析HDFS的寫文件流程-創(chuàng)新互聯(lián)
分享URL:http://jinyejixie.com/article0/dhdiio.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設App設計、企業(yè)建站營銷型網(wǎng)站建設、用戶體驗網(wǎng)站改版

廣告

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

成都定制網(wǎng)站建設
冷水江市| 玛沁县| 咸阳市| 孝昌县| 阿勒泰市| 拉孜县| 屏南县| 三河市| 皋兰县| 泸溪县| 宁海县| 台中市| 南平市| 屏东市| 即墨市| 琼中| 石城县| 满洲里市| 昭觉县| 屯留县| 荣成市| 盈江县| 定日县| 工布江达县| 郯城县| 永顺县| 武隆县| 靖西县| 凤山县| 平邑县| 太仓市| 如东县| 额济纳旗| 福州市| 青州市| 宁化县| 宝山区| 伊春市| 紫阳县| 阳东县| 宁蒗|