Spark通信架构概述

Spark2.x版本使用Netty通讯框架作为内部通讯组件。spark 基于netty新的rpc框架借鉴了Akka的中的设计,它是基于Actor模型,如下图所示:

Spark通讯框架中各个组件(Client/Master/Worker)可以认为是一个个独立的实体,各个实体之间通过消息来进行通信。具体各个组件之间的关系图如下:

Endpoint(Client/Master/Worker)有1个InBox和N个OutBox(N>=1,N取决于当前Endpoint与多少其他的Endpoint进行通信,一个与其通讯的其他Endpoint对应一个OutBox),Endpoint接收到的消息被写入InBox,发送出去的消息写入OutBox并被发送到其他Endpoint的InBox中。

Spark通讯架构解析

Spark通信架构如下图所示:

  1. RpcEndpoint:RPC端点,Spark针对每个节点(Client/Master/Worker)都称之为一个Rpc端点,且都实现RpcEndpoint接口,内部根据不同端点的需求,设计不同的消息和不同的业务处理,如果需要发送(询问)则调用Dispatcher;
  2. RpcEnv:RPC上下文环境,每个RPC端点运行时依赖的上下文环境称为RpcEnv;
  3. Dispatcher:消息分发器,针对于RPC端点需要发送消息或者从远程RPC接收到的消息,分发至对应的指令收件箱/发件箱。如果指令接收方是自己则存入收件箱,如果指令接收方不是自己,则放入发件箱;
  4. Inbox:指令消息收件箱,一个本地RpcEndpoint对应一个收件箱,Dispatcher在每次向Inbox存入消息时,都将对应EndpointData加入内部ReceiverQueue中,另外Dispatcher创建时会启动一个单独线程进行轮询ReceiverQueue,进行收件箱消息消费;
  5. RpcEndpointRef:RpcEndpointRef是对远程RpcEndpoint的一个引用。当我们需要向一个具体的RpcEndpoint发送消息时,一般我们需要获取到该RpcEndpoint的引用,然后通过该应用发送消息。
  6. OutBox:指令消息发件箱,对于当前RpcEndpoint来说,一个目标RpcEndpoint对应一个发件箱,如果向多个目标RpcEndpoint发送信息,则有多个OutBox。当消息放入Outbox后,紧接着通过TransportClient将消息发送出去。消息放入发件箱以及发送过程是在同一个线程中进行;
  7. RpcAddress:表示远程的RpcEndpointRef的地址,Host + Port。
  8. TransportClient:Netty通信客户端,一个OutBox对应一个TransportClient,TransportClient不断轮询OutBox,根据OutBox消息的receiver信息,请求对应的远程TransportServer;
  9. TransportServer:Netty通信服务端,一个RpcEndpoint对应一个TransportServer,接受远程消息后调用Dispatcher分发消息至对应收发件箱;

根据上面的分析,Spark通信架构的高层视图如下图所示:

Spark内核解析之三:Spark 通讯架构相关推荐

  1. Spark内核解析1

    Spark通讯架构 脚本探究: 概述 Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制.Spark 任务调度机制.Spark 内存管理机制.Spark 核心功能的 ...

  2. 05_大数据技术之Spark内核解析(1.1)

    1. Spark 内核概述 Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spa ...

  3. Spark内核解析之四:Spark 任务调度机制

    前言 在生产环境下,Spark集群的部署方式一般为YARN-Cluster模式,之后的内核分析内容中我们默认集群的部署方式为YARN-Cluster模式. Spark任务提交流程 在前面我们讲解了Sp ...

  4. Spark内核设计的艺术:架构设计与实现——前言

    前言 为什么写这本书 给这本书写前言,让我想起了两年前给<深入理解Spark:核心思想与源码分析>一书写前言的经历.这让我不禁想起崔护的<题都城南庄>,诗的内容是: 去年今日此 ...

  5. Spark内核解析2

    Spark的交互流程- - -节点启动: Master启动时首先创一个RpcEnv对象,负责管理所有通信逻辑 Master通过RpcEnv对象创建一个Endpoint,Master就是一个Endpoi ...

  6. Spark内核解析之六:Spark 内存管理

    前言 在执行Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并 ...

  7. Spark内核解析之一:内核概述

    Spark 内核概述 Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制.Spark任务调度机制.Spark 内存管理机制.Spark 核心功能的运行原理等,熟练掌 ...

  8. Spark内核解析之七:核心组件解析

    BlockManager数据存储与管理机制 BlockManager是整个Spark底层负责数据存储与管理的一个组件,Driver和Executor的所有数据都由对应的BlockManager进行管理 ...

  9. 第001讲-Spark内核解密:Spark五大功能组件

    一.Spark SQL SQL Core Spark SQL的核心是把已有的RDD,带上Schema信息,然后注册成类似sql里的"Table",对其进行sql查询.这里面主要分两 ...

最新文章

  1. 做三年地方网站不如别人打一场麻将
  2. C语言中fgets()函数
  3. 热泵精馏_精馏干货16 || 分子蒸馏
  4. 循序渐进——NAnt构建实例
  5. [消息]C++ Connections 在拉斯维加斯召开年会
  6. [转载]JDBC/Spring/MyBatis性能比较
  7. [渝粤教育] 广东-国家-开放大学 21秋期末考试招投标与合同管理10217k2 (2)
  8. 子主题function php,php – 带有依赖项的子主题
  9. oracle 10g for linux
  10. Sklearn之datasets和训练
  11. 调取方法_最新微信调取转账证据新方法公布
  12. Https 真的安全吗?可以抓包吗?如何防止抓包吗?
  13. 家政维修小程序+上门预约小程序+VUE前后端分离+uniapp(附近师傅+门店入驻+在线抢单服务APP、小程序、公众号、H5)
  14. Docker mongo:5.0
  15. NR SSB Beam Sweeping
  16. P1862 输油管道问题
  17. 详解线性回归算法的纯Python实现
  18. JavaStream流处理数据的几种方式
  19. 【】海蜘蛛软路由安装及设置
  20. Norton 360 V5.0简介及90天Microsoft OEM版下载

热门文章

  1. iTOP-i.MX6Q开发板支持安卓Android6.0系统
  2. 机器学习---算法---马尔科夫
  3. javascript如何处理多级的实时监听
  4. oracle数据库小总结(2017年7月10日)
  5. BestCoder Round #14 B 称号 Harry And Dig Machine 【TSP】
  6. 《Java虚拟机规范》阅读(二):编译
  7. DevExpress 汉化(简单、实用、快速) 转
  8. [HDU 2096] 小明A+B
  9. @echo off 与@echo on
  10. [日常] Go语言圣经-GIF动画练习语法