新聞中心
本節(jié)向大家描述一下Hadoop 學習總結(jié)中HDFS的內(nèi)容,主要有HDFS概念和數(shù)據(jù)流兩部分內(nèi)容,歡迎大家一起來學習,相信通過本節(jié)的介紹大家對HDFS方面的知識有一定的認識。

專注于為中小企業(yè)提供網(wǎng)站制作、網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)龍海免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
Hadoop 學習總結(jié)之一:HDFS簡介
一、HDFS的基本概念
1.1、數(shù)據(jù)塊(block)
Hadoop 學習總結(jié)中HDFS(Hadoop Distributed File System)默認的最基本的存儲單位是64M的數(shù)據(jù)塊。
和普通文件系統(tǒng)相同的是,HDFS中的文件是被分成64M一塊的數(shù)據(jù)塊存儲的。
不同于普通文件系統(tǒng)的是,HDFS中,如果一個文件小于一個數(shù)據(jù)塊的大小,并不占用整個數(shù)據(jù)塊存儲空間。
1.2、元數(shù)據(jù)節(jié)點(Namenode)和數(shù)據(jù)節(jié)點(datanode)
元數(shù)據(jù)節(jié)點用來管理文件系統(tǒng)的命名空間
其將所有的文件和文件夾的元數(shù)據(jù)保存在一個文件系統(tǒng)樹中。
這些信息也會在硬盤上保存成以下文件:命名空間鏡像(namespace image)及修改日志(edit log)
其還保存了一個文件包括哪些數(shù)據(jù)塊,分布在哪些數(shù)據(jù)節(jié)點上。然而這些信息并不存儲在硬盤上,而是在系統(tǒng)啟動的時候從數(shù)據(jù)節(jié)點收集而成的。
數(shù)據(jù)節(jié)點是文件系統(tǒng)中真正存儲數(shù)據(jù)的地方。
客戶端(client)或者元數(shù)據(jù)信息(namenode)可以向數(shù)據(jù)節(jié)點請求寫入或者讀出數(shù)據(jù)塊。
其周期性的向元數(shù)據(jù)節(jié)點回報其存儲的數(shù)據(jù)塊信息。
從元數(shù)據(jù)節(jié)點(secondary namenode)
從元數(shù)據(jù)節(jié)點并不是元數(shù)據(jù)節(jié)點出現(xiàn)問題時候的備用節(jié)點,它和元數(shù)據(jù)節(jié)點負責不同的事情。
其主要功能就是周期性將元數(shù)據(jù)節(jié)點的命名空間鏡像文件和修改日志合并,以防日志文件過大。這點在下面會相信敘述。
合并過后的命名空間鏡像文件也在從元數(shù)據(jù)節(jié)點保存了一份,以防元數(shù)據(jù)節(jié)點失敗的時候,可以恢復。
二、數(shù)據(jù)流(data flow)
2.1、讀文件的過程
首先看一下Hadoop 學習總結(jié)中關于數(shù)據(jù)流讀取文件過程介紹??蛻舳?client)用FileSystem的open()函數(shù)打開文件
DistributedFileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點,得到文件的數(shù)據(jù)塊信息。
對于每一個數(shù)據(jù)塊,元數(shù)據(jù)節(jié)點返回保存數(shù)據(jù)塊的數(shù)據(jù)節(jié)點的地址。
DistributedFileSystem返回FSDataInputStream給客戶端,用來讀取數(shù)據(jù)。
客戶端調(diào)用stream的read()函數(shù)開始讀取數(shù)據(jù)。
DFSInputStream連接保存此文件第一個數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點。
Data從數(shù)據(jù)節(jié)點讀到客戶端(client)
當此數(shù)據(jù)塊讀取完畢時,DFSInputStream關閉和此數(shù)據(jù)節(jié)點的連接,然后連接此文件下一個數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點。
當客戶端讀取完畢數(shù)據(jù)的時候,調(diào)用FSDataInputStream的close函數(shù)。
在讀取數(shù)據(jù)的過程中,如果客戶端在與數(shù)據(jù)節(jié)點通信出現(xiàn)錯誤,則嘗試連接包含此數(shù)據(jù)塊的下一個數(shù)據(jù)節(jié)點。
失敗的數(shù)據(jù)節(jié)點將被記錄,以后不再連接。
2.2、寫文件的過程
再來看一下Hadoop 學習總結(jié)中關于數(shù)據(jù)流寫文件的過程??蛻舳苏{(diào)用create()來創(chuàng)建文件
istributedFileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點,在文件系統(tǒng)的命名空間中創(chuàng)建一個新的文件。
元數(shù)據(jù)節(jié)點首先確定文件原來不存在,并且客戶端有創(chuàng)建文件的權(quán)限,然后創(chuàng)建新文件。
DistributedFileSystem返回DFSOutputStream,客戶端用于寫數(shù)據(jù)。
客戶端開始寫入數(shù)據(jù),DFSOutputStream將數(shù)據(jù)分成塊,寫入data queue。
Data queue由Data Streamer讀取,并通知元數(shù)據(jù)節(jié)點分配數(shù)據(jù)節(jié)點,用來存儲數(shù)據(jù)塊(每塊默認復制3塊)。分配的數(shù)據(jù)節(jié)點放在一個pipeline里。
Data Streamer將數(shù)據(jù)塊寫入pipeline中的第一個數(shù)據(jù)節(jié)點。第一個數(shù)據(jù)節(jié)點將數(shù)據(jù)塊發(fā)送給第二個數(shù)據(jù)節(jié)點。第二個數(shù)據(jù)節(jié)點將數(shù)據(jù)發(fā)送給第三個數(shù)據(jù)節(jié)點。
DFSOutputStream為發(fā)出去的數(shù)據(jù)塊保存了ack queue,等待pipeline中的數(shù)據(jù)節(jié)點告知數(shù)據(jù)已經(jīng)寫入成功。
如果數(shù)據(jù)節(jié)點在寫入的過程中失?。?
關閉pipeline,將ack queue中的數(shù)據(jù)塊放入data queue的開始。
當前的數(shù)據(jù)塊在已經(jīng)寫入的數(shù)據(jù)節(jié)點中被元數(shù)據(jù)節(jié)點賦予新的標示,則錯誤節(jié)點重啟后能夠察覺其數(shù)據(jù)塊是過時的,會被刪除。
失敗的數(shù)據(jù)節(jié)點從pipeline中移除,另外的數(shù)據(jù)塊則寫入pipeline中的另外兩個數(shù)據(jù)節(jié)點。
元數(shù)據(jù)節(jié)點則被通知此數(shù)據(jù)塊是復制塊數(shù)不足,將來會再創(chuàng)建第三份備份。
當客戶端結(jié)束寫入數(shù)據(jù),則調(diào)用stream的close函數(shù)。此操作將所有的數(shù)據(jù)塊寫入pipeline中的數(shù)據(jù)節(jié)點,并等待ack queue返回成功。最后通知元數(shù)據(jù)節(jié)點寫入完畢。本節(jié)關于Hadoop 學習總結(jié)中HDFS概念介紹完畢。
【編輯推薦】
- 實例講解Hadoop用法
- 技術分享 Hadoop集群搭建方法
- Hadoop文件系統(tǒng)如何快速安裝?
- Hadoop集群搭建過程中相關環(huán)境配置詳解
- Hadoop完全分布模式安裝實現(xiàn)詳解
網(wǎng)頁題目:Hadoop學習總結(jié):HDFS概念及其用法
本文鏈接:http://m.fisionsoft.com.cn/article/cdeojsh.html


咨詢
建站咨詢
