尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
《从你点了一份外卖,到老板发现程序员是顶级牛马》一条外卖订单的大数据技术栈奇幻漂流
假设你是某电商app的核心开发随着用户越来越多每天都会产生海量的用户行为和订单数据。老板看了这些数据得出一个惊人结论程序员是顶级牛马。你想验证这个结论于是打开 MySQL写了一条 SQL按性别统计消费金额。结果 MySQL 直接卡死。为什么因为数据量太大了。几百 GB 还能勉强撑一撑到了 TB、PB 级别MySQL 根本扛不住。这就是我们常说的大数据。那怎么办没有什么是加一层中间层不能解决的。这次我们加的中间层叫 Hadoop。Hadoop 是一套技术由三个核心组件组成HDFS、MapReduce、YARN。但大数据的核心难题就一个字大。解决方案也就一个字切。分而治之把大问题切成小问题。那我们先看看数据是怎么进来的。其实在数据存下来之前还有一个很重要的东西叫 Kafka。Kafka 是一个分布式消息队列你可以把它想象成一个巨大的蓄水池。双十一零点每秒几十万订单涌进来如果直接往 HDFS 写HDFS 会被瞬间冲垮。Kafka 先把这些数据接住缓冲一下再让下游按自己的节奏慢慢消费。它还能解耦上下游上游只管发下游只管读互不干扰。同一份数据实时风控、实时大屏、离线数仓都能读。而且 Kafka 可以攒批发送比如攒够 16KB 或者等几毫秒打包发出去这样吞吐量就上去了。但你要知道Kafka 本身不做计算它只是负责把数据安全、平稳地送进后面的存储和计算引擎。好数据接住了接下来解决怎么存。一台服务器硬盘不够就用多台。大文件切分成一个个 128MB 的数据块分散放到多台服务器上。怕一台机器挂了丢数据就多复制几份默认三副本放到不同机器备份。但问题来了以前单机读写很简单现在数据分散在几百台机器上读写变得极其复杂。你怎么知道哪个块在哪台机器上怎么保证一致性于是 HDFS 诞生了。全称 Hadoop Distributed File System分布式文件系统。它有两个核心角色NameNode 和 DataNode。NameNode 是大脑负责管理整个文件系统的目录树和每个文件块的位置信息DataNode 是苦力真正存数据块的地方。你只需要调用 HDFS 的 API它就能帮你切分、存储、备份、容错。你不用关心底层细节就像用本地文件系统一样简单。存储问题解决了接下来解决怎么算。假设我们要统计本年度的订单按性别汇总消费金额。数据有 1000G没有任何一台服务器能扛住。那就切。把数据切分成一个个分片分给多台服务器并行计算最后把结果聚合起来。但每台服务器怎么知道该怎么算这就需要我们告诉它业务逻辑。我们写两个函数一个 Map 函数一个 Reduce 函数。Map 函数告诉每台服务器每个分片里的数据怎么处理Reduce 函数告诉服务器Map 算完的结果怎么汇总。这个“从 HDFS 读数据、切分片、执行 Map、Shuffle、执行 Reduce、汇总结果”的通用流程被抽象成了一个框架叫 MapReduce。MapReduce 的核心思想就是分而治之。它会把你的计算任务自动拆分成很多个小任务分配到不同的机器上并行执行。中间还有一个 Shuffle 阶段把相同 key 的数据拉到一起交给 Reduce 处理。虽然它写起来有点麻烦但它是大数据计算的基石。存和算都解决了还有什么问题每个分片都要跑一个 Map 任务每个任务都要占 CPU 和内存。这么多任务怎么管理分配到哪些服务器上跑这时候 YARN 登场了。全称 Yet Another Resource Negotiator资源调度器。它在计算任务和服务器之间加了一层中间层负责资源管理。它把每个任务需要的资源抽象成一个容器容器里运行计算任务的代码。YARN 有两个核心角色ResourceManager 和 NodeManager。ResourceManager 是全局大管家负责整个集群的资源分配NodeManager 是每台机器上的小管家负责启动和监控容器。当 MapReduce 需要跑任务时它会向 YARN 申请容器YARN 根据资源情况分配然后 MapReduce 把任务调度到对应的容器上运行。通过一系列资源申请和协调调度完成所有 Map 和 Reduce 任务最终得到结果。到这里存储、计算、资源调度都解决了。还有优化空间吗有。以前单机架构我们写点 SQL 就搞定了。现在分布式集群却要写一大堆 MapReduce 代码。这也太麻烦了吧于是 Hive 出现了。它是 SQL 和 MapReduce 之间的中间层。你把 SQL 丢给它它自动解析转换成 MapReduce 任务运行完把结果返回给你。Hive 还有一个 MetaStore用来存表的元数据比如表名、字段、分区信息等。这样不会写 Java 的人也能分析大数据。它让大数据的门槛一下子降低了很多。还能再快吗MapReduce 的中间结果每次都往磁盘写频繁读写磁盘速度慢。那为什么不放内存呢于是 Spark 出现了。它把中间结果放内存放不下才放磁盘。Spark 的核心是 RDD弹性分布式数据集还有 DAG有向无环图可以把多个计算步骤串起来减少落盘。速度比 MapReduce 快 10 到 100 倍。而且 Spark 也支持 SQL叫 Spark SQL可以直接查 Hive 表性能更好。还有问题吗双十一秒杀一秒钟涌入几十万订单。MapReduce 和 Spark 都是批处理得攒够一批才处理。攒的过程浪费时间实时性不够。于是 Flink 出现了。来一条数据处理一条数据。真正的流处理毫秒级延迟。它还有状态管理和 Exactly-Once 语义保证数据不丢不重。Flink 也能做批处理但它的强项是流处理特别适合实时性要求高的场景。最后总结一下这条数据流水线Kafka 负责接数据HDFS 负责存数据MapReduce 负责批量算YARN 负责管资源Hive 负责让 SQL 也能算Spark 负责加速算Flink 负责实时算。它们各司其职共同构成了大数据处理的完整体系。所以下次你点外卖看到推荐变了背后就是这套系统在运转。
RELATED

相关推荐

我采访了 6 位刚过盲审的毕业生:最后两个月他们到底做了什么

我采访了 6 位刚过盲审的毕业生:最后两个月他们到底做了什么

我读旅游管理,今年也要写毕业论文。五月的时候,院里公布盲审结果,同届过了的在朋友圈刷屏,没过的一句话不说。我挨个私聊了 6 位过关的同学——旅游管理、酒店管理、会展经济与管理、工商管理都有——把访谈记录整理成这篇。问题只…

📅 2026/9/30 19:20:54
docker-compose 安装 openclaw 后,把 endpoint 改到 TaoToken 的完整配置

docker-compose 安装 openclaw 后,把 endpoint 改到 TaoToken 的完整配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/30 19:20:54
别再瞎找了!2026年超实用AI论文网站榜单,免费版也能写合规初稿

别再瞎找了!2026年超实用AI论文网站榜单,免费版也能写合规初稿

2026 年实测 10 款主流 AI 论文工具,千笔AI 以全流程覆盖 语义级降重 免费查重领跑综合榜;ThouPen 稳坐留学生毕业全流程工具头把交椅;免费工具中 DeepSeek Scholar、豆包学术版表现亮眼,30 分钟即可生成万字高质量初稿&#xf…

📅 2026/9/30 19:20:54
MORE NEWS

更多资讯

📰

STM32按键GPIO输入原理:从机械弹跳到稳定电平的全链路解析

1. 项目概述:按键接到 STM32 后,GPIO 输入到底读到了什么?这个问题看似简单,但几乎每个刚接触 STM32 的工程师、学生甚至做了多年嵌入式开发的老手,在调试一个不起眼的按键时,都曾盯着逻辑分析仪波形发呆&a…

📰

蓝牙一对多连接方案及实现

目录 摘要 1 引言 2 连接模型分类与方案架构 2.1 独立连接型 2.2 中继转发型 2.3 动态身份型 2.4 周期性广播型(PAwR) 3 关键配置与实现要点 3.1 最大连接数配置 3.2 角色共存配置 3.3 连接资源回收 3.4 PAwR 实现概要 4 讨论 5 结论 摘要 …

📰

从一次内存读看透PCIe事务层:TLP、流量控制与路由全解析

老读者都知道,我折腾PCIe有些年头了。每次有新人来问PCIe协议怎么入门,我给的答案都差不多:先把事务层(Transaction Layer)啃下来,而啃事务层最好的切入点,就是一次内存读(Memory Re…

📰

量产级嵌入式驱动设计:从能跑到可靠运行的四大工程支柱

1. 项目概述:驱动不是“点亮LED”就完事了,它得在产线上连续跑三年不掉链子你写过驱动——GPIO点灯、UART收发、I2C读温湿度传感器,代码编译通过、板子上电能跑、示波器测波形也对。恭喜,你完成了嵌入式驱动开发的“入学考试”。但…

📰

106dB 6路I2S输出DAC芯片NX1227,PIN对PIN软硬件兼容替代CS4361

在音频信号链中,数模转换器(DAC)负责将数字音频还原为模拟信号,其动态范围与总谐波失真信噪比(THDN)是评估性能的两项核心指标。NX1227是一款国产6路I2S输出数模转换芯片,近期完成一次更新迭代&…

📰

Nodejs 使用 tedious 驱动模块连接 SqlServer:从 config 骨架到连接验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬