【大数据面试题】008 谈一谈 Flink Slot 与 并行度

时间:2024-02-22 20:58:02

【大数据面试题】008 谈一谈 Flink Slot 与 并行度配置

      • 并行度 Parallelism 概念作用
      • Slot 概念作用
      • 如何设置
      • TaskManager 任务管理器
      • Flink submit 脚本

一步一个脚印,一天一道面试题

该文章有较多引用文章
https://zhuanlan.zhihu.com/p/572170629?utm_id=0

并行度 Parallelism 概念作用

并行度是作用于算子的单位。Flink 的每个算子都可以单独设置并行度。一般来说,并行度越大,处理能力越大,处理的就越快。

DataStream<T> dataStream = ...; // 获取数据流
dataStream
    .setParallelism(10)
    .map(...); // 设置并行度为 10 的 map 算子

Slot 概念作用

Slot 是 Flink 的最小资源管理单位。目前 Slot 可以隔离内存,但不能隔离 CPU,CPU 是 TaskManager 共享的。跟并行度对应的单位是算子不同,Slot 对应的单位是整个 Flink Job

如何设置

一个 task 一个 slot
可以在 Flink 的 web 中找到 Job 有多少个 task,尽量每个 task 都有 slot,避免 task 出现等待资源的情况。

TaskManager 任务管理器

TaskManager = 并行度 / Slot

Flink submit 脚本

#!/bin/bash

FLINK_HOME=/path/to/flink  # Flink 的安装路径
JOB_JAR=/path/to/job.jar  # 需要提交的 Flink 作业的 Jar 包路径

SLOTS=10  # 设置使用的 slot 数量
TASKMANAGER_MEMORY=4096  # 设置每个 TaskManager 的内存大小为 4GB
TASKMANAGERS=2  # 设置 TaskManager 的数量为 2

$FLINK_HOME/bin/flink run \
    -m yarn-cluster \
    -yn $SLOTS \
    -ytm $TASKMANAGER_MEMORY \
    -ys $SLOTS \
    -yjm $TASKMANAGER_MEMORY \
    -tm $TASKMANAGERS \
    -yqu flink_queue \
    -yD key=value \
    -c your.main.Class \
    $JOB_JAR

# -tm 设置 Task Manager 的数量
# -ys 设置 YARN session 的 slot 数量,这个值通常应与 -yn 中的 slot 数量保持一致。
# -yjm 设置 YARN session 的 JobManager 内存大小。
# -yqu 设置作业提交到的 YARN 队列名称。
# -yD 通过该选项可以设置 Flink 的配置项,如设置并行度、配置文件等。key=value 表示一个具体的配置项。