資料讀取請求將由 hdfs,namenode和datanode來服務。讓我們把讀取器叫 「客戶」。下圖描繪了檔案的讀取操作在 hadoop 中。
客戶端啟動通過呼叫檔案系統物件的 open() 方法讀取請求; 它是distributedfilesystem型別的物件。
此物件使用 rpc 連線到 namenode 並獲取的元資料資訊,如該檔案的塊的位置。 請注意,這些位址是檔案的前幾個塊。
響應該元資料請求,具有該塊副本的 datanodes 位址被返回。
一旦接收到 datanodes 的位址,fsdatainputstream 型別的乙個物件被返回到客戶端。 fsdatainputstream 包含 dfsinputstream 這需要處理互動 datanode 和 namenode。在上圖所示的步驟4,客戶端呼叫 read() 方法,這將導致 dfsinputstream 建立與第乙個 datanode 檔案的第乙個塊連線。
以資料流的形式讀取資料,其中客戶端多次呼叫 「read() 」 方法。 read() 操作這個過程一直持續,直到它到達塊結束位置。
一旦到模組的結尾,dfsinputstream 關閉連線,移動定位到下乙個 datanode 的下乙個塊
一旦客戶端已讀取完成後,它會呼叫 close()方法。
在本節中,我們將了解如何通過的檔案將資料寫入到 hdfs。
客戶端通過呼叫 distributedfilesystem物件的 create() 方法建立乙個新的檔案,並開始寫操作 - 在上面的圖中的步驟1
distributedfilesystem物件使用 rpc 呼叫連線到 namenode,並啟動新的檔案建立。但是,此檔案建立操作不與檔案任何塊相關聯。namenode 的責任是驗證檔案(其正被建立的)不存在,並且客戶端具有正確許可權來建立新檔案。如果檔案已經存在,或者客戶端不具有足夠的許可權來建立乙個新的檔案,則丟擲 ioexception 到客戶端。否則操作成功,並且該檔案新的記錄是由 namenode 建立。
一旦 namenode 建立一條新的記錄,返回fsdataoutputstream 型別的乙個物件到客戶端。客戶端使用它來寫入資料到 hdfs。資料寫入方法被呼叫(圖中的步驟3)。
fsdataoutputstream包含dfsoutputstream物件,它使用 datanodes 和 namenode 通訊後查詢。當客戶機繼續寫入資料,dfsoutputstream 繼續建立這個資料報。這些資料報連線排隊到乙個佇列被稱為 dataqueue
還有乙個名為 datastreamer 元件,用於消耗dataqueue。datastreamer 也要求 namenode 分配新的塊,揀選 datanodes 用於複製。
現在,複製過程始於使用 datanodes 建立乙個管道。 在我們的例子中,選擇了複製水平3,因此有 3 個 datanodes 管道。
所述 datastreamer 注入包分成到第乙個 datanode 的管道中。
在每個 datanode 的管道中儲存資料報接收並同樣**在第二個 datanode 的管道中。
另乙個佇列,「ack queue」是由 dfsoutputstream 保持儲存,它們是 datanodes 等待確認的資料報。
一旦確認在佇列中的分組從所有 datanodes 已接收在管道,它從 'ack queue' 刪除。在任何 datanode 發生故障時,從佇列中的包重新用於操作。
在客戶端的資料寫入完成後,它會呼叫close()方法(第9步圖中),呼叫close()結果進入到清理快取剩餘資料報到管道之後等待確認。
一旦收到最終確認,namenode 連線告訴它該檔案的寫操作完成。
HDFS檔案的讀寫操作剖析
namenode namenode負責管理檔案目錄 檔案和block的對應關係以及block和datanode的對應關係。datanode datanode就負責儲存了,當然大部分容錯機制都是在datanode上實現的。二 hdfs基本架構圖 rack 是指機櫃的意思,乙個block的三個副本通常會...
HDFS檔案的讀寫操作理論解析
剛剛接觸hadoop,對於裡面的hdfs感覺思想就是分而治之再綜合的過程,不過這個分布式檔案系統還是蠻厲害的。現在介紹一下它的基本原理,通俗易懂。一 hdfs的一些基本概念 資料塊 block 大檔案會被分割成多個block進行儲存,block大小預設為64mb。每乙個block會在多個datano...
hdfs讀寫流程 HDFS 讀寫流程(詳解)
hdfs hadoop distributed file system 是gfs的開源實現。1 優點 因為有多個副本,可以保證資料可靠,容錯性高 計算向資料移動,適用於批處理 適合大資料處理,gb tb pb級資料,百萬以上的檔案,十萬以上的節點 可以構建在廉價機器上,通過多副本提高可靠性 2 缺點...