Skip to main content

flink的webui 各种数字的意义

背景

webui对于刚刚入门flink的人来说,不仅仅可以了解基础概念,还能了解各种各种内容的区别。

  • task
  • subtask
  • operator
  • operator chain
  • slot

task和subtask和operator

  • operator 是一个算子
  • 一个subtask可以视为一个线程
  • operator chain由operator组成
  • 一个subtask(或者说是一个线程)包括一个operator chain
  • 一个slot 维护了一个资源集合(cpu/内存),一个slot可以包括多个subtask(多个线程)

operator chains 生成条件

代码

    public static boolean isChainable(StreamEdge edge, StreamGraph streamGraph) {
StreamNode downStreamVertex = streamGraph.getTargetVertex(edge);

return downStreamVertex.getInEdges().size() == 1 && isChainableInput(edge, streamGraph);
}

private static boolean isChainableInput(StreamEdge edge, StreamGraph streamGraph) {
StreamNode upStreamVertex = streamGraph.getSourceVertex(edge);
StreamNode downStreamVertex = streamGraph.getTargetVertex(edge);

if (!(streamGraph.isChainingEnabled()
&& upStreamVertex.isSameSlotSharingGroup(downStreamVertex)
&& areOperatorsChainable(upStreamVertex, downStreamVertex, streamGraph)
&& arePartitionerAndExchangeModeChainable(
edge.getPartitioner(), edge.getExchangeMode(), streamGraph.isDynamic()))) {

return false;
}

// check that we do not have a union operation, because unions currently only work
// through the network/byte-channel stack.
// we check that by testing that each "type" (which means input position) is used only once
for (StreamEdge inEdge : downStreamVertex.getInEdges()) {
if (inEdge != edge && inEdge.getTypeNumber() == edge.getTypeNumber()) {
return false;
}
}
return true;
}

相关阅读