大数据经典论文解读 01
大数据核心3个概念:
- 能伸缩到一千台以上的分布式数据处理集群技术
- 这上千个节点是使用廉价PC搭建
- 将数据中心当做一台计算机
大数据的起源:“三架马车”
这三篇论文还依赖了两个基础设施:Chubby锁服务,Thrift序列化
MapReduce 演进路线:
- 编程方式:最初的MapReduce需要工程师编写代码,Hive出现后使用类SQL语言降低了门槛,称为大数据仓库事实标准
- 执行引擎:Dremel使用数据列存储+并行数据库方式,将MapReduce这个执行引擎替换
- 多轮迭代:一个MapReduce就要读写一次硬盘,且Map和Reduce间数据通信也要先落到硬盘。Spark论文提出将数据放在内存而非硬盘,大大提升了性能
Bigtable 进化如下:
- 事务问题和 Schema 问题:Megastore论文在Bigtable上实现了类SQL接口,提供了Schema和简单跨行事务。Bigtable为了伸缩性放弃了关系型数据库特性,Megastore则进行了弥补。
- 异地多活和跨数据中心问题:Spanner能做到“全局一致性”
大数据领域知识地图
分布式系统
- 可靠性:为了防止故障,需要对数据进行复制,复制后以哪份数据为准又带来了主从架构、多主架构、无主架构等选择。高可用切换的Back Master使用同步复制,只读的Shadow Master使用异步复制
- 可扩展性:单节点下存不下所有数据,于是有了数据分区。常见两种方式:1. 通过区间分区,如Bigtable 2. 通过哈希进行分区,如一致性哈希、Cassandra
- 可维护性:考虑容错、硬件故障、恢复。涉及到共识算法和CAP等
存储引擎
- 事务:实现ACID或BASE,使用预写日志(WAL)、快照技术(Snapshot)、检查点(Checkpoints)、写时复制(Copy-on-Write)保障单节点的写入是原子的。只要写入的数据记录在单个分片上即可保障写入的事务性,因此可做到单行事务或实体组层面的事务
- 如何写入和存储:考虑计算机的硬件特性,如顺序写和随机写、内存比硬盘快;也要考虑算法和数据结构的复杂度
- 数据序列化:二进制序列化使用Thrigt;为了减少硬盘吞吐量用Parquet或ORCFile等列存储格式;使用Snappy或LZO等快速压缩算法实现CPU、网络、硬盘上的平衡
计算引擎
- 批处理:现有MapReduce,后有更快的Spark和各种DSL
- 实时数据处理:最少一次的S4/Storm等
- 流批一体:Spark Streaming、Kafka 的 Kappa
- 最后Google给出了统一的Dataflow模型,伴随着Flink和Beam
参考
Storm作者Nathan Marz 的《Big Data》 《大数据系统构建》 带来了Lambda架构
DDIA
《Streaming System》
Jeff Dean 在 Cornell 的讲座 Designs, Lessons and Advice from Building Large Distributed Systems
分类:
分布式&大数据 / 分布式论文
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)