《大数据处理框架Apache Spark设计与实现》读书笔记——大数据处理框架概览

103 阅读2分钟

1.1 大数据及其带来的挑战

大数据特点:数据量大(Volume)、数据类型多样(Variety)、产生和处理速度快(Velocity)、价值高(Value)的”4V“特性。

关系数据库解决问题:OLTP(On-line Transaction Processing,在线事务处理)

数据仓库:数据建模及OLAP(On-line analytical processing,在线分析处理)

传统数据库与数仓面临问题:可扩展性不足

1.3 大数据应用及编程模型

MapReduce模型简单表示:

map阶段:map<K1,V1> => list<K2,V2>

reduce阶段:reduce<K2,list(V2)> => list<K3,V3>

1.4 大数据处理框架的四层结构

大数据应用表示:

  • 输入数据(以分块形式存储在分布式文件系统上)
  • 用户代码
  • 配置参数

处理框架四层结构:

  1. 用户层
  2. 分布式数据并行处理层
  3. 资源管理与任务调度层
  4. 物理执行层

1.4.1 用户层

输入数据

批式大数据处理框架数据来源:

  • 分布式文件系统
  • 分布式KV数据库
  • 关系数据库

输入数据在应用提交后会自动分块,每个分块对应一个具体任务。

流式大数据处理框架数据来源:

  • 网络流
  • 消息队列

流式处理方式:

  1. 微批
  2. 连续

数据高速读取影响系统整体性能。

用户代码

配置参数

配置参数可以分为两大类:

  1. 与资源相关的配置参数
  2. 数据流相关的配置参数

1.4.2 分布式数据并行处理层

目的:将用户提交的应用转化为较小的计算任务,通过调用底层资源管理与任务调度层实现并行执行。

Spark转化过程:

  • 逻辑处理流程(代码转化,包含多个数据单元与数据依赖,每个数据单元包含多个数据分块)
  • 执行阶段与执行任务划分(逻辑处理流程划分,生成物理执行计划,包含多个执行阶段(stage),每个执行阶段包含若干执行任务(task)

RDD(Resilient Distributed Datasets,弹性分布式数据集):Spark中,输入/输出、中间数据。

1.4.3 资源管理与任务调度层

大数据处理框架一般为著丛结构。

主节点职责:

  1. 接收用户提交的应用
  2. 处理请求
  3. 管理应用运行的整个生命周期

从节点职责:

  1. 执行具体数据处理任务(task)
  2. 向主节点回报任务的执行状态

Spark部署模式:

  1. Standalone部署模式
  2. YARN部署模式
  3. Mesos部署模式

1.4.4 物理执行层

task执行过程消耗内存的数据

  1. 框架执行时的中间数据(理解可能是每个算子计算完之后的结果数据)
  2. 框架缓存数据(cache()接口缓存到内存中的数据)

1.5 错误容忍机制