停止与取消flink作业

i2loujxw  于 2021-06-21  发布在  Flink
关注(0)|答案(0)|浏览(415)

我们在生产中有好几个flink(1.5)工作。它们中的大多数使用kafka 0.8.2.2作为源代码(我们正在努力升级kafka,但那是另一回事)。
我们的一些作业正在使用flink会话窗口机制,而有些作业没有(只Map/过滤事件的简单作业)。此外,有些作业正在使用asyncio来丰富外部数据库中的事件。
有时我们会发现我们想要为那些现有作业添加的bug或小特性。
为了防止数据丢失,我们 cancel 相关工作(与 savepoint ),部署新的更新作业,并从上一个开始重新运行它 savepoint .
问题是,大多数情况下,我们在尝试从最后一个运行时会遇到异常 savepoint 这是有道理的,因为我们改变了工作代码和 savepoint 无法载入内存,对吗?
问题是,我们可以承受延迟(稍后我们将缩小差距),但我们不能承受数据丢失。
我看到了 stop cli操作看起来很有前途,因为它应该优雅地完成它。
支持的flink源代码是什么 stop 手术?有Kafka版本支持这一点吗?Flume类型是否也相关(bucketing sink可能想完成上传到s3?)
是吗 stop 使用windows的命令支持作业?如果是,它在会话窗口中的行为如何?
在不丢失数据的情况下更新现有/正在运行的flink作业的最佳实践是什么?
编辑:有时我们会在 cancel 命令(异常)-由于异步超时:

java.lang.Exception: An async function call terminated with an exception. Failing the AsyncWaitOperator.
    at org.apache.flink.streaming.api.operators.async.Emitter.output(Emitter.java:137)
    at org.apache.flink.streaming.api.operators.async.Emitter.run(Emitter.java:85)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.TimeoutException: Async function call has timed out.
    at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
    at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)
    at org.apache.flink.streaming.api.operators.async.queue.StreamRecordQueueEntry.get(StreamRecordQueueEntry.java:68)
    at org.apache.flink.streaming.api.operators.async.Emitter.output(Emitter.java:129)
    ... 2 more
Caused by: java.util.concurrent.TimeoutException: Async function call has timed out.
    at org.apache.flink.streaming.api.operators.async.AsyncWaitOperator$1.onProcessingTime(AsyncWaitOperator.java:212)
    at org.apache.flink.streaming.runtime.tasks.SystemProcessingTimeService$TriggerTask.run(SystemProcessingTimeService.java:281)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    ... 1 more

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题