HDFS存儲原理與MapReduce計算模型

HDFS存儲原理

1. 架構設計
  • 主從架構:包含一個NameNode(主節點)和多個DataNode(從節點)。
    • NameNode:管理元數據(文件目錄結構、文件塊映射、塊位置信息),不存儲實際數據。
    • DataNode:存儲實際數據塊,負責處理客戶端的讀寫請求,并定期向NameNode發送心跳和塊報告。
2. 數據分塊與副本機制
  • 分塊存儲:文件被分割為固定大小的塊(默認128MB或256MB),便于并行處理和存儲優化。
  • 多副本冗余:每個塊默認保存3個副本,分布策略為:
    • 第1個副本:寫入客戶端所在節點(若為集群外則隨機選節點)。
    • 第2個副本:同一機架的另一節點。
    • 第3個副本:不同機架的節點。
  • 容錯性:通過副本機制和機架感知策略,保障數據可靠性與讀取效率。
3. 讀寫流程
  • 寫入流程

    1. 客戶端向NameNode申請寫入,NameNode分配DataNode列表。
    2. 客戶端將數據塊寫入第一個DataNode,后者通過管道依次復制到其他副本節點。
    3. 寫入成功后,NameNode更新元數據。
  • 讀取流程

    1. 客戶端向NameNode獲取文件塊的位置信息。
    2. 直接從最近的DataNode(基于網絡拓撲)讀取數據塊,支持并發讀取多個塊。
4. 容錯與高可用
  • DataNode故障:NameNode通過心跳檢測移除失效節點,并觸發副本復制。
  • NameNode HA(Hadoop 2.x+):通過主備NameNode和JournalNode實現故障自動切換,解決單點問題。

MapReduce計算模型

1. 核心階段
  • Map階段

    • 輸入數據被劃分為分片(Split),每個分片由一個Map任務處理。
    • Map任務輸出中間鍵值對(Key-Value),可本地聚合(Combiner)減少數據傳輸。
  • Shuffle與Sort階段

    • 分區(Partitioning):按Key的哈希值分配到不同Reduce任務。
    • 排序與合并:Map端對輸出排序,Reduce端合并相同Key的數據。
  • Reduce階段

    • 對Shuffle后的數據執行用戶定義的Reduce邏輯,生成最終結果。
2. 執行流程
  1. 作業提交:客戶端提交任務到ResourceManager(YARN架構)。
  2. 任務調度:ApplicationMaster分配Map/Reduce任務到NodeManager。
  3. 數據本地化優化:優先調度Map任務到存儲數據的節點,減少網絡IO。
  4. 結果輸出:Reduce結果寫入HDFS或其他存儲系統。
3. 容錯機制
  • 任務重試:失敗的Map/Reduce任務會被重新調度到其他節點。
  • 推測執行:對慢節點啟動備份任務,防止個別任務拖慢整體進度。
4. 適用場景
  • 離線批處理:適合大規模數據并行計算(如日志分析、ETL)。
  • 局限性:不適合低延遲(實時)場景,迭代計算效率較低(需多次讀寫HDFS)。

總結

  • HDFS:通過分塊、多副本和機架感知實現高吞吐、高可靠存儲。
  • MapReduce:以分而治之思想,通過Map、Shuffle/Sort、Reduce三階段處理海量數據,結合容錯機制保障穩定性。兩者共同構成Hadoop生態的核心計算與存儲基礎。

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

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

相關文章

Function calling的過程

文章目錄 逐段講清 **LLM Function Calling(函數調用)** 的典型鏈路。1. 角色與概念 | Actors & Concepts2. 全流程時序 | End-to-End Sequence3. 關鍵細節 | Key Implementation Notes4. 最小可用示例(偽代碼) | Minimal Exa…

GlobalExceptionHandler 自定義異常類 + 處理validation的異常

在 Spring Boot 項目中,?自定義異常通常用于處理特定的業務邏輯錯誤,并結合全局異常處理器(ControllerAdvice)統一返回結構化的錯誤信息。 一.全局異常處理器: 1. 自定義異常類? 定義一個繼承自 RuntimeExceptio…

軟件測試過程中如何定位BUG

在軟件測試過程中,定位BUG是確保軟件質量的關鍵環節。有效的BUG定位不僅能幫助開發人員快速修復問題,還能提升整個軟件項目的效率。以下是軟件測試中定位BUG的系統性方法和策略: 一、復現BUG 步驟: 收集信息:記錄BUG…

如何優化Elasticsearch的搜索性能?

優化 Elasticsearch 的搜索性能需要從索引設計、查詢優化、硬件配置和集群調優等多方面入手。以下是系統化的優化策略和實操建議: 一、索引設計優化 1. 合理設置分片數 分片大小:單個分片建議 10-50GB(超過50GB會影響查詢性能)。分片數量: 總分片數 ≤ 節點數 1000(避免…

臺式電腦CPU天梯圖_2025年臺式電腦CPU天梯圖

CPU的選擇絕對是重中之重,它關乎了一臺電腦性能好壞。相信不少用戶,在挑選CPU的時候不知道誰強誰弱,尤其是intel和AMD兩款CPU之間。下面通過2025年臺式電腦CPU天梯圖來了解下這兩款cpu. 2025年臺式電腦CPU天梯圖 2025年臺式電腦CPU天梯圖包含了老舊型號以及12代、13代、14代…

HarmonyOS_ArkTs_API(1)

HarmonyOS_ArkTs_API(1) 概述 此API服務模塊是獨自開發的應用程序的核心骨架,提供了鴻蒙OS ArkTS客戶端組件和Java Spring Boot后端之間的強大通信接口。該模塊采用清晰的架構方法處理所有HTTP請求、響應解析和錯誤處理,確保系統各部分間通信的一致性和…

matlab雷達定位仿真

一、邊掃描邊跟蹤雷達仿真 邊掃描邊跟蹤(BISTAR)雷達仿真是一種實時雷達信號處理的技術,用于模擬雷達系統的操作過程,特別是那些具備連續掃描能力的雷達。它的基本原理和流程可以分為以下幾個步驟: (1&…

互斥鎖、自旋鎖、讀寫鎖、悲觀鎖、樂觀鎖的應用場景

一:并發 1.1MySQL并發事務訪問相同記錄 (1)讀-讀 不影響 (2)寫-寫 寫的數據需要一個一個來,排隊執行 (3)讀-寫 兩次讀…

KEYSIGHT N9320B是德科技N9320B頻譜分析儀

KEYSIGHT N9320B是德科技N9320B頻譜分析儀 附加功能&#xff1a; 頻率范圍&#xff1a;9 kHz 至 3 GHz 分辨率帶寬&#xff1a;10 Hz 至 1 MHz DANL&#xff1a;-130 dBm&#xff0c;-148 dBm&#xff0c;帶可選前置放大器 整體幅度精度&#xff1a;<1.5 dB 最小非零掃…

零基礎開始的網工之路第十四天------Linux程序管理

目錄 一、Linux程序與進程 1、程序,進程,線程的概念 2、程序和進程的區別 3、進程和線程的區別 二、Linux進程基礎(生命周期) 1、進程生命周期 2、父子進程的關系 三、程序管理 1、常見的軟件包類型 四、Linux操作系統啟動流程詳解 1、概述 2、啟動流程核心階段 1…

群輝(synology)NAS老機器連接出現網頁端可以進入,但是本地訪問輸入一樣的賬號密碼是出現錯誤時解決方案

群輝&#xff08;synology&#xff09;NAS老機器連接出現網頁端可以進入&#xff0c;但是本地訪問輸入一樣的賬號密碼是出現錯誤時解決方案 老機器 裝的win7 系統 登入后端網頁端的時候正常&#xff0c;但是本地訪問登入時輸入登入網頁端一樣的密碼時候出現問題解決方案 1.登…

單例模式的隱秘危機

引言 單例模式作為設計模式中的基石&#xff0c;廣泛應用于配置管理、線程池、緩存系統等關鍵場景。然而&#xff0c;許多開發者誤以為“私有構造函數”足以保障其唯一性&#xff0c;卻忽視了反射機制、對象克隆、序列化反序列化這三把“隱形利刃”——它們能繞過常規防御&…

DMBOK對比知識點對比(3)

1.數據倉庫建設方法(Inmon、Kimball) 數據倉庫建設方法(Inmon、Kimball)P293方法

Python+VR:如何讓虛擬世界更懂你?——用戶行為分析的實踐

友友們好! 我是Echo_Wish,我的的新專欄《Python進階》以及《Python!實戰!》正式啟動啦!這是專為那些渴望提升Python技能的朋友們量身打造的專欄,無論你是已經有一定基礎的開發者,還是希望深入挖掘Python潛力的愛好者,這里都將是你不可錯過的寶藏。 在這個專欄中,你將會…

游戲引擎學習第311天:支持手動排序

倉庫: https://gitee.com/mrxiao_com/2d_game_7(已滿) 新倉庫: https://gitee.com/mrxiao_com/2d_game_8 回顧并為今天的內容定下基調 我們接下來要繼續完成之前開始的工作&#xff0c;上周五開始的部分內容&#xff0c;雖然當時對最終效果還不太確定&#xff0c;但現在主要任…

數據結構第2章緒論 (竟成)

第 2 章 緒論 本章主要介紹數據結構相關的一些基本概念&#xff0c;是后續章節的基礎。我們也將 408 考試大綱中&#xff0c;關于數據結構部分的考查目標羅列在這里&#xff0c;供各位考生參考&#xff1a; 1.掌握數據結構的基本概念、基本原理和基本方法。 2.掌握數據的邏輯結…

spring boot 攔截器HandlerInterceptor 不生效的原因排查

public class UserInterceptor implements HandlerInterceptor項目添加一個攔截器&#xff0c;發現未生效 1、排查攔截本身是否注入了springbean 容器 Slf4j Component public class LoginInterceptor implements HandlerInterceptor {2、排查springboot 項目掃描范圍是否包含…

用Python繪制動態愛心:代碼解析與浪漫編程實踐

用Python繪制動態愛心:代碼解析與浪漫編程實踐 一、摘要二、整體架構流程1. 初始化配置模塊2. 幾何繪制引擎3. 動畫控制系統4. 輔助功能模塊三、技術細節解析1. Turtle性能優化2. 數學公式應用3. 顏色漸變算法4. 異常處理機制5. 動畫節奏控制四、結論與展望附:完整代碼一、摘…

WPS 免登錄解鎖編輯

遇到 WPS 需要登錄才能啟用編輯功能&#xff1f; 如何免登錄使用編輯功能&#xff1f; 方法一 解鎖方法 1、關閉 WPS&#xff1b; 2、桌面右鍵→ “新建”→“文本文檔”&#xff0c;粘貼以下內容&#xff08;見最下面&#xff09;&#xff1b;編碼保持默認&#xff08;ANSI …

ORDER BY子句在一個 SQL 查詢中只能出現一次

order by A.create_time,A.update_time desc和 order by A.create_time desc,A.update_time desc有區別嗎&#xff1f; 關鍵區別 第一個排序中 create_time 是升序(默認是ASC)&#xff0c;第二個是降序(DESC) 只有在 DESC 關鍵字緊跟在列名后面時&#xff0c;該列才會按降序排…