我正在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
答案 0 :(得分:0)
每个Task
将收到其自己的输入数据的分离分区。在同一Tasks
上运行的TaskManager
共享的是服务和控制数据结构,例如网络堆栈,网络连接,RPC端点,分布式组件之间的心跳等。