如何在flink中传递“execution.buffer timeout”配置?我已尝试将此配置添加到 flink-conf.yaml
但没有起作用。我们需要在哪里设置此配置?
我试过用下面的代码编程设置它,但不知怎么的,它并没有减少我的延迟。我只是想知道我是否可以通过一个配置文件来设置
StreamExecutionEnvironment env = StreamExecutionEnvironment.createRemoteEnvironment(hots, port, null));
env.setBufferTimeout(2);
StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, streamSettings);
tableEnv.executeSql(query);
我不确定我是否遗漏了什么。
更新
为了测试属性是否被传递给flink,我尝试设置 BufferTimeout
属性到-2英寸 flink-conf.yaml
,但它没有抛出任何异常。当我在代码中将它设置为-2时出现异常。这让我觉得这个财产没有传给Flink。另外,我的延迟数有一个明确的模式,从45毫秒到100毫秒连续。这表明flink在交付之前发生了一些缓冲。
你能给我指一下我们在flink github repo中设置这个的文件吗?
1条答案
按热度按时间2ekbmq321#
env.setBufferTimeout(2)
在代码或设置中execution.buffer-timeout: 2
在flink-conf.yaml中(或通过-Dexecution.buffer-timeout=2
)应该有用。请注意,如果缓冲区没有超时,这不会产生任何明显的效果。也许你的缓冲区通常是满的?您可以根据度量计算平均缓冲区大小(
numBytesInRemote / numBuffersInRemote
)并将其与缓冲区大小(32kib)进行比较,以估计缓冲区超时的频率。请注意,如果将flink作为一个小型集群运行,则不会读取flink-conf.yaml(换句话说,在一个jvm中运行客户机应用程序、作业管理器和任务管理器,例如在ide中)。