在這裡插入描述
讀取檔案過程簡述:
1、客戶端向namenode發起讀資料請求;
2、namenode響應請求並告訴客戶端要讀的檔案的資料塊位置(存在哪個datanode上);
3、客戶端到對應datanode讀取資料,當資料讀取到達末端,關閉與這個datanode的連線,並查詢下乙個資料塊,直到檔案資料全部讀完;
4、最後關閉輸出流。
讀取檔案過程詳細解讀:
在這裡插入描述
寫檔案過程簡述:
1、客戶端向namenode發起寫資料請求;
2、namenode相應請求(namenode會檢查要建立的檔案是否已經存在,建立者是否有許可權,成功會建立乙個記錄,失敗會報異常);
3、客戶端將檔案進行切片(分成資料塊),然後上傳資料塊,按照乙個乙個的形式進行傳送,每個資料塊都要寫到三datanode上;
4、成功後datanode會返回乙個確認佇列給客戶端,客戶端進行效驗,然後客戶端上傳下乙個資料塊到datanode,直到所有資料塊寫入完成;
5、當所有資料塊全部寫入成功後,客戶端會向namenode傳送乙個反饋並關閉資料流。
寫檔案過程詳細解讀:
1、使用 hdfs 提供的客戶端 client,向遠端的 namenode 發起 rpc 請求;
2、namenode 會檢查要建立的檔案是否已經存在,建立者是否有許可權進行操作,成功則會 為檔案建立乙個記錄,否則會讓客戶端丟擲異常;
3、當客戶端開始寫入檔案的時候,客戶端會將檔案切分成多個 packets,並在內部以資料佇列「data queue(資料佇列)」的形式管理這些 packets,並向 namenode 申請 blocks,獲取用來儲存 replicas 的合適的 datanode 列表,列表的大小根據 namenode 中 replication 的設定而定;
4、開始以 pipeline(管道)的形式將 packet 寫入所有的 replicas 中。客戶端把 packet 以流的方式寫入第乙個 datanode ,該 datanode 把該 packet 儲存之後,再將其傳遞給在此 pipeline 中的下乙個 datanode ,直到最後乙個 datanode ,這種寫資料的方式呈流水線的形式;
5、最後乙個 datanode 成功儲存之後會返回乙個 ack packet(確認佇列),在 pipeline 裡傳遞至客戶端,在客戶端的開發庫內部維護著"ack queue",成功收到 datanode 返回的 ack packet 後會從"data queue"移除相應的 packet;
6、如果傳輸過程中,有某個 datanode 出現了故障,那麼當前的 pipeline 會被關閉,出現故障的 datanode 會從當前的 pipeline 中移除,剩餘的 block 會繼續剩下的 datanode 中繼續 以 pipeline 的形式傳輸,同時 namenode 會分配乙個新的 datanode ,保持 replicas 設定的 數量;
7、客戶端完成資料的寫入後,會對資料流呼叫 close()方法,關閉資料流
HBase讀寫流程詳細解讀
插入一條資料到某個表,因為hbase通過zookeeper協調 client 首先連線zookeeper,從zookeeper中獲取表region相關資訊。根據要插入的rowkey,獲取指定的regionserver資訊,如果是批量提交的話,會把rowkey根據hregion location進行分...
hdfs讀寫流程 HDFS 讀寫流程(詳解)
hdfs hadoop distributed file system 是gfs的開源實現。1 優點 因為有多個副本,可以保證資料可靠,容錯性高 計算向資料移動,適用於批處理 適合大資料處理,gb tb pb級資料,百萬以上的檔案,十萬以上的節點 可以構建在廉價機器上,通過多副本提高可靠性 2 缺點...
hdfs讀寫流程 HDFS 檔案讀寫流程
開啟分布式檔案 呼叫分布式檔案 distributedfilesystem.open 方法 定址請求 從 namenode 處得到 datanode 的位址,distributedfilesystem使用 rpc 方式呼叫了namenode,namenode 返回存有該副本的datanode 位址,...