了解hdfs的讀寫流程,首先要了解block、package、chunk的概念。
在讀取過程中,如果fsdatainputstream在和乙個datanode進行交流時出現了乙個錯誤,它就去試一試下乙個最接近的塊,同時也會記住剛才發生錯誤的datanode,之後便不會再在這個datanode上進行沒必要的嘗試。
dfsinputstream 也會在 datanode 上傳輸出的資料上核查檢查數(checknums),如果損壞的塊被發現了,dfsinputstream 就試圖從另乙個擁有備份的 datanode 中去讀取備份塊中的資料。
如果向datanode寫入資料失敗了,那麼會執行以下操作:
答案是:不能
hdfs的不能併發寫指的是同位置同名檔案只能有乙個writer,否則會使得所有的上傳請求失敗。
不同位置或者不同名的檔案可以同時上傳。
通過校驗和。因為每個chunk中都有乙個校驗位,乙個個chunk構成packet,乙個個packet最終形成block,故可在block上求校驗和。
hdfs 的client端即實現了對 hdfs 檔案內容的校驗和 (checksum) 檢查。當客戶端建立乙個新的hdfs檔案時候,分塊後會計算這個檔案每個資料塊的校驗和,此校驗和會以乙個隱藏檔案形式儲存在同乙個 hdfs 命名空間下。當client端從hdfs中讀取檔案內容後,它會檢查分塊時候計算出的校驗和(隱藏檔案裡)和讀取到的檔案塊中校驗和是否匹配,如果不匹配,客戶端可以選擇從其他 datanode 獲取該資料塊的副本。
hdfs中檔案塊目錄結構具體格式如下:$/
├── current
│ ├── bp-526805057-127.0.0.1-1411980876842
│ │ └── current
│ │ ├── version
│ │ ├── finalized
│ │ │ ├── blk_1073741825
│ │ │ ├── blk_1073741825_1001.meta
│ │ │ ├── blk_1073741826
│ │ │ └── blk_1073741826_1002.meta
│ │ └── rbw
│ └── version
└── in_use.lock
in_use.lock表示datanode正在對資料夾進行操作
rbw是「replica being written」的意思,該目錄用於儲存使用者當前正在寫入的資料。
block元資料檔案(*.meta)由乙個包含版本、型別資訊的標頭檔案和一系列校驗值組成。校驗和也正是存在其中。
HDFS的讀寫流程(詳解)
hdfs hadoop distributed file system 是gfs的開源實現。1 優點 2 缺點 寫流程如下 1 客戶端訪問namenode,namenode檢查路徑和許可權,如果路徑中有與要上傳的檔案重名的檔案就不能上傳了,不能覆蓋,如果沒有才建立,建立名為file.copying的...
最全 HDFS的讀寫流程
1.客戶端要寫入資料首先要向namenode發起上傳請求,namenode要檢測目標檔案是否存在,父目錄是否存在,返回是否可以上傳。2.客戶端請求第乙個block應該往datenode上傳在 3.namenode根據配置檔案中的備份數量進行分配,返回可用的datanode的位址 4.請求3臺data...
關於HDFS的讀寫流程
今天主要是和大家分享一下有關hdfs的讀寫流程,有關hadoop和其他相關的基礎我會在之後的大資料只是總結中一一的總結出來,有興趣的小夥伴可以關注我之後的更新 進入正題首先先由我這位靈魂畫手給大家上一張圖 首先先來說一下各自的功能 namenode 負責管理整個檔案系統的元資料,以及所對應資料塊的資...