Hadoop 计算模型
分布式计算模型
分布式系统,不像一般的数据库、文件系统,无法从上至下、从头 到尾进行求和等操作,需要由分散的节点不断向一个点聚拢计算过程 ,考虑将分布式计算模型可以考虑分为两部分
- 分布:操作原语
- 聚合:处理流程
MapReduce
MapReduce计算模型主要描述是分布:操作原语部分, 但是此也包含了聚合:处理流程
操作原语
- map:映射
- 以键值对二元组为主要处理对象
- map过程相互独立、各mapper相互不通信的
- 所以mapper比较适合可独立计算任务
- reduce:规约
- 直接处理map输出,reduce中二元组键位map过程中输出值
处理流程
以hadoop中MapReduce为例
需要把任何计算任务转换为一系列MapReduce作业,然后依次 执行这些作业
计算过程的各个步骤之间,各个作业输出的中间结果需要存盘, 然后才能被下个步骤使用(因为各个步骤之间没有明确流程)
缺陷
操作原语部分
提供原语少:需要用户处理更多逻辑,易用性差
所以抽象层次低:数据处理逻辑隐藏在用户代码中,可读性差
所以其表达能力有限:
- 复杂数据处理任务,如:机器学习算法、SQL连接查询很难 表示用MapReduce计算默认表达
处理流程部分
MapReduce需要通过把中间结果存盘实现同步,I/O延迟高
reduce任务需要等待map任务全部完成才能继续,同步Barrier 大
适合场景
One Pass Computation:只需要一遍扫描处理的计算任务 MapReduce计算模型非常有效
- 批数据处理
Multi Pass Computation:需要在数据上进行多遍扫描、处理 的计算任务,需要执行多个MapReduce作业计算任务,因为 多副本复制、磁盘存取,其效率不高
DAG
Directed Acyclic Graph:只是表示数据处理流程的有向无环图
- 顶点:数据处理任务,反映一定的业务逻辑,即如何对数据进行 转换和分析
- 边:数据在不同的顶点间的传递
应用
DAG本身并不涉及如何处理数据,只是对数据数据流程的规划
所以DAG并不能改进MapReduce计算模型中原语部分的缺陷,只能 优化数据处理流程
- 减少MapReduce作业中间结果存盘,减少磁盘I/O
- 优化map、reduce任务执行,减少同步Barrier
这也正是Tez所做的事情