怎么確定一個Flink job的資源


Slots && parallelism

一個算子的parallelism 是5 ,那么這個算子就需要5個slot,

公式 :一個算子的parallelism 是n ,那么這個算子就需要5個n

通俗理解:幾個並行度,就是有幾個線程處理。

如何計算Slot

如果不設置SlotSharingGroup,那么需要的Slot數為應用的最大並行度數。

設置slot就是設置線程數。

設置parallelism 的依據是什么?

一個算子到底設置幾個(parallelism)線程執行呢?

solt 是用來對taskmanager內存進行平均分配的,每個solt內存都相同,也就是每一個並行度的內存是一樣的。

如果一個算子需要的內存多,就多設置幾個並行度。

如果一個算子需要的內存少,就少設置幾個並行度,省下來的slot讓給別人。因為slot是可以共享的。

怎么給一個任務分配 slot和內存?

假設有以下條件

  1. 集群

假設一個flink session 的一個slot 是2G內存.(如下腳本)

  1. 任務

你有50G的數據要處理

分配多少slot和內存是測試出來的,看哪個配置速率更快,以達到資源的合理利用.

假設 准備給他20G內存.

那么就是 20/2(一個slot 是2G內存) = 10 slot

於是就是slot 10 個, 內存是20g. parallelism 是10

腳本

/data/flink-1.10.1/bin/flink run \
-yid $application_id \
-yD env.java.opts="-XX:+UseG1GC" \
-c xxxxx.mainClass \
/data/hadoop/data/xxxxx.jar 

啟動yarn-session 腳本

#!/bin/bash

/data/flink-1.10.1/bin/yarn-session.sh \
-s 4 \
-jm 1g \
-tm 8g \
-d \
-ynm yarn-flink

一個taskmanager 8G內存,共4個slot 那么,一個slot就是2G內存.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM