【大數據面試題】008 談一談 Flink 資源如何配置
- 并行度 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/bashFLINK_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 表示一個具體的配置項。