Время ожидания точки сохранения Flink

#apache-flink

#apache-flink

Вопрос:

Я использую версию Flink 1.11 и у меня проблема с таймаутом во время сохранения

снимок исключения тайм-аута

Размер моей точки сохранения составляет около 4 ГБ
Как увеличить время ожидания точки сохранения?

Спасибо

Ответ №1:

Пожалуйста, обратитесь к разделу Включение и настройка контрольных точек документации flink.

Вы можете увеличить время ожидания точки сохранения до 1 минуты с помощью

 // checkpoints have to complete within one minute, or are discarded
env.getCheckpointConfig().setCheckpointTimeout(60000);
 

Я бы также рекомендовал увеличить минимальное время между контрольными точками, чтобы убедиться, что потоковое приложение выполняет определенный прогресс между контрольными точками через

 // make sure 500 ms of progress happen between checkpoints
env.getCheckpointConfig().setMinPauseBetweenCheckpoints(500);
 

Комментарии:

1. Спасибо @mikalai-lushchytski за ваш быстрый ответ. Одинакова ли настройка контрольной точки и точки сохранения?

2. привет, @HanChris! Да, это то же самое, что и внутренние контрольные точки, и точки сохранения в основном используют один и тот же код и создают один и тот же формат.

3. есть ли какие-либо обходные пути для изменения этого на уровне конфигурации? (flink-conf.yaml) вместо того, чтобы менять исходный код? @mikalai-lushchytski

4. Честно говоря, я настроил это только внутри кода, но ссылка на документ ci.apache.org/projects/flink/flink-docs-release-1.11/ops /… также показывает flink-conf.yaml доступные параметры уровня — например, execution.checkpointing.timeout .

Ответ №2:

У меня была такая же проблема, как вы можете видеть из моих очень похожих журналов:

 org.apache.flink.util.FlinkException: Triggering a savepoint for the job 63a70a46cf5bffda3ca0a1e791113122 failed.
at org.apache.flink.client.cli.CliFrontend.triggerSavepoint(CliFrontend.java:777)
at org.apache.flink.client.cli.CliFrontend.lambda$savepoint$9(CliFrontend.java:754)
at org.apache.flink.client.cli.CliFrontend.runClusterAction(CliFrontend.java:1002)
at org.apache.flink.client.cli.CliFrontend.savepoint(CliFrontend.java:751)
at org.apache.flink.client.cli.CliFrontend.parseAndRun(CliFrontend.java:1072)
at org.apache.flink.client.cli.CliFrontend.lambda$main$10(CliFrontend.java:1132)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730)
at org.apache.flink.runtime.security.contexts.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:41)
at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1132)

Caused by: java.util.concurrent.TimeoutException
at java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1784)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928)
at org.apache.flink.client.cli.CliFrontend.triggerSavepoint(CliFrontend.java:771)
... 10 more
 

Причина заключалась не в том, что время ожидания точки сохранения истекло, а скорее в том, что время ожидания связи с клиентом истекло.

Для меня это происходило на EMR. Редактирование /etc/flink/conf.dist/flink-conf.yaml на главном узле, чтобы добавить следующее, что увеличило время ожидания до 5 минут, сделало свое дело:

akka.client.timeout: 300000

Для некоторого дополнительного цвета размер точки сохранения, с которым я работал, составлял 160, 3 гигабайта, извлеченных из 4 экземпляров.