11-1、Spark通信模块

8Spark通信模块

8.1、通信框架AKKA

先介绍一下RPC

RCP(Remote Produce Call)是远程过程调用,基于C/S模型调用。

过程大致可以理解为本地分布式对象向主机发请求,不用自己编写底层通信本机。通过向服务器发送请求,服务器对象接受参数后,进行处理,再把处理后的结构发送回客户端。

RPC不支持对象通信,支持对象传输。

 

Spark在模块通信使用的是AKKA框架。

AKKA基于Scala开发,用于编写Actor应用。Actor模型在并行编程中是比较常用的一种模型。

Actors是一些包含状态和行为的对象。它们通过显示传递消息来进行通信,这些消息会被发送到它们的收件箱中(消息队列)。

一个Actor收到其他Actor消息后,可以根据需要作出各种相应。Actor建立一个消息队列,每次收到消息后,放入队列,而它每次也从队列中取出消息体来处理。通常这个过程是循环的,Actor可以时刻接收处理发送来的消息。

 

下图为Actor模型:

 

AKKA Actor树形结构Actors以树结构组织起来。一个Actor可能会把自己的任务划分成更多更小、利于管理的子任务。会开启自己的子Actor,负责监督这些子Actor

 

AKKA具有强大的并发处理能力,在国内豌豆荚做了很深的研究和实现。

Spark中并没有充分挖掘AKKA强大的并行计算能力,而是将其作为分布式系统中的RPC框架。很多组件封装为Actor,进行控制和状态通信。

AKKA的优势:

1)、并行和分布式:异步通信和分布式架构;

2)、可靠性:本地和远程都有监控和恢复;

3)、高性能:单机每秒可发送50 000 000个消息。1GB内存中可以创建和保持2 500 000Actor对象;

4)、去中心:区别于Master/Slave模式,采用无中心节点的架构;

5)、可扩展性:可以在分布式环境下Scale out,线性扩充计算能力;

 

8.2ClientMasterWorker间的通信

 

下图为Spark通信模型:

 

 

Standalone模式下,存在以下角色:

Client:提交作业;

Master:接收作业,启动DriverExecutor,管理Worker

Worker:管理节点资源,启动DriverExecutor

 

Client to Master

RegisterApplication:注册应用;

Master to Client

RegisteredApplication:注册应用后回复给Client

ExecutorAdded:通知Client Worker已经启动了Executor,当向Worker发送LaunchExecutor时,通知Client Actor

ExecutorUpdated:通知Client Executor状态已更新。

Master to Worker

LaunchExecutor:启动Executor

RegisteredWorkerWorker注册的回复。

RegiseredWorkerFailed:注册Worker失败的回复。

KillExecutor:停止Executor线程。

Worker to Master

RegisterWorker:注册Worker

Hearbeat:周期性的向Master发送心跳信息。

ExecutorStateChanges:通知MasterWxecutor状态更新。

Actor之间,消息发送端通过”!”符号发送消息,接收端通过receive方法中的case模型匹配接收和处理消息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值