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

NameNode有什么用

小編給大家分享一下NameNode有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供巴林左旗網(wǎng)站建設(shè)、巴林左旗做網(wǎng)站、巴林左旗網(wǎng)站設(shè)計(jì)、巴林左旗網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、巴林左旗企業(yè)網(wǎng)站模板建站服務(wù),10余年巴林左旗做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

一 NameNode的作用

     NameNode是文件系統(tǒng)的大腦,管理文件的命名空間以及對(duì)集群中文件的訪問,存儲(chǔ)著元數(shù)據(jù)。保存的最重要的兩個(gè)映射:文件名&數(shù)據(jù)塊(保存在磁盤上,持久化的)  ,數(shù)據(jù)塊&DateNode列表(NameNode不保存,是通過DataNode傳遞的)。

    NameNode 與客戶端,DataNode,NameNode之間都可以通信,分別通過實(shí)現(xiàn)ClientProtocol,DataNodeProtocol和NameNodeProtocol接口。

二 文件讀寫過程分析

   1 文件讀取過程

       首先客戶端使用FileSystem.open()函數(shù)打開文件,DistributedFileSystem使用RPC與NameNode通信,得到文件的數(shù)據(jù)塊信息,對(duì)于每一個(gè)數(shù)據(jù)塊,元數(shù)據(jù)返回的是保存該數(shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)的地址。

        然后DistributedFileSystem 返回FSDataInputStream 給客戶端用來讀取數(shù)據(jù),客戶端調(diào)用Stream的read()方法開始讀取數(shù)據(jù)。

        DFSInputSteam連接保存此文件第一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn),data從數(shù)據(jù)節(jié)點(diǎn)讀到客戶端,當(dāng)數(shù)據(jù)塊讀取完畢,DFSInputStream關(guān)閉與此數(shù)據(jù)節(jié)點(diǎn)的連接,連接下一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn)。當(dāng)所有節(jié)點(diǎn)讀取完畢,調(diào)用FSDataInputSteam的close函數(shù)關(guān)閉。

      在讀取過程中,如果客戶端在與數(shù)據(jù)節(jié)點(diǎn)的通信中,出現(xiàn)錯(cuò)誤,則直接讀取下個(gè)節(jié)點(diǎn),并將此節(jié)點(diǎn)記錄下來。

   2 文件寫入過程

      首先客戶端調(diào)用create()方法創(chuàng)建文件,DistributedFileSystem調(diào)用RPC與NameNode通信,傳達(dá)客戶端要新建一個(gè)文件,元數(shù)據(jù)節(jié)點(diǎn)檢查命名空間,確定文件原來不存在,并且客戶端有創(chuàng)建文件的權(quán)限,然后在創(chuàng)建文件。返回DFSOutputStream,使得客戶端寫入數(shù)據(jù)。

      DFSOutputStream 將數(shù)據(jù)分成塊,寫入data queue,因?yàn)閿?shù)據(jù)的寫入是流式的,data queue 由Data Stream 讀取,并通知其他的數(shù)據(jù)塊(假設(shè)默認(rèn)復(fù)制3塊),分配的數(shù)據(jù)節(jié)點(diǎn)放在一個(gè)pipeline里。

     Data Streamer將數(shù)據(jù)塊寫入pipeline中的第一個(gè)數(shù)據(jù)節(jié)點(diǎn),第一個(gè)數(shù)據(jù)節(jié)點(diǎn)又將數(shù)據(jù)塊寫入第二個(gè)數(shù)據(jù)節(jié)點(diǎn),第二個(gè)數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)寫入第三個(gè)數(shù)據(jù)節(jié)點(diǎn)。DFSOutput Stream為發(fā)出去的數(shù)據(jù)塊保存了ack queue,等待pipeline中的數(shù)據(jù)節(jié)點(diǎn)告知數(shù)據(jù)寫入成功。如果數(shù)據(jù)節(jié)點(diǎn)在寫入過程中失敗,關(guān)閉pipeline,將ack queue 中的數(shù)據(jù)塊放入data queue 的開始。失敗的數(shù)據(jù)節(jié)點(diǎn)從pipeline中移除,另外的數(shù)據(jù)塊則寫入pipeline中另外的兩個(gè)數(shù)據(jù)節(jié)點(diǎn)。元數(shù)據(jù)則被通知,復(fù)制塊數(shù)目不足,將會(huì)創(chuàng)建第三份備份。

   當(dāng)客戶端結(jié)束寫入數(shù)據(jù),則調(diào)用stream的close()函數(shù)

三   java API 對(duì)文件的基本操作

1 FileSystem類(開啟文件系統(tǒng))

Configuration conf=new Configuration();//獲取配置信息
FileSystem fs=FileSystem.get(URI.create(uri),conf);//得到地址
InputStream input=null;
input=fs.open(new Path(uri));
IOUtils.copyBytes(input,System.out,4096,false);//讀取文件,打印出來
IOUtils.closeStream(input);

2 FileStatus類(查看文件狀態(tài))

//查看HDFS中文件或者目錄的元信息。
FileStatus fstus=fs.getFileStatus(new Path(uri));
fstus.getPath();//得到文件路徑
fstus.getLen(); //得到文件長度
fstus.ModificationTime()//得到最新修改時(shí)間
fstus.getReplication()//得到文件備份樹
fstus.getOwner()//得到文件擁有者

3 BlockLocation(查看數(shù)據(jù)塊的位置)

//查找某個(gè)文件Block在HDFS集群的位置。
FileStatus fstus=fs.getFileStatus(new Path(uri));
BlockLocation []block=fs.getFileBlockLocations(fstus,0,fstus.getLen));

4 查看文件是否存在

//列出HDFS下的所有文件。檢查是否存在,使用exist()方法。
Path []paths=new Path[args.length];
FileStatus fstus=fs.listStatus(paths);
Path []listedPaths=FileUtil.stat2Paths(fstus);
for(Path p:listedPaths){
       System.out.println(p);
}

以上是“NameNode有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前標(biāo)題:NameNode有什么用
標(biāo)題URL:http://jinyejixie.com/article18/iieddp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名動(dòng)態(tài)網(wǎng)站、微信公眾號(hào)、手機(jī)網(wǎng)站建設(shè)、用戶體驗(yàn)軟件開發(fā)

廣告

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

成都app開發(fā)公司
定西市| 建湖县| 商都县| 叶城县| 乌拉特前旗| 杨浦区| 马山县| 县级市| 龙泉市| 施甸县| 子长县| 子长县| 景洪市| 安西县| 大兴区| 陵川县| 鄂温| 子长县| 丹寨县| 太保市| 施甸县| 习水县| 济阳县| 兴国县| 霸州市| 清镇市| 河曲县| 韶山市| 石景山区| 陆良县| 阿尔山市| 临西县| 绩溪县| 嘉鱼县| 兴山县| 洪雅县| 贵南县| 巴林右旗| 临沂市| 全南县| 虞城县|