大数据系统
第一章|大数据系统的第一性原理(原理总纲)
1.1 大数据并不是"数据大",而是约束发生了变化
本质变化只有三点:
单机假设失效
- 存储、计算、内存都无法纵向扩展
失败成为常态
- 节点、磁盘、网络随时会失败
全局一致性成本急剧上升
- 跨节点、跨机房、跨地域
👉 大数据系统的本质:在不可靠的分布式环境中,对海量数据提供可接受的计算与访问语义
1.2 所有大数据系统都在解决的四个核心问题
| 问题 | 本质矛盾 |
|---|---|
| 数据如何放 | 分区 vs 复制 |
| 数据如何找 | 元数据定位 |
| 数据如何算 | 计算向数据移动 |
| 数据是否一致 | 一致性 vs 延迟 |
4V 只是表象,真正的矛盾是:
- **规模 × 不可靠 × 一致性需求**
1.3 稳定知识:不可动摇的设计事实
- **数据一定要分区**
- **元数据一定要集中或分级**
- **写入一定是日志化的**
- **随机写一定会退化为顺序写**
- **强一致一定有延迟成本**
- **计算一定要靠近数据**
所有系统差异,只在"取舍点"不同。
第二章|大数据系统的抽象分层模型(认知骨架)
2.1 抽象分层(不依赖任何具体技术)
L1 数据来源层L2 数据接入 / 传输层L3 数据存储层L4 资源与调度层L5 数据计算层L6 服务 / 查询层L7 业务建模与决策层这不是 Hadoop 架构,而是:
任何大规模数据系统都逃不掉的结构事实
2.2 横向贯穿能力(比组件更重要)
- **元数据管理**
- **一致性与事务**
- **调度与负载均衡**
- **容错与恢复**
- **治理(权限 / 血缘 / 质量)**
第三章|数据存储的核心架构模式(不变规律)
3.1 为什么 LSM Tree 成为事实标准
问题本质:
- 分布式 + 机械硬盘 + 高并发写
不变结论:
- 随机写 → 不可接受
- 顺序写 + 后台合并 → 唯一路径
模式抽象:
MemTable → WAL → SSTable → Compaction系统映射:
- BigTable
- HBase
- Cassandra
- RocksDB
3.2 元数据分级定位:避免中心瓶颈
稳定模式:
Root → Metadata → User Data设计哲学:
- Master 不在读写路径
- 定位成本分摊到整个集群
系统映射:
- BigTable / HBase
- Hive Metastore
- 分布式文件系统
第四章|数据计算系统的两条主线
4.1 批处理:吞吐优先,延迟可牺牲
核心假设:
- 数据是静态的
- 结果允许延迟
不变模式:
- 全量扫描
- 阶段式计算
- 中间结果落盘
系统映射:
- MapReduce
- Hive
- Spark(优化 IO)
4.2 流处理:时间成为一等公民
本质变化:
- 数据无界
- 计算永不结束
核心难题:
- 时间语义
- 状态一致性
- 精确一次
演进路径(问题驱动):
At-least-once → Lambda → Kappa → DataFlow系统映射:
- Storm / S4(简单、但语义弱)
- Flink(流批统一 + Exactly-once)
第五章|一致性与事务:从最终一致到严格串行化
5.1 一致性不是非黑即白
| 层级 | 代价 | 代表系统 |
|---|---|---|
| 最终一致 | 延迟低 | Kafka / NoSQL |
| 可串行化 | 成本中 | Megastore |
| 严格串行化 | 成本高 | Spanner |
5.2 分区事务:现实世界的妥协
核心思想:
- 不需要全局一致
- 业务天然可分区
模式抽象:
- Entity Group
- Paxos per partition
- 局部 ACID + 全局弱一致
系统映射:
- Megastore
- NewSQL 架构
5.3 Spanner:一致性与时间的统一
关键突破:
- 将"不确定时间"转化为"确定区间"
- 用物理时间约束逻辑时间
不变启示:
如果你能控制时间,你就能控制一致性
第六章|大数据平台:技术系统之外的系统
6.1 平台的真正使命
不是跑得动计算,而是让组织可持续使用数据
6.2 不可或缺的非功能系统
- 元数据系统
- 血缘系统
- 数据质量体系
- 权限与审计
- 调度与 SLA
这些系统决定:
- 数据是否可信
- 团队是否能协作
- 平台是否能长期演进
第七章|架构选型的通用方法论(可迁移)
7.1 架构不是选工具,而是匹配约束
| 约束条件 | 架构倾向 |
|---|---|
| 强一致事务 | NewSQL / Spanner-like |
| 写多读少 | LSM |
| 离线分析 | 批处理 |
| 实时决策 | 流处理 |
| 低维护成本 | 架构简化(Kappa) |
7.2 判断一个系统是否"先进"的标准
❌ 不是:
- 新
- 快
- 复杂
✅ 而是:
- 是否减少了系统数量
- 是否统一了语义
- 是否降低了运维与认知成本
结语|从工具到哲学
大数据的终点不是某个系统,而是一套稳定的认知结构
当:
- Hadoop 被替代
- Spark 被替代
- Flink 被替代
真正留下的,是:
- 分区思想
- 日志哲学
- 一致性权衡
- 组织协作模式
关联内容(自动生成)
- [/数据技术/流处理.html](/数据技术/流处理.html) 大数据系统的核心组件之一,处理实时数据流,与批处理共同构成大数据计算的两条主线
- [/数据技术/数据处理.html](/数据技术/数据处理.html) 详细阐述了大数据处理的各种计算模型,包括批处理和流处理,以及主流计算引擎(Spark、Flink)的架构和原理
- [/数据技术/数据集成.html](/数据技术/数据集成.html) 涉及大数据环境下的数据采集、传输和转换,是大数据系统数据接入层的重要组成部分
- [/数据技术/数据治理.html](/数据技术/数据治理.html) 涵盖了大数据平台中数据质量、元数据管理、权限控制等非功能性需求,是大数据平台可持续发展的保障
- [/数据技术/数据仓库.html](/数据技术/数据仓库.html) 作为大数据分析的重要基础设施,与大数据系统在存储架构和计算模型方面有诸多共通之处
- [/数据技术/数据架构.html](/数据技术/数据架构.html) 从架构角度阐述大数据系统的设计原则和模式,与大数据系统分层模型密切相关
- [/数据技术/数据建模.html](/数据技术/数据建模.html) 在大数据环境下,数据建模需要考虑分布式存储和计算的特点,与大数据系统的数据存储和计算层密切相关
- [/中间件/数据库/分布式数据库.html](/中间件/数据库/分布式数据库.html) 分布式数据库与大数据系统在分区、一致性、容错等方面有共同的设计理念,是大数据存储的重要组成部分
- [/软件工程/架构/系统设计/分布式/分布式系统.html](/软件工程/架构/系统设计/分布式/分布式系统.html) 大数据系统本质上是分布式系统,分布式系统的理论和实践是理解大数据架构的基础
- [/软件工程/架构/系统设计/分布式/分布式事务.html](/软件工程/架构/系统设计/分布式/分布式事务.html) 一致性问题是大数据系统和分布式事务共同面临的挑战,在大数据系统中需要考虑跨节点数据一致性
- [/中间件/消息队列/Kafka/Kafka.html](/中间件/消息队列/Kafka/Kafka.html) Kafka是大数据生态系统中的重要组件,作为分布式日志系统,它体现了大数据系统中的日志哲学
- [/数据技术/埋点设计.html](/数据技术/埋点设计.html) 作为大数据的数据来源,埋点设计的质量直接影响大数据系统的数据质量和分析结果
- [/数据技术/数据中台.html](/数据技术/数据中台.html) 数据中台通常基于大数据技术构建,大数据系统的架构思想和分层模型在数据中台中有广泛应用
- [/数据技术/推荐系统.html](/数据技术/推荐系统.html) 推荐系统是大数据的重要应用场景,依赖大数据系统提供的存储和计算能力
- [/数据技术/数据网格.html](/数据技术/数据网格.html) 作为一种新兴的数据架构理念,数据网格与传统大数据系统在分布式数据管理方面有共通之处
- [/数据技术/任务调度系统.html](/数据技术/任务调度系统.html) 大数据系统中的批处理和流处理任务需要依赖任务调度系统进行管理和编排
- [/数据技术/数据质量.html](/数据技术/数据质量.html) 数据质量体系是大数据平台的重要组成部分,确保数据可信可用
- [/数据技术/元数据管理.html](/数据技术/元数据管理.html) 元数据管理是大数据平台的"数据",对大数据系统的数据定位、血缘追踪和治理至关重要
- [/数据技术/Hadoop.html](/数据技术/Hadoop.html) Hadoop是大数据生态系统的起点,提供了大数据系统的基本架构范式
- [/计算机网络/rpc.html](/计算机网络/rpc.html) RPC是分布式系统(包括大数据系统)中节点间通信的基础,影响大数据系统的性能和可靠性