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所做的事情

RDD

Author

UBeaRLy

Posted on

2019-03-21

Updated on

2021-07-16

Licensed under

Comments