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.4.1 用户层
输入数据
批式大数据处理框架数据来源:
- 分布式文件系统
- 分布式KV数据库
- 关系数据库
输入数据在应用提交后会自动分块,每个分块对应一个具体任务。
流式大数据处理框架数据来源:
- 网络流
- 消息队列
流式处理方式:
- 微批
- 连续
数据高速读取影响系统整体性能。
用户代码
略
配置参数
配置参数可以分为两大类:
- 与资源相关的配置参数
- 数据流相关的配置参数
1.4.2 分布式数据并行处理层
目的:将用户提交的应用转化为较小的计算任务,通过调用底层资源管理与任务调度层实现并行执行。
Spark转化过程:
- 逻辑处理流程(代码转化,包含多个数据单元与数据依赖,每个数据单元包含多个数据分块)
- 执行阶段与执行任务划分(逻辑处理流程划分,生成物理执行计划,包含多个执行阶段(stage),每个执行阶段包含若干执行任务(task)
RDD(Resilient Distributed Datasets,弹性分布式数据集):Spark中,输入/输出、中间数据。
1.4.3 资源管理与任务调度层
大数据处理框架一般为著丛结构。
主节点职责:
- 接收用户提交的应用
- 处理请求
- 管理应用运行的整个生命周期
从节点职责:
- 执行具体数据处理任务(task)
- 向主节点回报任务的执行状态
Spark部署模式:
- Standalone部署模式
- YARN部署模式
- Mesos部署模式
1.4.4 物理执行层
task执行过程消耗内存的数据
- 框架执行时的中间数据(理解可能是每个算子计算完之后的结果数据)
- 框架缓存数据(cache()接口缓存到内存中的数据)
1.5 错误容忍机制
略