Flink 中的数据传输 -5
TaskManager负责将数据从发送任务传输到接收任务,记录并非逐个发送,而是在缓冲区中以批次形式逐渐发送。该技术有效利用网络资源、实现高吞吐的基础,
注意:将记录放入缓冲并不意味着Flink处理模型是基于微批处理
1.接收和发送在不同TaskManager
(1)每个TaskManager都有一个用于收发数据的网络缓冲池
(2)每个缓冲池默认32KB
(3)如果发送端和接收端运行在不同TaskManager上,就需要进行通信
(4)流式应用需要以流水线方式交换数据
(5)每对TaskManager之间要维护一个或多个永久TCP连接来执行交换数据
(6)在Shuffle连接模式下,每个发送端任务都需要向任意一个接收任务传输
(7)对于每个接收任务,TaskManager都要提供一个专用的网络缓冲区,用于接收其它任务发来的数据
(8)为了使得流水线式的数据交换,TaskManager必须提供足够多的缓存区来同时服务所有进出链接。
2.接收和发送在同一TaskManager
(1)发送端:发送任务会将要发送的任务序列化到缓冲区中,当缓冲区占满后,就将数据放入队列
(2)接收端:接收端会从队列中获取数据,并将数据进行反序列化
(3)同一TaskManager内不同任务之间数据传输不会涉及到网络通信
评论