当调节Flink并行度与slot时候,会有一些坑。
其中的关系如下:假设集群中有一台master,k台slave节点。
Flink-conf.yaml中有两个重要的参数:
- taskmanager.numberOfTaskSlots,The number of task slots that each TaskManager offers. Each slot runs one parallel pipeline.
- parallelism.default,The parallelism used for programs that did not specify and other parallelism.
前者指定了每个taskmanager提供的slot个数,后者的指定的程序默认的并行度。两者之间的关系为:
p
a
r
a
l
l
e
l
i
s
m
.
d
e
f
a
u
l
t
<
=
k
(
t
h
e
N
u
m
b
e
r
O
f
t
a
s
k
m
a
n
a
g
e
r
)
∗
t
a
s
k
m
a
n
a
g
e
r
.
n
u
m
b
e
r
O
f
T
a
s
k
S
l
o
t
s
parallelism.default<=k(theNumber Of taskmanager)*taskmanager.numberOfTaskSlots
parallelism.default<=k(theNumberOftaskmanager)∗taskmanager.numberOfTaskSlots
否则程序运行时候将不会得到足够多的slot而报错。
总之就是,slot提供资源,越多越好,并行度不能超过slot总上限。