讀取:
原理:在hadoop裡面有乙個最初的抽象基類叫filesystem,可以去繼承這個filesystem抽象基類去實現很多具體的子類。例如去繼承filesystem實現http方式訪問相關檔案、實現ftp方式進行讀寫檔案,以及繼承filesystem實現distributedfilesystem類。
(1)filesystem的常用方法:open、read、close、create
(2)open方法一般是建立乙個輸入流(讀檔案的時候必須要先建立輸入流),返回fsdatainputstream物件。fsdatainputstream物件裡面封裝了乙個dfsinputstream(針對hdfs的實現)
(3)create方法是會建立乙個輸出流,返回的是fsdataoutputstream物件。
(4)filesystem.get(new configuration()) 這個**作用是把hdfs-site.xml和core-site.xml兩個配置檔案載入進來、重點讀取fs.defaultfs。
(5)filesystem fs = filesystem.get(new configuration()) 裡面的fs是hdfs的物件。
(6)具體和名稱節點、資料節點進行訪問的是dfsinputstream,不是fsdatainputstream。但是使用者程式設計只能看見fsdatainputstream,因為fsdatainputstream裡面封裝了dfsinputstream。
即:
HDFS 讀取過程分析
客戶端或者使用者通過呼叫 filesystem 物件的 open 方法開啟需要讀取的檔案,這對 hdfs 來說是常見乙個分布式檔案系統的乙個讀取例項。filesystem 通過遠端協議呼叫 namenode 確定檔案的前幾個 block 的位置。對於每乙個 block,namenode 返回一含有那...
HDFS 檔案讀取過程
client向namenode發起rpc請求,來確定請求檔案block所在的位置 namenode會視情況返回檔案的部分或者全部block的主機列表,namenode會對列表進行排序,排序兩個規則 網路拓撲結構中距離 client 近的排靠前 心跳機制中超時匯報的 dn 狀態為 stale,這樣的排...
hdfs的寫入過程和讀取過程
1 客戶端 client 發出請求 將請求發給namenode 要將大小為300m的a.txt檔案上傳到 根目錄下 a.txt 2 namenode對收到的請求做出檢測 檢測1 所上傳的路徑下是否存在該檔案,即根目錄下是否有a.txt 檢測2 檢測客戶端是否有上傳許可權 3 檢測通過,反饋給客戶端 ...