Hadoop3:客戶端向HDFS寫數據流的流程講解(較枯燥)

一、場景描述

我們登陸HDFSweb端,上傳一個大文件。

二、流程圖

在這里插入圖片描述

三、講解

流程1(Client與NameNode交互)

1、HDFS client創建DistributedFileSystem,通過dfsNameNode進行2次(一來一回4次)對話(request和response),如圖所示。
2、第1次請求,NameNode會進行2.1和2.2的檢查工作。
3、第2次請求,上傳一個BlockNameNode選定的存儲數據的節點(DataNode),返回給client

流程2(Client與DataNode交互)

4、HDFS client創建FSDataOutputStream(一種輸出流),通過它和集群中選定的存儲數據的DataNode交互
5、首先,和選定的DataNode打通數據流通道。
這里,client只需要和最近的節點直接交互,其他副本節點和該節點交互,無需和client交互。這里涉及到最近節點距離計算。
6、開始傳輸數據給最近節點,這里傳輸的時候,DataNode會先存一份在內存,同時,用內存的數據,寫入磁盤和傳輸到其他DataNode節點。就是圖中第7步
7、所有節點存儲完成后,依次返回ack(了解消息隊列的,比如kafka,都知道ack是什么吧),告知存儲結果。最終由最近節點,反饋給client存儲結果。
8、當一個Block傳完之后,客戶端會再次請求NameNode,再次上傳一個Block。重復步驟3-8,直到,完整的文件傳輸完畢。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13095.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13095.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13095.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

x264 幀類型代價計算原理:slicetype_mb_cost 函數分析

slicetype_mb_cost 函數 函數功能 計算每個宏塊 MB 的代價 cost。函數參數分析 x264_t *h:全局編碼結構體x264_mb_analysis_t *a:宏塊分析結構體x264_frame_t **frames:系列幀數據結構體int p0:幀序號之一,一般指向靠前幀int p1:幀序號之一,一般指向靠后幀int b:幀標志…

如何修改antd的pagination翻頁組件為中文?

很簡單 加一個屬性 locale{{ items_per_page: 頁 }}<PaginationpageSize{pagination.pageSize}locale{{ items_per_page: 頁 }}current{pagination.current}showTotal{(total, range) > 共有 ${pagination.total} 條數據}style{{ textAlign: right }}onChange{(page: num…

Go微服務開源框架kratos的依賴注入關系總結

該文章為學習開源微服務框架kratos的學習筆記&#xff01;官方文檔見&#xff1a;簡介 | Kratos Kratos 一套輕量級 Go 微服務框架&#xff0c;包含大量微服務相關框架及工具。 一、Kratos 項目結構簡介 通過 Kratos 工具生成的 Go工程化項目模板如下&#xff1a; applicati…

【半夜學習MySQL】復合查詢(含多表查詢、自連接、單行/多行子查詢、多列子查詢、合并查詢等詳解)

&#x1f3e0;關于專欄&#xff1a;半夜學習MySQL專欄用于記錄MySQL數據相關內容。 &#x1f3af;每天努力一點點&#xff0c;技術變化看得見 文章目錄 回顧基本查詢多表查詢自連接子查詢單行子查詢多行子查詢多列子查詢在from子句中使用子查詢合并查詢 回顧基本查詢 下面使用…

計算機網絡 -- 序列化與反序列化

一 協議的重要性 我們都知道&#xff0c;在進行網絡通信的過程中&#xff0c;通信的雙方可以是不同的設備&#xff0c;不同的平臺&#xff0c;不同的平臺&#xff0c;比如說&#xff0c;手機用戶和電腦用戶進行通信&#xff0c;ios系統和安卓系統進行通信。 自己的數據&#xf…

抖店商品詳情API接口(店鋪|標題|主圖|價格|SKU屬性等)

抖店商品詳情API接口(店鋪|標題|主圖|價格|SKU屬性等) 抖店商品詳情API接口是指通過調用抖音開放平臺提供的接口&#xff0c;獲取抖店上商品的詳細信息的方法。 抖店開放平臺提供了一系列的接口&#xff0c;可以用于獲取商品的基本信息、價格、庫存、銷量、評價等各種信息。以…

UIKit之圖片瀏覽器

功能需求 實現一個圖片瀏覽器&#xff0c;點擊左右按鈕可以切換背景圖&#xff0c;且更新背景圖對應的索引頁和圖片描述內容。 分析&#xff1a; 實現一個UIView的子類即可&#xff0c;該子類包含多個按鈕。 實現步驟&#xff1a; 使用OC語言&#xff0c;故創建cocoa Touch類…

數據庫的存儲過程、函數與觸發器

使用下面的場景來引入 1.創建表 CREATE DATABASE staff; USE staff; CREATE TABLE employee(id INT NOT NULL AUTO_INCREMENT,userName VARCHAR(255),birthDate DATE,idCard VARCHAR(255),loginName VARCHAR(255),PASSWORD VARCHAR(255),mobile VARCHAR(255),email VARCHAR(2…

開源連鎖收銀系統哪個好

針對開源連鎖收銀系統的選擇&#xff0c;商淘云是一個備受關注的候選。商淘云以其功能豐富、易于定制和穩定性等優勢&#xff0c;吸引了眾多企業和開發者的關注。下面將從四個方面探討商淘云開源連鎖收銀系統的優勢&#xff1a; 首先&#xff0c;商淘云提供了豐富的功能模塊。作…

如何查看SNMP設備的OID

什么是OID和MIB OID OID 代表對象標識符。 OID 唯一地標識 MIB 層次結構中的托管對象。 這可以被描述為一棵樹&#xff0c;其級別由不同的組織分配。MIB MIB&#xff08;管理信息基&#xff09;提供數字化OID到可讀文本的映射。 使用MIB Browser掃描OID 我的設備是一臺UPS SN…

【Uniapp小程序】onShareAppMessage異步處理請求完后再分享

分享按鈕 <button type"primary" open-type"share">保存并分享 </button>修改onShareAppMessage saveImage為promise方法 async onShareAppMessage() {const saveRes await saveImage();if (saveRes.code 200) {return {title: "tit…

每日兩題 / 236. 二叉樹的最近公共祖先 124. 二叉樹中的最大路徑和(LeetCode熱題100)

236. 二叉樹的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; dfs統計根節點到p&#xff0c;q節點的路徑&#xff0c;兩條路徑中最后一個相同節點就是公共祖先 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* …

windows部署騰訊tmagic-editor02-Runtime

創建editor項目 將上一教程中的hello-world復制過來&#xff0c;改名hello-editor 創建runtime項目 和hello-editor同級 pnpm create vite刪除src/components/HelloWorld.vue 按鈕需要用的ts types依賴 pnpm add tmagic/schema tmagic/stage實現runtime 將hello-editor中…

【C語言】5.C語言函數(2)

文章目錄 7.嵌套調?和鏈式訪問7.1 嵌套調?7.2 鏈式訪問 8.函數的聲明和定義8.1 單個?件8.2 多個?件8.3 static 和 extern8.3.1 static 修飾局部變量8.3.2 static 修飾全局變量8.3.3 static 修飾函數 7.嵌套調?和鏈式訪問 7.1 嵌套調? 嵌套調用就是函數之間的互相調用。…

Docker安裝Mosquitto

在物聯網項目中&#xff0c;我們經常用到MQTT協議&#xff0c;用MQTT協議做交互就需要部署一個MQTT服務&#xff0c;而mosquitto是一個常用的MQTT應用服務&#xff0c; Mosquitto是一個實現了消息推送協議MQTT v3.1的開源消息代理軟件。MQTT&#xff08;Message Queuing Teleme…

python的幾個關于文本文件的demo腳本

部分來自WeTab AI PRO 1.在文末添加一行文字 def add_endline(filename, texts): # 文本末尾增加一行with open(filename, a) as file:file.write(f\n{texts})file.close() 當使用 open() 函數打開文件時&#xff0c;第二個參數指定了文件的打開模式。常見的文件打開模式包…

【LeetCode】每日一題 2024_5_14 完成所有任務需要的最少輪數(哈希)

文章目錄 LeetCode&#xff1f;啟動&#xff01;&#xff01;&#xff01;題目&#xff1a;完成所有任務需要的最少輪數題目描述代碼與解題思路 每天進步一點點 LeetCode&#xff1f;啟動&#xff01;&#xff01;&#xff01; 題目&#xff1a;完成所有任務需要的最少輪數 題…

拿到測試點如何跑

首先你要知道你測試點文件的位置,然后你要創建一個接收結果的文件,將你代碼中的std::cin替換成infile,std::cout替換成outfile即可 #include <fstream> int main() {// 打開輸入文件std::ifstream infile("C:\\Users\\Downloads\\P4779_1.in");// 打開輸出文件…

OpenCV 圖像退化與增強

退化 濾波 img_averagingcv2.blur(img2,(3,3)) #均值濾波 img_median cv2.medianBlur(img2,3) #中值濾波高斯模糊 result cv2.GaussianBlur(source, (11,11), 0)高斯噪聲 def add_noise_Guass(img, mean0, var0.01): # 添加高斯噪聲img np.array(img / 255, dtypefloat…

麒麟 V10 安裝docker2

1. 查看系統版本 2.安裝docker-ce 添加源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安裝docker yum install docker-ce --allowerasing 重啟docker systemctl start docker 3.安裝nvidia-container-runtime 添…