从配置文件在flink中设置缓冲区超时

nimxete2  于 2021-07-15  发布在  Flink
关注(0)|答案(1)|浏览(570)

如何在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中设置这个的文件吗?

2ekbmq32

2ekbmq321#

env.setBufferTimeout(2) 在代码或设置中 execution.buffer-timeout: 2 在flink-conf.yaml中(或通过 -Dexecution.buffer-timeout=2 )应该有用。
请注意,如果缓冲区没有超时,这不会产生任何明显的效果。也许你的缓冲区通常是满的?您可以根据度量计算平均缓冲区大小( numBytesInRemote / numBuffersInRemote )并将其与缓冲区大小(32kib)进行比较,以估计缓冲区超时的频率。
请注意,如果将flink作为一个小型集群运行,则不会读取flink-conf.yaml(换句话说,在一个jvm中运行客户机应用程序、作业管理器和任务管理器,例如在ide中)。

相关问题