开发者社区> 问答> 正文

使用Flink SQL实现离线处理时,遇到资源占用过多的问题怎么解决?

各位好,最近在使用Flink SQL实现离线处理时,遇到资源占用过多的问题: 1 由于之前一个taskmanager配置了多个slot,导致slot之间内存抢占溢出的问题,后来每个taskmanager就配置了一个slot 2 有的sql非常复杂,需要读取多个hive source,我们配置了开启hive推断并配置最大的并行度为10; 3 当多个操作节点并行时,一个普通的任务可能需要申请上百个slot 直接导致yarn集群资源被耗光。

想了解下,针对slot是否有相关配置,限制最大slot的申请数量,使得不同任务可以共享slot执行。

另外,关于slotsharingGroup有点疑问,slotsharinggroup是不是仅针对单个source与下游的function。比如: Source[4] —> map[4] —> reduce[3],这三个任务可以进行slotsharing,此时需要的最大slot是4。 但是如果source包含2个,此时两个source是无法进行slotsharing的,此时需要的最大slot是8。

来自志愿者整理的flink邮件归档来自志愿者整理的FLINK邮件归档

展开
收起
毛毛虫雨 2021-12-05 06:10:40 1415 0
1 条回答
写回答
取消 提交回答
  • 第一点,限制最大slot的申请数量,千呼万唤终于在1.11有了这个feature.[1] 配置ResourceManagerOptions.MAX_SLOT_NUM(slotmanager.number-of-slots.max). 1.11即将发布。

    第二点, 2.1 Batch作业默认是全blocking的边,所以Slot share是不生效的,在1.11会有更灵活的边配置:[2] 2.2 关于slotsharingGroup,两个source 在batch的配置下,是无法slotsharing的,这是由于table的batch主动配置的。[3]

    [1]https://issues.apache.org/jira/browse/FLINK-16605 [2] https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-shuffle-mode [3] https://github.com/apache/flink/blob/1276fa655ba46808807dd7ffef169ae1ff51a41d/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/graph/StreamGraph.java#L226

    来自志愿者整理的flink邮件归档来自志愿者整理的FLINK邮件归档

    2021-12-05 11:09:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载