一、MR - 同流合污的技术
MapReduce:大而化小,分而治之。Map负责把大任务分割为小任务,Reduce负责对Map结果进行汇总。子问题相互独立,子问题的解合并后可得到原问题的解。
架构:MRMater负责分配任务、协调任务,并为Mapper分配map()函数操作,为Reducer分配reduce()函数操作。Mapper Worker负责map函数功能,即执行子任务。Reducer Worker负责reduce函数功能,即负责汇总任务。

二、Stream - 流式计算。
流数据:源源不断的、具有时效性的数据。
特点:实时加载数据,不存储数据,处理过程计算逻辑不可更改,逻辑一旦修改之前的数据无法重新计算,低时延。适合对时间敏感的实时计算,数据密集型但可以拆分为小批量数据的任务。如Storm、IBM、淘宝银河等。
Storm:Nimbus运行在主节点负责分发代码和任务分配。Worker进程分为Spout用来接收数据和Bolt用来处理数据。

三、Actor - 封装的实现
开发分布式模式时,需要维护进程之间的状态、数据等,工作量巨大。而Actor就帮我们实现了。指定了Actor内部的计算逻辑和多个Actor之间的通信规则。
多个Actor以消息传递,每个Actor都有个信箱。
实现了更高级别的抽象、非阻塞、无锁、并发高、易扩展。但代码重用性小、系统开销大、实现复杂、不适用严格要求消息顺序的系统。
应用有:Erlang/OTP、Akka、Quasar等。

四、流水线
节点1处理任务A第一步 -> 随后,节点2处理任务A第二步,空闲的节点1处理任务B第一步。把同个任务拆分为多个步骤交由不同节点执行。每个节点顺序的处理多个任务中特定的某一步。
MapReduce强调大任务拆分为小任务,任务间执行相同的逻辑且无依赖。流水线强调同一个任务分为不同的步骤,一个节点的输出是下一个节点的输入。
例如:TensorFlow的机器学习流水线来讲:

  • 节点1处理第N任务的数据的输入,然后交由节点2,节点1继续处理第N+1个任务的输入。
  • 节点2执行数据转换,然后交由节点3。节点2继续做下一个任务的数据转换。
  • 节点3做特征提取,然后交由节点4。节点3继续做下一个任务的特征提取
  • 节点4做模型训练。

标签: 分布式

添加新评论