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.mzph.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;配置运行任务的历史服务器…