hdfs是乙個分布式檔案系統,其中最需要關注的就是讀寫流程了,寫流程比讀流程更快,下面分別講解寫和讀的細節。
一. hdfs寫流程
1)首先,客戶端利用hdfs client建立了distributed filesystem例項,再通過
distributed filesystem向namenode發起上傳檔案的請求,namenode會檢查目標檔案是否存在,父目錄是否存在。
2)namenode返回是否可以上傳的響應資訊。
3)客戶端再次向namenode請求可以儲存第乙個塊的datanode的位址資訊(hdfs按塊儲存,預設塊大小為128m)。
4)namenode返回儲存資料的datanode位址,namenode在尋找datanode節點時會選擇距離待上傳資料最近距離的datanode(計算方式如上圖
網路拓撲-節點距離計算)。
5)客戶端通過fsdataoutputstream模組向datanode1請求上傳資料,datanode1接收到資訊後,會對datanode2,datanode3接著發起請求,直到通道建立完成。
6)datanode逐級應答,直到客戶端收到訊息。
7)客戶端向datanode1上傳第乙個block(先從磁碟讀取資料放到本地記憶體快取),以packet為單位,datanode1收到packet之後就會將它傳給datanode2,datanode2傳給datanode3,
datanode每傳乙個packet就會將它放入應答佇列,當所有datanode都複製完成就會應答成功。
8)當第一塊傳輸完成後,客戶端會再次向namenode請求傳輸第二塊,重複3-7步,當傳輸完成後,客戶端將告訴namenode傳輸結束,客戶端關閉fsdataoutputstream。
二、機架感知副本節點擊擇
1)第乙個副本在client所處的節點上,如果客戶端在集群外,則隨機選取乙個。2)第二個副本位於第乙個副本的同一機架的不同節點(隨機選擇)。3)第三個副本位於不同機架的隨機節點。
三、hdfs讀流程
1)客戶端首先利用hdfs client建立
dist
ributed filesyste
m例項,通過
dist
ributed filesyste
2)namenode搜尋到目標檔案元資料後將其返回。
3)客戶端通過fsdataoutputstream模組向最近的datanode請求讀取資料。
4)datanode從磁碟讀取資料輸入流,以packet為單位做校驗,傳送給客戶端。客戶端以packet為單位接收,先在本地快取,再寫入目標檔案。
H06 HDFS讀寫流程
檔案a大小100m,client將a寫入到hdfs上 hdfs按照預設配置,hdfs分布在三個機架上rack1,rack2,rack3 a.client將a按照64m分塊。分成兩塊 block1 block2 b.client向namenode傳送寫資料請求,如圖藍色虛線 c.namenode節點記...
大資料實戰 Hive 技巧實戰
select address from test where dt 20210218 union all select address from test where dt 20210218 address m a m a m b m b m b m b select address from te...
大資料實戰之環境搭建 六
這篇我們看如何搭建solr,因為第一篇講述了在windows下如何搭建,所以這裡就簡單的說一下。前面已經提到我們將solr壓縮包拷貝至了usr tmp下。之後我們將solr解壓目錄下面的example solr拷貝到上面solr 4.3.0下 ok,完了之後進行我們的最後一步,在tomcat下面的 ...