大数据组件演进关系
业务开发现在不可避免的要使用大数据组件,比如 Hive查表统计分析、binlog采集同步、Flink流式处理等等。
这篇文章会介绍大数据的基础组件以及他们的演进关系,只讲核心的组件概念以便快速入门。如Hadoop、MapReduce、Hive、Spark、Flink、HBase。
一、先搞懂:大数据技术的整体层级逻辑
大数据组件只分三层递进关系,从上到下、从基础到应用,层层依赖:
-
底层存储+资源底座:Hadoop(大数据的操作系统)
-
底层计算引擎(初代):MapReduce(Hadoop自带计算核心)
-
上层数据仓库工具:Hive(把复杂代码变成SQL,降低使用门槛)
-
新一代批量计算引擎:Spark(替代MapReduce,快100倍)
-
新一代实时计算引擎:Flink(弥补Spark实时短板,流式计算王者)
二、逐个拆解:
1、Hadoop:大数据的「操作系统地基」
核心:负责存数据、管资源,不负责计算,是所有大数据组件的底层依赖。
Hadoop不是单一软件,是一套基础框架,核心就两个模块:
-
HDFS(分布式文件系统):海量数据的仓库,把超大文件拆分存在多台服务器,解决「单机存不下」的问题
-
YARN(资源调度系统):大数据集群的「管家」,分配CPU、内存资源,调度各个计算任务运行
通俗理解: 如果大数据集群是一栋大楼,Hadoop就是楼房+地基+水电系统,所有后续工具(Hive/Spark/Flink)都是入驻的商户,必须依赖大楼才能运行。
特点:开源、稳定、海量存储、高可用,大数据集群必备底座,无可替代。
2、MapReduce:Hadoop原生「初代计算引擎」
核心:Hadoop自带的离线批量计算工具,最原始的大数据算力。
它把大数据计算拆成两个固定阶段,逻辑极简:
-
Map(映射):拆分数据、分片处理(分)
-
Reduce(归约):汇总分片结果、聚合输出(合)
通俗理解: 统计全校学生成绩,Map是每个班级单独统计,Reduce是汇总所有班级结果,得到全校数据。
缺点(被替代的核心原因):
-
每次计算都要读写磁盘,速度极慢
-
只能做离线批量计算,延迟高
-
代码繁琐,开发效率极低
现状:基本被Spark替代,是大数据计算的「入门鼻祖」。
3、Hive:大数据的「SQL翻译官」
核心:把人类易懂的SQL语言,翻译成MapReduce/Spark任务,让不会写代码的人也能分析大数据。
MapReduce需要写大量Java代码,门槛高,Hive的出现彻底解决了这个问题:
-
用户只需要写普通SQL语句(和MySQL几乎一样)
-
Hive自动将SQL解析、翻译、优化成计算任务
-
最终在Hadoop集群上运行,查询海量数据
通俗理解: MapReduce是「手工苦力干活」,Hive是「指挥机器人干活」,你只需要下达SQL指令,不用管底层计算逻辑。
定位:大数据数据仓库工具,用于离线数据分析、数仓建模(分层建模)。
注意:
- Hive不生产数据、不计算,只是任务调度翻译工具。
- Hive 表的数据 = Hadoop (HDFS) 上的文件
- Hive 表不只是 Hadoop 文件,还必须要有元数据(存 MySQL)。
4、Spark:高速「离线批量计算之王」
核心:基于内存计算,极速替代MapReduce,大幅提升批量数据计算速度。
MapReduce慢在磁盘IO,Spark直接把数据加载到内存中计算,核心优势:
-
速度比MapReduce快10~100倍
-
兼容Hive、依赖Hadoop存储,无缝迁移
-
支持SQL、代码编程,开发灵活度极高
通俗理解: MapReduce是「每次算账都翻账本(磁盘)」,Spark是「把账本抱在怀里(内存)直接算账」,效率更高。
核心场景:海量数据离线分析、日/周/月报表、数据清洗、数仓计算。
短板:主打批量计算,实时流式数据处理能力弱、延迟高。
5、Flink:实时流式计算
核心:主打低延迟、实时流式计算,弥补Spark实时短板,是当下实时大数据的核心引擎。
Spark擅长「一次性批量处理历史数据」,而Flink擅长「源源不断处理实时数据流」:
-
数据来一条、处理一条,延迟低至毫秒级
-
支持实时计算、批量计算(批流一体)
-
容错性强、数据不丢失、精准统计
通俗理解:
-
Spark:每天凌晨统一计算昨天的所有数据(离线)
-
Flink:用户产生数据的瞬间,立刻计算、实时更新结果(实时)
应用场景:实时大屏、实时订单统计、实时推荐、日志实时分析、风控实时预警。
三、核心组件演进关系
1、层级依赖关系(自上而下)
应用层:Hive(SQL查询、数仓)
计算层:Flink(实时)、Spark(离线批量) >> 替代原生MapReduce
底座层:Hadoop(HDFS存储 + YARN资源调度)
2、演进关系
-
第一代:Hadoop + MapReduce(慢、原始、离线)
-
第二代:Hadoop + Spark + Hive(高速离线、主流数仓方案)
-
第三代:Hadoop + Spark + Flink + Hive(批流一体、离线+实时全覆盖)
四、大数据生态扩展
1、数据存储与消息类
HBase:海量行随机读写的NoSQL数据库
Hadoop生态的分布式KV数据库,面向千亿级数据的单条/少量行快速查询。
-
底层依赖HDFS存储,不做批量计算,只负责存储
-
Hive是离线数仓(批量扫描全表);HBase适合单行/少量行毫秒级查询
-
场景:用户画像、设备埋点、海量维度表、实时结果存储
对比记忆:Hive查大批量;HBase查单行;MySQL扛不住千亿级数据。
Kafka:大数据世界的"数据水管"
分布式消息队列,实时数据的中转站和缓冲器。
-
不存储历史数仓数据,不做计算,只负责数据的接收、缓冲、转发
-
业务日志、埋点数据先写入Kafka,再喂给Flink/Spark做计算
-
地位:实时链路几乎必备,解耦生产者和消费者
ClickHouse:OLAP列式数据库
面向分析的列式存储数据库,多维聚合查询极快。
-
主打大表多维聚合分析,不适合高频更新和事务
-
不需要强依赖Hadoop,可独立部署
-
场景:用户行为分析、实时报表、BI看板、日志分析
2、计算引擎扩展类
Spark Streaming / Structured Streaming:Spark的实时模块
Spark生态的流式计算组件,用微批模拟实时。
-
Spark Streaming:把流切成一小批一小批做Spark批处理,延迟秒级
-
Structured Streaming:Spark批流统一API,对标Flink,但底层还是微批
-
低延迟能力弱于Flink;新项目实时优先选Flink,老项目还能见到
Storm:第一代实时计算引擎
真正的流式处理,来一条处理一条。
-
缺点:状态管理、容错、Exactly-Once能力弱
-
现状:基本被Flink替代,作为历史知识了解即可
3、调度与工作流类
YARN:集群资源调度管家
Hadoop的资源调度系统,分配CPU、内存,调度计算任务。
-
Spark、Flink、MapReduce的任务都可以提交给YARN运行
-
不是存储,不是计算,是集群的"任务调度管家"
Airflow / DolphinScheduler:大数据工作流调度平台
按时间和依赖关系,编排和定时执行各类数据任务。
-
Hive SQL、Spark任务、Shell脚本,按DAG依赖编排执行
-
比如:凌晨2点跑Hive数仓,跑完再跑Spark报表,失败自动告警
-
定位:编排任务,本身不做计算
五、标准大数据架构
-
数据采集层:Kafka(接收业务日志、埋点数据,解耦与缓冲)
-
底层存储层:Hadoop(HDFS存数据、YARN调度资源)
-
离线计算层:Spark + Hive(做数仓、报表、数据清洗)
-
实时计算层:Flink(做实时大屏、实时指标、风控预警)
-
结果存储层:HBase(单行快速查询)、ClickHouse(OLAP多维报表)
-
任务调度层:DolphinScheduler / Airflow(定时编排所有数据任务)
-
即席查询层:Presto / Trino(跨源查询,供BI和数据分析师使用)
极简层级图解
【实时计算】 Flink ← 主打实时、低延迟、流式数据
【快速批计算】 Spark ← 主打离线批量、高速计算、替代MapReduce
【数仓工具】 Hive ← 基于计算引擎,用SQL分析大数据
【初代计算】 MapReduce ← Hadoop原生、慢速、离线批处理
【基础底座】 Hadoop(HDFS+YARN) ← 所有数据的存储、资源调度根基
总结: Hadoop是地基 → MapReduce是初代算力 → Hive是易用工具 → Spark升级批量算力 → Flink补齐实时算力。