mapreduce的工作原理

MapReduce 是 Hadoop 中實現分布式并行計算的核心框架,其工作原理基于“分而治之”的思想,將大規模數據處理任務分解為 Map(映射) 和 Reduce(歸約) 兩個階段。

?一、MapReduce 核心流程

?1. Input 階段

- 輸入數據分片(Input Split)

輸入文件被按塊(默認 128MB)分割為多個分片(Input Split),每個分片由一個 Map 任務處理。

- 數據讀取

使用 ?InputFormat?(如 ?TextInputFormat?)讀取分片數據,將數據轉換為 ?<key, value>? 鍵值對(例如每行文本的偏移量為 Key,內容為 Value)。

2. Map 階段

- 并行處理

每個分片數據被分發到不同節點的 Map 任務并行處理。

- 用戶自定義邏輯

用戶通過實現 ?map()? 函數對每個 ?<key, value>? 進行處理,輸出中間結果 ?<intermediate_key, intermediate_value>?。

- 示例:在 WordCount 中,Map 階段將每行文本拆分為單詞,輸出 ?<單詞, 1>?。

?

3. Shuffle & Sort 階段

?

- 數據分區(Partition)

中間結果按 ?intermediate_key? 分配到不同分區(默認按哈希值分區),每個分區對應一個 Reduce 任務。

- 排序(Sort)

同一分區內的鍵值對按 ?intermediate_key? 排序,確保相同 Key 的數據聚集。

- 合并(Combine)

可選步驟,在 Map 節點本地對相同 Key 的值進行合并(如累加計數),減少網絡傳輸量。

4. Reduce 階段

- 數據拉取(Fetch)

Reduce 任務從所有 Map 節點拉取對應分區的數據。

- 用戶自定義邏輯

用戶通過實現 ?reduce()? 函數對相同 Key 的值進行聚合(如求和、去重等),輸出最終結果 ?<output_key, output_value>?。

- 示例:在 WordCount 中,Reduce 階段將 ?<單詞, [1,1,1...]>? 合并為 ?<單詞, 總次數>?。

?

5. Output 階段

?

- 結果寫入

使用 ?OutputFormat?(如 ?TextOutputFormat?)將 Reduce 結果寫入 HDFS 或本地文件。

二、關鍵設計理念

1.?分布式并行計算

通過多節點同時處理數據分片,顯著提升大數據處理效率。

2.?容錯性

節點故障時,任務會被重新調度到其他節點執行。

3.?數據本地化(Data Locality)

Map 任務優先在存儲數據的節點上執行,減少網絡傳輸開銷。

?

三、經典示例:WordCount

?

1.?輸入:文本文件

hello world

hadoop mapreduce

?

2.?Map 階段輸出:

(hello, 1), (world, 1), (hadoop, 1), (mapreduce, 1)

3.?Shuffle & Sort:

相同 Key 的值被聚合排序,如 ?hello? 對應所有 ?1?。

4.?Reduce 階段輸出:

(hello, 1), (world, 1), (hadoop, 1), (mapreduce, 1)

四、適用場景

- 批處理任務:日志分析、數據統計、ETL 等。

- 離線計算:對實時性要求不高的大規模數據處理。

五、局限性

- 實時性差:任務需等待所有數據處理完成。

- 迭代計算低效:多次迭代會產生大量中間磁盤讀寫。

- 資源管理優化:Hadoop 2.x 引入 YARN 后,資源利用率顯著提升。

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

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

相關文章

換季推廣不好做?DeepBI用一鍵托管的方式,讓廣告投放跑得快、準、穩

每年換季&#xff0c;尤其是春夏、秋冬交替的節點&#xff0c;都是電商平臺上各類季節性商品扎堆上新的高峰期。無論是服飾鞋包、家居戶外&#xff0c;還是母嬰用品、美妝護膚&#xff0c;許多商品都有著強烈的“時間窗口效應”——一旦錯過了熱賣期&#xff0c;流量下滑迅速&a…

Qt5.14.2+Cmake使用mingw64位編譯opencv4.5成功圖文教程

? 一、下載安裝相關編譯環境軟件 1.1 Python3.8&#xff1a;安裝路徑:C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32 安裝包&#xff1a;python3.8.exe 1.2 QT5.14.2&#xff1a;安裝路徑:C:\Qt\Qt5.14.2 1.3 opencv4.5&#xff1a;解壓路徑D:\o…

OpenBMC:BmcWeb 處理http請求3 字典樹查找節點

OpenBMC:BmcWeb 處理http請求2 查找路由對象-CSDN博客 findRouteByPerMethod實際上是調用了perMethod.trie.find(url);來查找路由對象的 class Trie {struct FindResult{unsigned ruleIndex;std::vector<std::string> params;};FindResult findHelper(const std::string…

Openssl自簽證書相關知識

1.前提 檢查是否已安裝 openssl $ which openssl /usr/bin/openssl 2.建立CA授權中心 2.1.生成ca私鑰(ca-prikey.pem) 初始化 OpenSSL 證書頒發機構(CA)的序列號文件 在生成證書時,ca.srl 的初始序列號需正確初始化(如 01),否則可能導致證書沖突 這會將 01 顯示在屏幕…

K個一組翻轉鏈表--囊括半數鏈表題的思想

K 個一組翻轉鏈表 這道算法題就是鏈表多個算法思想的結合&#xff0c;解決這一道leetcodehot100的鏈表題至少能做一半了 大概有一下幾個點 1.鏈表定位 2.鏈表翻轉 3.哨兵節點 4.鏈表合并 看看題目 給你鏈表的頭節點 head &#xff0c;每 k 個節點一組進行翻轉&#xff…

Flutter敏感詞過濾實戰:基于AC自動機的高效解決方案

Flutter敏感詞過濾實戰&#xff1a;基于AC自動機的高效解決方案 在社交、直播、論壇等UGC場景中&#xff0c;敏感詞過濾是保障平臺安全的關鍵防線。本文將深入解析基于AC自動機的Flutter敏感詞過濾實現方案&#xff0c;通過原理剖析實戰代碼性能對比&#xff0c;帶你打造毫秒級…

UML中的用例圖和類圖

在UML&#xff08;統一建模語言&#xff09;中&#xff0c;**用例圖&#xff08;Use Case Diagram&#xff09;和類圖&#xff08;Class Diagram&#xff09;**是兩種最常用的圖表類型&#xff0c;分別用于描述系統的高層功能和靜態結構。以下是它們的核心概念、用途及區別&…

深入解析:HarmonyOS Design設計語言的核心理念

深入解析&#xff1a;HarmonyOS Design設計語言的核心理念 在當今數字化迅速發展的時代&#xff0c;用戶對操作系統的體驗要求越來越高。華為的HarmonyOS&#xff08;鴻蒙操作系統&#xff09;應運而生&#xff0c;旨在為用戶提供全場景、全設備的智慧體驗。其背后的設計語言—…

Vue 類與樣式

數據綁定的一個常見需求場景是操縱元素的 CSS class 列表和內聯樣式。因為 class 和 style 都是 attribute&#xff0c;我們可以和其他 attribute 一樣使用 v-bind 將它們和動態的字符串綁定。但是&#xff0c;在處理比較復雜的綁定時&#xff0c;通過拼接生成字符串是麻煩且易…

Android 中獲取顏色資源

在 Android 開發中&#xff0c;資源&#xff08;如字符串、顏色等&#xff09;通常存儲在 res 文件夾中&#xff0c;并通過資源 ID 進行訪問。資源 ID 是一個整型值&#xff0c;用于唯一標識資源&#xff0c;若需要將資源轉換為整型值&#xff0c;通常是指獲取資源 ID 或從資源…

Linux中的文件尋址

Linux的層級結構 在Linux中一切皆文件 其中 要注意在命令行中看實際選擇寫哪一種路徑 相對路徑 絕對路徑名稱的簡寫&#xff0c;省略了用戶當前所在的系統位置此名稱只有在管理當前所在系統目錄中子文件時才能使用系統中不以/開有的文件名稱都為相對路徑在程序操作時會自動…

洛谷: P1825 [USACO11OPEN] Corn Maze S

原題鏈接:P1825 [USACO11OPEN] Corn Maze S - 洛谷 題目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasnt just any corn maze: it featured several gravity-powered teleporter slides, which cause cows to teleport instantly from…

探秘DeepSeek:開源AI領域的創新先鋒

一、引言 在人工智能迅猛發展的當下&#xff0c;眾多先進的模型如雨后春筍般涌現&#xff0c;而 DeepSeek 無疑是其中備受矚目的一顆新星。它以獨特的技術優勢和廣泛的應用場景&#xff0c;在 AI 領域嶄露頭角。 二、DeepSeek 的誕生與背景 DeepSeek 由來自廣東省的中國企業…

Spring Boot啟動流程

1. 啟動類與main方法 入口點&#xff1a;Spring Boot應用通常有一個帶有SpringBootApplication注解的主類&#xff0c;并包含一個public static void main(String[] args)方法。 SpringBootApplication是一個組合注解&#xff0c;包含了&#xff1a; Configuration: 標記該類為…

設計模式——設計模式理念

文章目錄 參考&#xff1a;[設計模式——設計模式理念](https://mp.weixin.qq.com/s/IEduZFF6SaeAthWFFV6zKQ)參考&#xff1a;[設計模式——工廠方法模式](https://mp.weixin.qq.com/s/7tKIPtjvDxDJm4uFnqGsgQ)參考&#xff1a;[設計模式——抽象工廠模式](https://mp.weixin.…

Android 16開發實戰指南|鎖屏交互+Vulkan優化全解析

一、環境搭建與項目初始化 1. 安裝Android Studio Ladybug 下載地址:Android Studio官網關鍵配置: # 安裝后立即更新SDK SDK Manager → SDK Platforms → 安裝Android 16 (Preview) SDK Manager → SDK Tools → 更新Android SDK Build-Tools至34.0.0 # 通過命令行安裝SDK組…

selenium應用測試場景

Selenium 是主流的 Web 自動化測試框架&#xff0c;主要用于基于瀏覽器的 Web 應用測試。以下是 Selenium 的典型測試場景和適用場景&#xff0c;以及與 Appium 的對比&#xff1a; 1. Selenium 的核心測試場景 (1) Web 功能測試&#xff08;Functional Testing&#xff09; 表…

[Vue]生命周期

在編程領域生命周期指的即一個對象從創建到銷毀的過程。 Vue的生命周期大概分為四個階段&#xff1a; 創建階段 在該階段&#xff0c;vue的主要工作是為渲染模板做準備工作。比如處理data中的數據&#xff0c;使其變為響應式數據。在html中普通的數據往往不具備響應式等一系列…

低代碼平臺,智慧城市建設的加速器

隨著城市數字化進程加速&#xff0c;智慧停車、智慧交通、城市數據治理等領域對技術敏捷性和開發效率的需求日益凸顯。低代碼平臺憑借其可視化開發、模塊化設計和快速部署能力&#xff0c;正在成為推動城市治理智能化升級的核心工具。本文將通過低代碼在智慧城市建設上應用的展…

14 配置Hadoop集群-配置歷史和日志服務

第一課時 一、導入 前面的課程我們搭建了hadoop集群&#xff0c;并成功啟動了它&#xff0c;接下來我們看看如何去使用集群。 測試的內容包括&#xff1a;1.上傳文件&#xff0c;2.下載文件&#xff0c;3.運行程序 二、授新 &#xff08;一&#xff09;配置運行任務的歷史服務器…