客户端读写数据到HDFS的流程
客戶端寫(xiě)數(shù)據(jù)到HDFS中的流程
(1) 客戶端發(fā)出寫(xiě)數(shù)據(jù)請(qǐng)求,hadoop fs –put ./localFile.txt /hdfsFile.txt 本地的localFile.txt文件大小是170MB,而HDFS默認(rèn)的Block大小是128MB,因此這個(gè)文件將會(huì)被分成兩個(gè)Block
(2) NameNode首先檢查這個(gè)文件在HDFS中是否存在,如果存在則報(bào)錯(cuò),如果不存在返回OK
(3) 請(qǐng)求寫(xiě)B(tài)LOCK1,而hdfsFile.txt有兩個(gè)Block,且3個(gè)副本,那么總共是6個(gè)Block
(4) NameNode告訴Client,Block1寫(xiě)到哪幾個(gè)DataNode中去,例如:返回DataNode1、DataNode2、DataNode3
(5) 與DataNode1建立數(shù)據(jù)傳輸連接
(6) DataNode1與DataNode2建立數(shù)據(jù)傳輸連接
(7) DataNode2與DataNode3建立數(shù)據(jù)傳輸連接
(8) 成功建立,返回OK
(9) 成功建立,返回OK
(10) 成功建立,返回OK
(11) 傳輸BLOCK1的數(shù)據(jù),DataNode1會(huì)將BLock1寫(xiě)到本地
(12) 傳輸Block2的數(shù)據(jù)與Block1的數(shù)據(jù)傳輸過(guò)程一樣
(13) Block都傳輸完成之后,NameNode會(huì)記錄元數(shù)據(jù)信息:
hdfsFile.txt
Block1 三副本 分別在DataNode1 DataNode2 DataNode3
Block2 三副本 分別在xx xx xx
客戶端從HDFS中讀數(shù)據(jù)的過(guò)程
(1)讀請(qǐng)求,hadoop fs –get /hdfsFile.txt
(2)返回文件的元數(shù)據(jù)信息,例如文件的Block1 在DataNode1、DataNode2、DataNode3,BLock2在DataNode2、DataNode3、DataNode4
(3)發(fā)送讀取Block1的請(qǐng)求
(4)數(shù)據(jù)流返回
(5)發(fā)送讀取Block2的請(qǐng)求
(6)數(shù)據(jù)流返回
總結(jié)
以上是生活随笔為你收集整理的客户端读写数据到HDFS的流程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HDFS数据副本的摆放策略
- 下一篇: HDFS元数据管理