【大数据面试题】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 表示一个具体的配置项。