hadoop--HDFS的读写数据流程
目錄
- HDFS中block、packet、chunk的概念
- 1. 數(shù)據(jù)塊block
- 2. packet
- 3. chunk
- HDFS讀數(shù)據(jù)流程
- HDFS寫(xiě)數(shù)據(jù)流程
HDFS中block、packet、chunk的概念
1. 數(shù)據(jù)塊block
每個(gè)磁盤(pán)都有默認(rèn)的數(shù)據(jù)塊大小,這是磁盤(pán)進(jìn)行數(shù)據(jù)讀寫(xiě)的最小單位。
HDFS也有塊(block)的概念,但是大得多,默認(rèn)128MB,與單一磁盤(pán)上的文件系統(tǒng)相似,HDFS上的文件也被劃分為塊大小的多個(gè)分塊(chunk),作為獨(dú)立的存儲(chǔ)單元。
但與面向單一磁盤(pán)的文件系統(tǒng)不同的是,HDFS中小于一個(gè)塊大小的文件不會(huì)占據(jù)整個(gè)塊的空間(如一個(gè)文件只有1MB存儲(chǔ)在128MB的塊中,文件只使用1MB的磁盤(pán)空間,而不是128MB)。
2. packet
client向datanode傳輸數(shù)據(jù)的最小單位稱(chēng)為packet (64k=512 byte +4 byte);
3. chunk
chunk是最小單位,默認(rèn)為512byte,加上4byte的校驗(yàn)位chunksum;
HDFSClient創(chuàng)建FSDataInputStream/FSDataOutputStream流時(shí)會(huì)產(chǎn)生緩沖隊(duì)列,存儲(chǔ)512byte的chunk加4byte的校驗(yàn)位chunksum;
chunk–>Packet–>block
HDFS讀數(shù)據(jù)流程
tips: 通過(guò)串行讀取數(shù)據(jù),先讀block1,再讀block2追加在block1后面。
HDFS寫(xiě)數(shù)據(jù)流程
數(shù)據(jù)流–>chunk(512+4)–>Packet–>緩沖隊(duì)列–>發(fā)送–>應(yīng)答–>ack隊(duì)列;
ack隊(duì)列在發(fā)送時(shí)會(huì)存儲(chǔ)一份緩沖數(shù)據(jù),只有應(yīng)答成功之后,緩沖隊(duì)列才會(huì)刪除;
tips:
client端向dn1上傳數(shù)據(jù),上傳成功后會(huì)有2份數(shù)據(jù),其中1份寫(xiě)入磁盤(pán),另一份存在內(nèi)存中直接傳給dn2。
作業(yè)提交全過(guò)程(HDFS & YARN & MapReduce==>)
總結(jié)
以上是生活随笔為你收集整理的hadoop--HDFS的读写数据流程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 启航
- 下一篇: XCode: 兼容ARC和non-ARC