SparkStreaming 原理_Receiver | 学习笔记

简介: 快速学习 SparkStreaming 原理_Receiver

开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:SparkStreaming 原理_Receiver】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/692/detail/12138


SparkStreaming 原理_Receiver

一、Receiver

二、receiver 结构

三、Receiver 的执行过程

 

一、Receiver

在 Spark Streaming 中一个非常大的挑战是,很多外部的队列和存储系统都是分块的, RDD 是分区的,在读取外部数据源的时候,会用不同的分区对照外部系统的分片,

例如

image.png

假如在存储侧有一个文件名为 /dataest/wordcout.txt,这个文件在 HDFS 中将分为三个 block,此时有一个问题,Kafka 是不是也是分片?

Kafka 的一个 topic 是不是分为多个 Partition,那么,如果在 spark streaming 获取 Kafka 数据的时候,要不要让 spark streaming 获取的时候也是分片的?

image.png

假如说使用 inputDstream 去获得 Kafka 数据,如果 Kafka 是分片的,那么 InputDstream 也需要进行分片以对应卡夫卡分片的数据。

●DStream 中是 RDD 流只是 RDD 的分区对应了 Kafka 的分区就可以了吗?

答案是不行,因为需要一套单独的机制来保证并行的读取外部数据源,这套机制叫做 Receiver,这套机制要支持分布式。

 

二、receiver 结构

image.png

为了保证并行获取数据,对应每一个外 部数据源的分区,所以 Receiver 也要是分布式的,主要分为三个部分

●Receiver 是一个对象,是可以有用户自定义的获取逻辑对象,表示了如何获取数据,Receiver 是可以自定义的,receiver 可以在每个 Executor 中运行,因为receiver 是分布式的。

●Receiver Tracker 是 Receiver 的协调和调度者, 其运行在 Driver. 上

●Receiver Supervisor 被 Receiver Tracker 调度到不同的几点上分布式运行,其会拿到用户自定义的 Receiver 对象,使用这个对象来获取外部数据,Receiver Supervisor 负责 Receiver 的运行。

 

三、Receiver 的执行过程

image.png

1.在 Spark Streaming 程序开启时候,Receiver Tracker 使用 JobScheduler 分发Job 到不同的节点,每个 Job 包含一个 Task,这个 Task 就是 Receiver Supervisor ,这个部分的源码还挺精彩的,其实是复用了通用的调度逻辑

2. ReceiverSupervisor 启动后运行 Receiver 实例

3. Receiver 启动后,就将持续不断地接收外界数据,并持续交给ReceiverSupervisor 进行数据存储

4. ReceiverSupervisor 持续不断地接收到 Receiver 转来的数据,并通过BlockManager 来存储数据

5.获取的数据存储完成后发送元数据给 Driver 端的 ReceiverTracker ,包含数据块的 id,位置,数量,大小等信息

 

相关文章
|
9月前
|
消息中间件 分布式计算 Kafka
SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)
SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(一)
128 5
|
数据采集 数据处理
SparkStreaming 里的数据怎么处理的?
SparkStreaming 里的数据怎么处理的?
72 0
|
消息中间件 存储 分布式计算
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(二)
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(二)
|
消息中间件 分布式计算 Kafka
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(一)
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(一)
|
存储 分布式计算 网络协议
Sparkstreaming 案例 — socket 回顾 | 学习笔记
快速学习 Sparkstreaming 案例 — socket 回顾
Sparkstreaming 案例 — socket 回顾 | 学习笔记
|
大数据 开发者
Sparkstreaming 案例 -Netcat | 学习笔记
快速学习 Sparkstreaming 案例 -Netcat
Sparkstreaming 案例 -Netcat | 学习笔记
|
分布式计算 监控 算法
Sparkstreaming 介绍 场景 | 学习笔记
快速学习 Sparkstreaming 介绍 场景
Sparkstreaming 介绍 场景 | 学习笔记
|
分布式计算 Hadoop 大数据
SparkStreaming 案例_运行 | 学习笔记
快速学习 SparkStreaming 案例_运行
SparkStreaming 案例_运行 | 学习笔记
|
消息中间件 分布式计算 NoSQL
Sparkstreaming 介绍-架构 | 学习笔记
快速学习 Sparkstreaming 介绍-架构
Sparkstreaming 介绍-架构 | 学习笔记
|
分布式计算 大数据 数据处理
SparkStreaming 原理_DStream 的静态和动态 | 学习笔记
快速学习 SparkStreaming 原理_DStream 的静态和动态
SparkStreaming 原理_DStream 的静态和动态 | 学习笔记

热门文章

最新文章