知方号

知方号

Flink系列

Flink系列

在使用 Flink 处理生产实际问题时,并行度和资源的配置调优是我们经常要面对的工作之一,如何有效和正确地配置并行度是我们的任务能够高效执行的必要条件。这一课时就来看一下生产环境的并行度和资源配置问题。

Flink 中的计算资源

通常我们说的 Flink 中的计算资源是指具体任务的 Task。首先要理解 Flink 中的计算资源的一些核心概念,比如 Slot、Chain、Task 等,正确理解这些概念有助于开发者了解 Flink 中的计算资源是如何进行隔离和管理的,也有助于我们快速地定位生产中的问题。

Task Slot

我们在第 03 课时“Flink 的编程模型与其他框架比较” 中提到过,在实际生产中,Flink 都是以集群在运行,在运行的过程中包含了两类进程,其中之一就是:TaskManager。

在 Flink 集群中,一个 TaskManger 就是一个 JVM 进程,并且会用独立的线程来执行 task,为了控制一个 TaskManger 能接受多少个 task,Flink 提出了 Task Slot 的概念。

我们可以简单地把 Task Slot 理解为 TaskManager 的计算资源子集。假如一个 TaskManager 拥有 5 个 Slot,那么该 TaskManager 的计算资源会被平均分为 5 份,不同的 task 在不同的 Slot 中执行,避免资源竞争。但需要注意的是,Slot 仅仅用来做内存的隔离,对 CPU 不起作用。那么运行在同一个 JVM 的 task 可以共享 TCP 连接,以减少网络传输,在一定程度上提高了程序的运行效率,降低了资源消耗。

Slot 共享

默认情况下,Flink 还允许同一个 Job 的子任务共享 Slot。因为在一个 Flink 任务中,有很多的算子,这些算子的计算压力各不相同,比如简单的 map 和 filter 算子所需要的资源不多,但是有些算子比如 window、group by 则需要

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。