2016-09-13 4 views
3

Apache Flink + RabbitMQ 스택을 사용하고 있습니다. 세이브 포인트를 수동으로 트리거하고 작업을 복원 할 수있는 기회를 알고 있지만 문제는 성공적인 체크 포인트 이후에 Flink가 메시지를 확인한다는 것이고 세이브 포인트를 작성하고 상태를 복원하려면 마지막 성공 세이브 포인트와 마지막 성공 체크 포인트 사이의 모든 데이터가 손실됩니다 . 체크 포인트에서 작업을 복원하는 방법이 있습니까? 그러면 재생 불가능한 데이터 소스 (예 : rabbitmq)의 경우 데이터 손실 문제를 해결할 수 있습니다. Btw, 모든 오버 헤드가있는 체크 포인트가있는 경우 사용자가이를 사용하도록하지 않는 이유는 무엇입니까?체크 포인트에서 Apache Flink 작업 복원

답변

4

개념적으로 세이브 포인트는 체크 포인트와 메타 데이터 비트를 제외하고 아무것도 아닙니다. 두 경우 (Savepoint 및 Checkpoint)에서 Flink는 모든 연산자, 소스 및 싱크의 상태에 대해 일관된 검사 점을 만듭니다.

검사 점은 오류 복구를위한 내부 메커니즘으로 간주됩니다. 그러나 검사 점은 configured to be externalized checkpoints 일 수 있습니다. 외부 체크 포인트는 작업이 종료 될 때 자동으로 정리되지 않으며 수동으로 프로그램을 다시 시작하는 데 사용될 수 있습니다.

RabbitMQ 소스에 대한 문제는 재설정 할 수없는 검사 점을 확인하여 일부 상태를 외부 시스템으로 푸시하기 때문에 일종의 Flink의 검사 점 의미를 위반하는 것입니다.

세이브 포인트를 트리거하고 나중에 작업을 즉시 종료하는 메커니즘을 사용하면 문제를 해결할 수 있습니까? 이렇게하면 세이브 포인트를 수행 한 후 검사 점이 트리거되는 것을 방지 할 수 있습니다.

+0

예, 그게 내 문제를 해결할 것입니다. savepoint 이후 작업을 종료하는 방법이 있습니까? – user3237732

+0

아니요. 현재로서는 불가능합니다. 현재 진행중인 작업 재조정을 위해 추가 될 예정입니다. –

관련 문제