大数据经典论文解读 01

发布时间 2023-04-03 17:16:15作者: 某某人8265

大数据核心3个概念:

  1. 能伸缩到一千台以上的分布式数据处理集群技术
  2. 这上千个节点是使用廉价PC搭建
  3. 将数据中心当做一台计算机

大数据的起源:“三架马车”

这三篇论文还依赖了两个基础设施:Chubby锁服务,Thrift序列化

MapReduce 演进路线:

  1. 编程方式:最初的MapReduce需要工程师编写代码,Hive出现后使用类SQL语言降低了门槛,称为大数据仓库事实标准
  2. 执行引擎:Dremel使用数据列存储+并行数据库方式,将MapReduce这个执行引擎替换
  3. 多轮迭代:一个MapReduce就要读写一次硬盘,且Map和Reduce间数据通信也要先落到硬盘。Spark论文提出将数据放在内存而非硬盘,大大提升了性能

Bigtable 进化如下:

  • 事务问题和 Schema 问题:Megastore论文在Bigtable上实现了类SQL接口,提供了Schema和简单跨行事务。Bigtable为了伸缩性放弃了关系型数据库特性,Megastore则进行了弥补。
  • 异地多活和跨数据中心问题:Spanner能做到“全局一致性”

大数据领域知识地图

分布式系统

  1. 可靠性:为了防止故障,需要对数据进行复制,复制后以哪份数据为准又带来了主从架构、多主架构、无主架构等选择。高可用切换的Back Master使用同步复制,只读的Shadow Master使用异步复制
  2. 可扩展性:单节点下存不下所有数据,于是有了数据分区。常见两种方式:1. 通过区间分区,如Bigtable 2. 通过哈希进行分区,如一致性哈希、Cassandra
  3. 可维护性:考虑容错、硬件故障、恢复。涉及到共识算法和CAP等

存储引擎

  1. 事务:实现ACID或BASE,使用预写日志(WAL)、快照技术(Snapshot)、检查点(Checkpoints)、写时复制(Copy-on-Write)保障单节点的写入是原子的。只要写入的数据记录在单个分片上即可保障写入的事务性,因此可做到单行事务或实体组层面的事务
  2. 如何写入和存储:考虑计算机的硬件特性,如顺序写和随机写、内存比硬盘快;也要考虑算法和数据结构的复杂度
  3. 数据序列化:二进制序列化使用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