刷短视频时推荐内容越来越准,双十一大促时电商系统扛住上亿订单,物流公司实时追踪几百万包裹——这些背后,都离不开ref="/tag/212/" style="color:#874873;font-weight:bold;">大数据处理框架在默默干活。
Hadoop:老牌主力,适合批处理
Hadoop 是最早被大规模用起来的大数据框架,核心是 HDFS(分布式文件系统)和 MapReduce(计算模型)。它像一个稳扎稳打的仓库管理员:先把海量日志、用户行为数据存进 HDFS,再用 MapReduce 分阶段统计 PV、UV、停留时长等指标。
比如某新闻 App 每天生成 5TB 原始日志,用 Hadoop 跑一个周报统计任务很合适。虽然单次计算可能要十几分钟,但胜在稳定、容错强、能跑超大体量数据。
hadoop jar wordcount.jar WordCount /input /outputSpark:内存加速,快得明显
Spark 把中间计算结果尽量放在内存里,避免频繁读写磁盘,速度比 MapReduce 快几倍到几十倍。它不光能做批处理,还支持交互式查询(Spark SQL)、实时流计算(Structured Streaming)、机器学习(MLlib)和图计算(GraphX)。
运营同学想临时查“昨天下午3点到4点,iOS 用户点击‘领券’按钮的 Top10 商品”,用 Spark SQL 几秒就能出结果:
spark.sql("SELECT item_id, COUNT(*) AS clicks FROM events WHERE platform = 'ios' AND event = 'coupon_click' AND ts BETWEEN '2024-04-10 15:00:00' AND '2024-04-10 16:00:00' GROUP BY item_id ORDER BY clicks DESC LIMIT 10")Flink:真·实时流处理首选
如果你需要毫秒级响应——比如风控系统检测一笔支付是否异常、IoT 设备每秒上报温度并触发告警,Flink 就是更合适的选择。它把流看作第一等公民,支持事件时间(Event Time)、状态管理、精确一次(exactly-once)语义。
一段简单 Flink 流处理代码,统计 30 秒窗口内每个用户的点击次数:
stream.keyBy(r -> r.userId) .window(TumblingEventTimeWindows.of(Time.seconds(30))) .sum("clickCount")怎么选?看你的场景
刚起步的小团队,日增数据不到 10GB,用 Spark on Local 模式加 MySQL 就够用了;中型公司日志量上百 GB,离线报表为主,Hadoop + Hive 或 Spark SQL 更经济;要是业务强依赖实时决策,比如直播弹幕分析、金融反欺诈,Flink 基本是标配。实际项目中,三者也常混搭:用 Flink 做实时清洗,结果写入 Kafka,再由 Spark 定时拉取做融合分析。