在纱线中运行Flink

时间:2018-12-24 13:01:46

标签: apache-flink flink-streaming flink-sql

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

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

我的作业执行联接(非键流上的SQL时间窗口联接),并且它们缓冲最后3个小时的数据。根据Flink docs 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

1 个答案:

答案 0 :(得分:0)

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