0

我在 Yarn 上运行 Flink(1.4.2)。我正在使用 Flink Yarn Client 将作业提交到 Yarn Cluster。

假设我有一个带有 4 个插槽的 TM,并且我部署了一个并行度 = 4 的 flink 作业,带有 2 个容器 - 1 个 JM 和 1 个 TM。每个并行实例将部署在 TM 中的每个任务槽中(每个槽运行的整个作业管道)。

我的工作做了一个连接(非键控流上的 SQL 时间窗口连接),它们缓冲了最后 3 小时的数据。根据 Flink 文档the separate threads running in different task slot share data sets and data structures, thus reducing the per-task overhead.

我的问题是这些在不同任务槽中运行的线程是否会共享这些缓冲的数据以供加入。这些线程之间共享的所有数据。

编辑

示例查询 -

SELECT R.order_id, S.order.restaurant_id FROM awz_s3_stream1 R INNER JOIN awz_s3_stream2 S ON CAST(R.order_id AS VARCHAR) = S.order_id AND R.proctime BETWEEN S.proctime - INTERVAL '2' HOUR AND S.proctime + INTERVAL '2' HOUR GROUP BY HOP(S.proctime, INTERVAL '2' MINUTE, INTERVAL '1' HOUR), S.命令.restaurant_id

4

1 回答 1

0

每个都Task将收到自己的输入数据的分离分区。Tasks在同一平台上运行共享的TaskManager是服务和控制数据结构,如网络堆栈、网络连接、RPC 端点、分布式组件之间的心跳等。

于 2018-12-28T10:40:34.383 回答