经典论文解读系列:MapReduce 论文精读总结:简化大规模集群上的数据处理
🧠 MapReduce 论文解读总结:简化大规模集群上的数据处理
原文标题:MapReduce: Simplified Data Processing on Large Clusters
作者:Jeffrey Dean & Sanjay Ghemawat
发表时间:2004 年
发表机构:Google
📌 引言:大数据的挑战
在 2000 年代初,随着互联网的发展,数据量呈指数增长。处理 TB、PB 级别的数据变得非常困难,尤其是在成千上万台机器组成的分布式集群中:
- 如何并行处理任务?
- 如何处理节点失败?
- 如何高效调度和通信?
Google 提出了一种简单但强大的编程模型 —— MapReduce,极大地简化了大规模数据处理任务。
🧰 核心思想:Map + Reduce 两步走
MapReduce 编程模型由两个主要函数组成:
🔹 Map(映射)
将输入数据转为键值对(key, value),然后根据 key 进行分组。
map(String key, String value):// key: 文档ID, value: 文档内容for each word w in value:EmitIntermediate(w, 1)
🔹 Reduce(归约)
接收 Map 阶段生成的中间 key 及其所有 value 的集合,对这些值进行汇总处理。
reduce(String key, Iterator values):int result = 0for each v in values:result += vEmit(key, result)
🔄 执行流程
- 输入分片:将大文件切分为小块(通常为 64MB~128MB),每个 Map 任务处理一个块。
- Map 阶段:每个 Map 任务处理输入片段,输出中间 key-value。
- Shuffle & Sort:系统自动根据 key 对中间结果排序、分组,并传给对应 Reduce 任务。
- Reduce 阶段:每个 Reduce 任务处理一个或多个 key 的聚合值,最终写入输出文件。
⚙️ 系统优势
| 特性 | 描述 |
|---|---|
| 自动并行 | 系统自动调度任务在多个机器上并行执行 |
| 容错处理 | 节点失败后,任务会被重新调度 |
| 高扩展性 | 支持数千台机器,处理 TB~PB 级数据 |
| 简单易用 | 开发者只需实现 map() 和 reduce() 两个函数 |
📚 示例应用:词频统计(Word Count)
输入若干文档,统计每个单词出现次数:
Input:
doc1: "hello world"
doc2: "hello mapreduce"Map 输出:
("hello", 1), ("world", 1), ("hello", 1), ("mapreduce", 1)Reduce 输出:
("hello", 2), ("world", 1), ("mapreduce", 1)
🧩 实际应用场景
- 日志分析
- 网页索引构建
- 倒排索引生成
- 机器学习预处理
- 数据挖掘任务
🏗️ 工程实现:Hadoop 的诞生
Google 没有开源 MapReduce,但其论文促使了开源社区开发了 Apache Hadoop:
- 实现了 MapReduce 模型
- 搭配 HDFS 分布式文件系统
- 成为大数据处理的工业标准
💬 总结一句话
MapReduce 用简单的函数抽象,屏蔽了复杂的并行编程和容错机制,使得人人都能编写能在千台机器上运行的“大数据”程序。
📎 延伸阅读
- Google MapReduce 原论文
- Hadoop 官方网站
- MapReduce 与 Spark 的对比分析
欢迎点赞、收藏与关注
相关文章:
经典论文解读系列:MapReduce 论文精读总结:简化大规模集群上的数据处理
🧠 MapReduce 论文解读总结:简化大规模集群上的数据处理 原文标题:MapReduce: Simplified Data Processing on Large Clusters 作者:Jeffrey Dean & Sanjay Ghemawat 发表时间:2004 年 发表机构:Google…...
HarmonyOS 介绍
HarmonyOS简介 随着万物互联时代的开启,应用的设备底座将从几十亿手机扩展到数百亿IoT设备。全新的全场景设备体验,正深入改变消费者的使用习惯。 同时应用开发者也面临设备底座从手机单设备到全场景多设备的转变,全场景多设备的全新底座&am…...
每天一篇目标检测文献(六)——Part One
今天看的是《Object Detection with Deep Learning: A Review》 目录 一、摘要 1.1 原文 1.2 翻译 二、介绍 2.1 信息区域选择 2.2 特征提取 2.3 分类 三、深度学习的简要回顾 3.1 历史、诞生、衰落和繁荣 3.2 CNN架构和优势 一、摘要 1.1 原文 Due to object dete…...
ESXI 安装及封装第三方驱动和在ESXI系统下安装驱动
ESXI 安装及封装第三方驱动和在ESXI系统下安装驱动 准备工作在线安装 Windows PowerShell离线安装 Windows PowerShell更新在线更新离线更新 下载 ESXi-Customizer-PS-v2.6.0.ps1安装Python安装pip安装相关插件 下载离线捆绑包下载对应的网卡驱动(如果纯净版可以进去…...
【12】Ajax的原理和解析
一、前言 二、什么是Ajax 三、Ajax的基本原理 3.1 发送请求 3.2 解析内容 3.3 渲染网页 3.4 总结 四、Ajax 分析 五、过滤请求-筛选所有Ajax请求 一、前言 当我们在用 requests 抓取页面的时候,得到的结果可能会和在浏览器中看到的不一样&a…...
双塔模型2之如何选择正确的正负样本
双塔模型:正负样本 选对正负样本的作用 > 改进模型的结构 正样本 什么是正样本?答:曝光且有点击的 “用户-物品” 二元组 存在的问题:存在28法则,即少部分物品(比如热门物品)占大部分点击…...
《八大排序算法》
相关概念 排序:使一串记录,按照其中某个或某些关键字的大小,递增或递减的排列起来。稳定性:它描述了在排序过程中,相等元素的相对顺序是否保持不变。假设在待排序的序列中,有两个元素a和b,它们…...
清晰易懂的Rust安装与配置教程
Rust 是一门以安全性和性能著称的系统级编程语言,适合开发操作系统、游戏引擎和高性能服务。本教程将手把手教你安装 Rust 并配置开发环境,从安装到运行第一个程序,全程无坑! 一、安装 Rust(全平台通用) 1…...
零基础使用AI从0到1开发一个微信小程序
零基础使用AI从0到1开发一个微信小程序 准备操作记录 准备 想多尝试一些新的交互方式,但我没有相关的开发经验,html,JavaScript 等都不了解,看了一些使用AI做微信小程序的视频教程,觉得自己也行…...
基于Spring Boot的社区互助平台的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
【Elasticsearch入门到落地】10、初始化RestClient
接上篇《9、hotel数据结构分析》 上一篇我们讲解了导入的宾馆数据库tb_hotel表结构的具体含义,并分析如何建立其索引库。本篇我们来正式进入链接Elasticsearch的Java代码的编写阶段,先进行RestClient的初始化。 RestClient的初始化分为三步,…...
【AI大模型系列】DeepSeek V3的混合专家模型机制-MoE架构(八)
一、什么是MoE架构 MoE架构的核心思想是将输入数据分配给不同的专家子模型,然后将所有子模型的输出进行合并,以生成最终结果。这种分配可以根据输入数据的特征进行动态调整,确保每个专家处理其最擅长的数据类型或任务方面,从而实…...
HarmonyOS之深入解析如何根据url下载pdf文件并且在本地显示和预览
一、文件下载 ① 网络请求配置 下载在线文件,需要访问网络,因此需要在 config.json 中添加网络权限: {"module": {"requestPermissions": [{"name": "ohos.permission.INTERNET","reason&qu…...
HTML5贪吃蛇游戏开发经验分享
HTML5贪吃蛇游戏开发经验分享 这里写目录标题 HTML5贪吃蛇游戏开发经验分享项目介绍技术栈核心功能实现1. 游戏初始化2. 蛇的移动控制3. 碰撞检测4. 食物生成 开发心得项目收获后续优化方向结语 项目介绍 在这个项目中,我使用HTML5 Canvas和原生JavaScript实现了一…...
AI 的出现是否能替代 IT 从业者?
AI 的出现是否能替代 IT 从业者? AI 的快速发展正在深刻改变各行各业,IT 行业也不例外。然而,AI 并非完全替代 IT 从业者,而是与其形成互补关系。本文将从 AI 的优势、IT 从业者的不可替代性、未来趋势等方面,探讨 AI…...
git 操作记录
1、检查子模块是否在主分支上 [git submodule foreach --recursive \\n [ "$(git rev-parse HEAD)" "$(git rev-parse origin/master)" ] \\n && echo " 一致: $name" || echo "不一致: $name"] 使用 git submodule fore…...
QSettings用法实战(相机配置文件的写入和读取)
很多情况,在做项目开发的时候,将参数独立出来是比较好的方法 例如:相机的曝光次数、曝光时长等参数,独立成ini文件,用户可以在外面修改即可生效,无需在动代码重新编译等工作 QSettings便可以实现该功能 内…...
机器学习——集成学习框架(GBDT、XGBoost、LightGBM、CatBoost)、调参方法
一、集成学习框架 对训练样本较少的结构化数据领域,Boosting算法仍然是常用项 XGBoost、CatBoost和LightGBM都是以决策树为基础的集成学习框架 三个学习框架的发展是:XGBoost是在GBDT的基础上优化而来,CatBoost和LightGBM是在XGBoost的基础上…...
SpringBoot集成Logback终极指南:从控制台到云端的多维日志输出
一、基础配置:快速启用Logback 1. 依赖管理(SpringBoot默认支持Logback) <!-- 无需额外依赖,但需要排除其他日志框架 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>…...
[蓝桥杯 2023 省 A] 网络稳定性
题目来自DOTCPP: 思路: ①由于题目没有告诉我们成树形结构,可能成环。因此,我们要自己构建树。 ②本体我们通过kruskal重构树,按边权从大到小排序,那么查询的两个点的最近公共祖先权值就是答案。 ③在通…...
SSM框架加成SpringBoot项目
🍓博主介绍: 资深程序设计专家,专注于网站开发与文档写作,拥有六年互联网行业经验。精通Java、Python、PHP等主流语言,擅长从需求分析到系统设计的全流程开发。累计开发过数百个网站及应用程序,注重代码质量…...
鸿蒙项目源码-天气预报app-原创!原创!原创!
鸿蒙天气预报项目源码包运行成功含文档ArkTS语言。 我半个月写的原创作品,请尊重原创。 原创作品,盗版必究!!!! 原创作品,盗版必究!!!! 原创作品…...
一文聊聊接入钉钉H5微应用系统实现免登操作技术思路实现验证
一文聊聊接入钉钉H5微应用系统实现免登操作技术思路实现验证 如何创建钉钉应用实现H5端免登录创建钉钉内部应用1.进入钉钉开放平台,配置自己的应用信息2.配置应用相关信息(建议选择旧版,后续有一个token获取,新版会提示URL不安全&…...
测试开发-定制化测试数据生成(Python+jmeter+Faker)
实现步骤 步骤一:使用pythonfaker随机生成测试数据 在python中开发脚本,随机生成所需要的数据。import json from faker import Faker faker Faker(locale"zh_CN")def generate_faker_user():return {"name" : faker.name(),&qu…...
智能体开发平台与大模型关系图谱
架构层级分解(以飞速灵燕智能体平台为例)动态交互流程 3. 关键连接点说明 4. 典型数据流示例...
LinuxTCP/UDP基础概念
TCP(传输控制协议) TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议。它的主要特点包括: 面向连接:在传输数据之前,需要通过“三次握手”建立连接;传输结束后,通过“四次挥手”断开…...
docker日志大小和保存管理
目录 背景:云服务器小磁盘被docker日志占满 docker日志存放位置查看 避免被无感占满,建议进行配置日志选项,可以缩小文件保留大小和保留个数/时间 注意:compress选项 背景:云服务器小磁盘被docker日志占满 docke…...
Hive SQL实现近N周的数据统计查询
文/朱季谦 先前遇到过一个需求,需要基于HIVE统计近N周范围的数据,例如,统计近7周范围的数据指标。 需要用HIVE SQL去实现该功能,而HIVE SQL并没有PostgreSQL那样例如通过函数to_char((to_date(202550, YYYWW) - INTERVAL 5 weeks…...
【百日精通 JAVA | SQL篇 | 第一篇】初识数据库
一、数据库是什么? 数据库是一类软件,数据库的作用用于管理系统(这是一款成品软件,内部应用了很多数据结构)。 二、数据库分为两大类 1.关系型数据库 对于数据的要求比较严格 通常是以表格的方式来组织数据的。(和Excel差不多) 典型代表…...
大数据Spark(五十六):Spark生态模块与运行模式
文章目录 Spark生态模块与运行模式 一、Spark生态模块 二、Spark运行模式 Spark生态模块与运行模式 一、Spark生态模块 Spark 生态模块包括:SparkCore、SparkSQL、SparkStreaming、StructuredStreaming、MLlib 和 GraphX。与 Hadoop 相关的整个技术生态如下所示…...
