为什么MapReduce会被硅谷一线公司淘汰?

你好,我是蔡元楠。

今天我要与你分享的主题是“为什么 MapReduce 会被硅谷一线公司淘汰”。

我有幸几次与来 Google 参观的同行进行交流,当谈起数据处理技术时,他们总是试图打探 MapReduce 方面的经验。

这一点让我颇感惊讶,因为在硅谷,早已没有人去谈论 MapReduce 了。

今天这一讲,我们就来聊聊为什么 MapReduce 会被硅谷一线公司淘汰。

我们先来沿着时间线看一下超大规模数据处理的重要技术以及它们产生的年代。

我认为可以把超大规模数据处理的技术发展分为三个阶段:石器时代,青铜时代,蒸汽机时代。

石器时代

我用“石器时代”来比喻 MapReduce 诞生之前的时期。

数据的大规模处理问题早已存在。早在 2003 年的时候,Google 就已经面对大于 600 亿的搜索量。

但是数据的大规模处理技术还处在彷徨阶段。当时每个公司或者个人可能都有自己的一套工具处理数据。却没有提炼抽象出一个系统的方法。

青铜时代

2003 年,MapReduce 的诞生标志了超大规模数据处理的第一次革命,而开创这段青铜时代的就是下面这篇论文《MapReduce: Simplified Data Processing on Large Clusters》。

杰夫(Jeff Dean)和桑杰(Sanjay Ghemawat)从纷繁复杂的业务逻辑中,为我们抽象出了 Map 和 Reduce 这样足够通用的编程模型。后面的 Hadoop 仅仅是对于 GFS、BigTable、MapReduce 的依葫芦画瓢,我这里不再赘述。

蒸汽机时代

到了 2014 年左右,Google 内部已经几乎没人写新的 MapReduce 了。

2016 年开始,Google 在新员工的培训中把 MapReduce 替换成了内部称为 FlumeJava(不要和 Apache Flume 混淆,是两个技术)的数据处理技术。

这标志着青铜时代的终结,同时也标志着蒸汽机时代的开始。

我跳过“铁器时代”之类的描述,是因为只有工业革命的概念才能解释从 MapReduce 进化到 FlumeJava 的划时代意义。

Google 内部的 FlumeJava 和它后来的开源版本 Apache Beam 所引进的统一的编程模式,将在后面的章节中为你深入解析。

现在你可能有一个疑问 :为什么 MapReduce 会被取代?今天我将重点为你解答。

高昂的维护成本

使用 MapReduce,你需要严格地遵循分步的 Map 和 Reduce 步骤。

当你构造更为复杂的处理架构时,往往需要协调多个 Map 和多个 Reduce 任务。然而,每一步的 MapReduce 都有可能出错。

为了这些异常处理,很多人开始设计自己的协调系统(orchestration)。例如,做一个状态机(state machine)协调多个 MapReduce,这大大增加了整个系统的复杂度。

如果你搜 “MapReduce orchestration” 这样的关键词,就会发现有很多书,整整一本都在写怎样协调 MapReduce。你可能会惊讶于 MapReduce 的复杂度。

我也经常会看到一些把 MapReduce 说得过度简单的误导性文章。例如,“把海量的××数据通过 MapReduce 导入大数据系统学习,就能产生××人工智能”。似乎写文的“专家”动动嘴就能点石成金。

而现实的 MapReduce 系统的复杂度是超过了“伪专家”的认知范围的。

下面我来举个例子,告诉你 MapReduce 有多复杂。

想象一下这个情景,你的公司要预测美团的股价,其中一个重要特征是活跃在街头的美团外卖电动车数量,而你负责处理所有美团外卖电动车的图片。

在真实的商用环境下,为了解决这个问题,你可能至少需要 10 个 MapReduce 任务:

首先,我们需要搜集每日的外卖电动车图片。

数据的搜集往往不全部是公司独自完成,许多公司会选择部分外包或者众包。所以在数据搜集(Data collection)部分,你至少需要 4 个 MapReduce 任务:

1、数据导入(data ingestion):用来把散落的照片(比如众包公司上传到网盘的照片)下载到你的存储系统。

2、数据统一化(data normalization):用来把不同外包公司提供过来的各式各样的照片进行格式统一。

3、数据压缩(compression):你需要在质量可接受的范围内保持最小的存储资源消耗 。

4、数据备份(backup):大规模的数据处理系统我们都需要一定的数据冗余来降低风险。

仅仅是做完数据搜集这一步,离真正的业务应用还差得远。

真实的世界是如此不完美,我们需要一部分数据质量控制(quality control)流程,比如:

1、数据时间有效性验证 (date validation):检测上传的图片是否是你想要的日期的。

2、照片对焦检测(focus detection):你需要筛选掉那些因对焦不准而无法使用的照片。最后才到你负责的重头戏——找到这些图片里的外卖电动车。

而这一步因为人工的介入是最难控制时间的。你需要做 4 步:

1、数据标注问题上传(question uploading):上传你的标注工具,让你的标注者开始工作。

2、标注结果下载(answer downloading):抓取标注完的数据。

3、标注异议整合(adjudication):标注异议经常发生,比如一个标注者认为是美团外卖电动车,另一个标注者认为是京东快递电动车。

4、标注结果结构化(structuralization): 要让标注结果可用,你需要把可能非结构化的标注结果转化成你的存储系统接受的结构。

这里我不再深入每个 MapReduce 任务的技术细节,因为本章的重点仅仅是理解 MapReduce 的复杂度。

通过这个案例,我想要阐述的观点是,因为真实的商业 MapReduce 场景极端复杂,像上面这样 10 个子任务的 MapReduce 系统在硅谷一线公司司空见惯。

在应用过程中,每一个 MapReduce 任务都有可能出错,都需要重试和异常处理的机制。

所以,协调这些子 MapReduce 的任务往往需要和业务逻辑紧密耦合的状态机。这样过于复杂的维护让系统开发者苦不堪言。

时间性能“达不到”用户的期待

除了高昂的维护成本,MapReduce 的时间性能也是个棘手的问题。

MapReduce 是一套如此精巧复杂的系统,如果使用得当,它是青龙偃月刀,如果使用不当,它就是一堆废铁。不幸的是并不是每个人都是关羽。

在实际的工作中,不是每个人都对 MapReduce 细微的配置细节了如指掌。

在现实中,业务往往需求一个刚毕业的新手在 3 个月内上线一套数据处理系统,而他很可能从来没有用过 MapReduce。这种情况下开发的系统是很难发挥好 MapReduce 的性能的。

你一定想问,MapReduce 的性能优化配置究竟复杂在哪里呢?我想 Google500 多页的 MapReduce 性能优化手册足够说明它的复杂度了。

这里我举例讲讲 MapReduce 的分片(sharding)难题,希望能窥斑见豹,引发大家的思考。

Google 曾经在 2007 年到 2012 年间做过一个对于 1PB 数据的大规模排序实验,来测试 MapReduce 的性能。

从 2007 年的排序时间 12 小时,到 2012 年的排序时间缩短至 0.5 小时。即使是 Google,也花了 5 年的时间才不断优化了一个 MapReduce 流程的效率。

2011 年,他们在 Google Research 的博客上公布了初步的成果。

其中有一个重要的发现,就是他们在 MapReduce 的性能配置上花了非常多的时间。包括了缓冲大小 (buffer size),分片多少(number of shards),预抓取策略(prefetch),缓存大小(cache size)等等。

所谓的分片,是指把大规模的的数据分配给不同的机器 / 工人,流程如下图所示。

选择一个好的分片函数(sharding function)为何格外重要?让我们来看一个例子。

假如你在处理 Facebook 的所有用户数据,你选择了按照用户的年龄作为分片函数(sharding function)。我们来看看这时候会发生什么。

因为用户的年龄分布不均衡(假如在 20~30 这个年龄段的 Facebook 用户最多),导致我们在下图中 worker C 上分配到的任务远大于别的机器上的任务量。

这时候就会发生掉队者问题(stragglers)。别的机器都完成了 Reduce 阶段,只有 worker C 还在工作。

当然它也有改进方法。掉队者问题可以通过 MapReduce 的性能剖析(profiling)发现。 如下图所示,箭头处就是掉队的机器。

图片引用:Chen, Qi, Cheng Liu, and Zhen Xiao. “Improving MapReduce performance using smart speculative execution strategy.” IEEE Transactions on Computers 63.4 (2014): 954-967.

回到刚刚的 Google 大规模排序实验。

因为 MapReduce 的分片配置异常复杂,在 2008 年以后,Google 改进了 MapReduce 的分片功能,引进了动态分片技术 (dynamic sharding),大大简化了使用者对于分片的手工调整。

在这之后,包括动态分片技术在内的各种崭新思想被逐渐引进,奠定了下一代大规模数据处理技术的雏型。

小结

这一讲中,我们分析了两个 MapReduce 之所以被硅谷一线公司淘汰的“致命伤”:高昂的维护成本和达不到用户期待的时间性能。

文中也提到了下一代数据处理技术雏型。这就是 2008 年左右在 Google 西雅图研发中心诞生的 FlumeJava,它一举解决了上面 MapReduce 的短板。

另外,它还带来了一些别的优点:更好的可测试性;更好的可监控性;从 1 条数据到 1 亿条数据无缝扩展,不需要修改一行代码,等等。

在后面的章节中,我们将具体展开这几点,通过深入解析 Apache Beam(FlumeJava 的开源版本),揭开 MapReduce 继任者的神秘面纱。

思考题

如果你在 Facebook 负责处理例子中的用户数据,你会选择什么分片函数,来保证均匀分布的数据分片?

欢迎你把答案写在留言区,与我和其他同学一起探讨。如果你觉得有所收获,也欢迎把文章分享给你的朋友。

免费资料

另外,我还给大家准备了一套特别全的「AI 大模型学习资料包」,首次免费送给大家(买不买课都送)!
✅ AI 大模型学习路线图(2025 版)
✅ GeekAGI 知识库:DeepSeek、AI Agent 、MCP、AI 工具和框架、AI 提效案例
✅ AI 大模型面试题 300 道
✅ 26 套 AI 大模型行业研究报告
✅ 50+ AI 大模型必读电子书

👇👇扫码免费领取全部内容👇👇

资料详细内容如下
福利 1:AI 学习路线图(2025版)
2025 年入门 AI 大模型该学什么,有这张图就够了!

福利 2:GeekGI 知识库
DeepSeek 知识库
AI Agent 知识库
1200+ AI 工具和框架
MJ、SD 等 AI 应用的一条龙教程
AI 经典开源项目、工作提效 / 副业变现案例

福利 3:AI 大模型面试题 300 道
包括字节、腾讯等一线大厂的 AI 岗面经分享、LLMs、Transformer、RAG、Agent 面试真题…
福利 4:24 套技术大会 2025 年案例 PPT

👇👇扫码免费领取全部内容👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1184943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前两天去杭州,短短2天,密集见了7波创业者

前两天去杭州,短短2天,密集见了7波创业者,但密度非常高,高到让我有点跟不上节奏。几乎每一站,都是创业者;每一顿饭,聊的都是项目、产品、落地。我能明显感觉到:杭州的创业者多,而且务…

C++ 纯虚函数 — 抽象接口

前言:C中纯虚函数是一个重要的特性、方法,若正确使用能够优化代码结构,提升层次性,增强可阅读性。在之前的文章中(C 虚函数 解析指南-CSDN博客),一笔带过了纯虚函数的介绍,本文将对纯…

大数据领域数据血缘:应对数据复杂性的利器

数据血缘:大数据世界的“家族树”,帮你理清数据的来龙去脉 关键词 数据血缘、大数据复杂性、元数据管理、数据 lineage、数据治理、数据追溯、数据可靠性 摘要 在大数据时代,企业的数据就像一棵枝繁叶茂的大树:根须深入业务系统、日志、第三方等各类数据源,树干是ETL、…

全网最细,电商平台项目测试常遇bug+测试点(汇总)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、电商项目常遇b…

参考文献在哪里找:实用查找方法及资源推荐

做科研的第一道坎,往往不是做实验,也不是写论文,而是——找文献。 很多新手科研小白会陷入一个怪圈:在知网、Google Scholar 上不断换关键词,结果要么信息过载,要么完全抓不到重点。今天分享几个长期使用的…

书籍-凯撒《高卢战记》

凯撒《高卢战记》详细介绍 书籍基本信息 书名:高卢战记(Commentarii de Bello Gallico,意为"关于高卢战争的评论") 作者:凯撒(Gaius Julius Caesar,公元前100年-前44年) 成…

2026 年 1 月电动雨棚厂家推荐排行榜:遥控/伸缩/推拉/定制/悬空/仓库/篮球场雨棚,创新智能与坚固耐用品质之选 - 企业推荐官【官方】

2026 年 1 月电动雨棚厂家推荐排行榜:遥控/伸缩/推拉/定制/悬空/仓库/篮球场雨棚,创新智能与坚固耐用品质之选 随着城市化进程的加速和工商业态多元化发展,户外空间的灵活利用与保护需求日益凸显。雨棚,尤其是集成…

【快速EI检索 | 广州大学主办丨EI稳定检索 | 征稿范围广 | 学生优惠、团队优惠、学生友好】2026年人工智能与数字服务国际学术会议(ICADS 2026)

2026年人工智能与数字服务国际学术会议(ICADS 2026) 2026 International Conference on Artificial Intelligence and Digital Services (ICADS 2026) 2026年2月6日(周五)|线上召开 大会官网:www.ic-icad…

基于非对称纳什谈判的多微网电能共享运行优化策略Matlab代码

✅作者简介:热爱数据处理、建模、算法设计的Matlab仿真开发者。🍎更多Matlab代码及仿真咨询内容点击 🔗:Matlab科研工作室🍊个人信条:格物致知。🔥 内容介绍推进可再生能源高效利用,实现电力系统…

架构之DID(Design-Implement-Deploy)方法论

架构之DID方法论:设计-实施-部署 概述 DID(Design-Implement-Deploy)是一种架构可扩展性方法论,旨在以最经济有效的方式保证系统的可扩展性。通过在系统生命周期的不同阶段采用不同的容量规划策略,实现资源利用的最优化…

Uniapp——苹果IOS离线打自定义基座教程

文章目录概要1.官方下载SDK插件基座源码;2.项目概要讲解;小结概要 提示:为了节省云打包费用使用离线打包 1.官方下载SDK插件基座源码; 提示:这里可以添加技术整体架构 https://nativesupport.dcloud.net.cn/AppDocs/d…

【快速EI检索 | 211高校武汉理工大学作为支持单位!主讲嘉宾已确定 | 本届会议已成功通过ACM出版!稳定EI检索】2026年人工智能与控制国际学术会议(CAIC 2026)

2026年人工智能与控制国际学术会议(CAIC 2026) 2026 International Conference on Artificial Intelligence and Control(CAIC 2026) 2026年2月6日-8日|中国-三亚 大会官网:https://www.iccaic.net/ 截稿时间:见官网…

软考老金的五篇论文指导如何改变我的备考轨迹

备考高项前,我最怕的就是论文。作为一个普通企业的行政人员,我哪有什么"大型IT项目管理经验"?但跟着金老师学完五篇论文作业后,我不仅不怕了,还在考场上写出了57分的论文!一、五篇作业&#xff1…

二阶锥松弛在配电网最优潮流计算中的应用Matlab实现

✅作者简介:热爱数据处理、建模、算法设计的Matlab仿真开发者。🍎更多Matlab代码及仿真咨询内容点击 🔗:Matlab科研工作室🍊个人信条:格物致知。🔥 内容介绍最优潮流计算是电网规划,优化运行的重…

Kotlin 2025–2026 客户端开发路线:语言升级 × 跨端落地 × AI Agent 入门

Kotlin 2025–2026 客户端开发路线:语言升级 跨端落地 AI Agent 入门结论(先把路标立住): 2025–2026 这条 Kotlin 技术线,客户端同学最值得投入的三件事是: 语言与工具链升级:围绕 Kotlin 2.…

Springboot七彩花都线上鲜花订购平台rzb8b4z2(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能 用户,商家,鲜花分类,鲜花信息,咨询商家,公告信息,轮播图,订单管理 开题报告核心内容 SpringBoot线上鲜花订购平台开题报告 一、研究背景与意义 (一)研究背景 随着互联网技术的飞速发展和电子商务的普及,人们…

告别服务器失联的神器Prometheu加上cpolar 让监控告警不再困于局域网

Prometheus、node_exporter、Alertmanager 这套组合是服务器监控的实用工具,Prometheus 可实时采集 CPU、内存等核心指标并自定义告警规则,node_exporter 轻量易部署,能快速收集服务器硬件数据,Alertmanager 则负责告警的分类、推…

第64集科立分板机:分板机常见类型及优缺点介绍

分板机是用于分割电路板的设备,主要将连接在一起的电路板分离成单个单元,广泛应用于电子产品制造业,已基本取代传统人工折板方式。以下为你详细介绍:常见类型及优缺点走刀式分板机:成本低,但只能进行直线分…

【性能测试】10_JMeter _JMeter连接数据库(重点)

文章目录一、场景1.1 思考:测试人员为什么连接数据库?1.2 启动tpshop数据库服务器二、连接数据库的步骤三、实现数据库连接3.1 添加数据库驱动-2种方法3.2 配置数据库连接池属性3.3 发送JDBC请求四、查看运行结果一、场景 1.1 思考:测试人员…

2026-01-19 闲话 大三上期末

2026-01-19 闲话 大三上期末这学期有三门必修课,两门选修课。目前考了如下四门。无论成绩怎么样、是否挂科了。我都去参加了考试,没有怯战。 泛函分析 这门课引入了无穷维向量这样一个概念。 定义了完备的赋范空间为…