分布式概念:分布式计算(MapReduce、Stream、Actor、流水线)

Map Reduce 模式(Hadoop海量数据的处理)

核心思想:将一个复杂的、难以直接解决的大问题,分割成一些规模较小的、可以比较简单的或直接求解的子问题,这些子问题之间相互独立且与原问题形式相同,递归地求解这些子问题,然后将子问题的解合并得到原问题的解。

MapReduce 分为 Map 和 Reduce 两个核心阶段,其中 Map 对应“分”,即把复杂的任务分解为若干个“简单的任务”执行;Reduce 对应着“合”,即对 Map 阶段的结果进行汇总。

MapReduce 主要包括以下三种组件:

Master,也就是 MRAppMaster,该模块像一个大总管一样,独掌大权,负责分配任务,协调任务的运行,并为 Mapper 分配 map() 函数操作、为 Reducer 分配 reduce() 函数操作。

Mapper worker,负责 Map 函数功能,即负责执行子任务。

Reducer worker,负责 Reduce 函数功能,即负责汇总各个子任务的结果。

整个 MapReduce 的工作流程主要可以概括为 5 个阶段,即:Input(输入)、Splitting(拆分)、Mapping(映射)、Reducing(化简)以及 Final Result(输出)。 

 

Stream模式(Stom实时处理)

如流水般持续涌现,且需要实时处理的数据,我们称之为流数据

流数据的特征主要包括以下 4 点:

数据如流水般持续、快速地到达;海

量数据规模,数据量可达到 TB 级甚至 PB 级;

对实时性要求高,随着时间流逝,数据的价值会大幅降低;

数据顺序无法保证,也就是说系统无法控制将要处理的数据元素的顺序。

 

流计算一般用于处理数据密集型应用。比如,淘宝等大型网站中,每天都会产生大量的流数据,这些数据包括用户的搜索内容、用户的浏览记录等。实时采集用户数据,并通过流计算进行实时数据分析,可以了解每个时刻数据流的变化情况,甚至可以分析用户的实时浏览轨迹,从而进行个性化内容实时推荐,提高用户体验。

工作原理

流计算强调的是实时性,数据一旦产生就会被立即处理,当一条数据被处理完成后,会序列化存储到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理。

使用流计算进行数据处理,一般包括 3 个步骤

第一步,提交流式计算作业。

第二步,加载流式数据进行流计算。

第三步,持续输出计算结果。

 

流计算和批量计算的区别:

批量计算可以不具有实时性,如mapreduce.

Actor 模式

一种分布式并行计算模型。这种模型有自己的一套规则,规定了 Actor 的内部计算逻辑,以及多个 Actor 之间的通信规则。在 Actor 模型里,每个 Actor 相当于系统中的一个组件,都是基本的计算单元。
Actor 模型的计算方式与传统面向对象编程模型(Object-Oriented Programming,OOP)类似,一个对象接收到一个方法的调用请求(类似于一个消息),从而去执行该方法。
Actor 模式采用了异步模式,并且每个 Actor 封装了自己的数据、方法等,解决了 OOP 存在的死锁、竞争等问题。

Actor 模型的三要素是状态、行为和消息,有一个很流行的等式:Actor 模型 =(状态 + 行为)+ 消息。

状态(State)。Actor 组件本身的信息,相当于 OOP 对象中的属性。Actor 的状态会受 Actor 自身行为的影响,且只能被自己修改。

行为(Behavior)。Actor 的计算处理操作,相当于 OOP 对象中的成员函数。Actor 之间不能直接调用其他 Actor 的计算逻辑。Actor 只有收到消息才会触发自身的计算行为。

消息(Mail)。Actor 的消息以邮件形式在多个 Actor 之间通信传递,每个 Actor 会有一个自己的邮箱(MailBox),用于接收来自其他 Actor 的消息,因此 Actor 模型中的消息也称为邮件。一般情况下,对于邮箱里面的消息,Actor 是按照消息达到的先后顺序(FIFO)进行读取和处理的。 

Actor 工作原理

3 个 Actor 之间基于消息和消息队列的工作流程进行说明。这 3 个 Actor 的工作流程。

消息交互过程:

1.Actor1 和 Actor3 先后向 Actor2 发送消息,消息被依次放入 Actor2 的 MailBox 队列的队尾 ;

2.Actor2 从 MailBox 队列的队首依次取出消息执行相应的操作,由于 Actor1 先把消息发送给 Actor2,因此 Actor2 先处理 Actor1 的消息;

3.Actor2 处理完 Actor1 的消息后,更新内部状态,并且向其他 Actor 发送消息,然后处理 Actor3 发送的消息。 

Actor 之间的消息传递过程(略)

优点:非阻塞性,无需使用锁,并发度高。

缺点:不适用于对消息处理顺序有严格要求的系统,工程中不易实现 Actor 模型。

流水线模式(TenserFlow)


数据并行计算的一种形式,就是将一个任务拆分为多个步骤(子任务),然后多个这样的任务通过对步骤(子任务)的重叠执行,以实现数据并行处理的场景

计算机中的流水线(Pipeline)技术是一种将每条指令拆分为多个步骤,多条指令的不同步骤重叠操作,从而实现几条指令并行处理的技术。现代 CPU 指令采用了流水线设计,将一条 CPU 指令分为取指(IF)、译码(ID)、执行(EX)、访存(MEM)、回写(WB)五级流水线来执行。

在分布式领域中,流水线计算模式也类似,它是将一个大任务拆分为多个步骤执行,不同的步骤可以采用不同的进程执行。这,使得不同任务可以并行执行,从而提高了系统效率。

流水线计算模式的原理
TensorFlow 运用了流水线模式对输入数据进行预处理,其数据输入流水线主要包含 3 个步骤
提取(Extract)。通过多种途径读取数据,比如内存、本地的 HDD 或 SSD、远程的 HDFS、GCS 等。数据的种类也有很多,比如图像数据、文本数据、视频数据等。
转换(Transform)。使用 CPU 处理器对输入的数据进行解析以及预处理操作,包括混合重排(shuffling)、批处理(batching), 以及一些特定的转换。比如图像解压缩和扩充、文本矢量化、视频时序采样等。
加载(Load)。将转换后的数据加载到执行机器学习模型的加速器设备上,比如 GPU 或 TPU。

因此 TensorFlow 的数据输入流水线也称为 ETL 流水线

不使用流水线技术和使用流水线技术时,CPU、GPU/TPU 的训练过程对比:

使用流水线技术的训练过程:

将训练步骤的数据预处理和数据训练过程重叠到一起。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值