Anteriormente, o Amazon Managed Service for Apache Flink era conhecido como Amazon Kinesis Data Analytics for Apache Flink.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Gerencie backups de aplicativos usando instantâneos
Um snapshot é a implementação Managed Service for Apache Flink de um Ponto de salvamento do Apache Flink. Um instantâneo é um backup do estado do aplicativo acionado, criado e gerenciado pelo usuário ou serviço. Para obter informações sobre os Savepoints do Apache Flink, consulte Savepoints
nota
Recomendamos que seu aplicativo crie um instantâneo várias vezes ao dia para reiniciar adequadamente com os dados de estado corretos. A frequência correta para seus instantâneos depende da lógica de negócios do seu aplicativo. Tirar instantâneos com frequência permite recuperar dados mais recentes, mas aumenta os custos e exige mais recursos do sistema.
No Managed Service for Apache Flink, você gerencia instantâneos usando as seguintes ações: API
Para saber o limite do número de snapshots por aplicativo, consulte Serviço gerenciado para cota de notebooks Apache Flink e Studio. Se seu aplicativo atingir o limite de snapshots, a criação manual de um snapshot falhará com um LimitExceededException
.
O Managed Service for Apache Flink nunca exclui snapshots. Será necessário excluir manualmente seus snapshots usando a ação DeleteApplicationSnapshot
.
Para carregar um snapshot salvo do estado do aplicativo ao iniciar um aplicativo, use o parâmetro ApplicationRestoreConfiguration
da ação StartApplication
ou UpdateApplication
.
Este tópico contém as seguintes seções:
Gerencie a criação automática de instantâneos
Se SnapshotsEnabled
estiver definido como true
no ApplicationSnapshotConfigurationpara o aplicativo, o Managed Service for Apache Flink cria e usa automaticamente instantâneos quando o aplicativo é atualizado, escalado ou interrompido para fornecer uma semântica de processamento exatamente uma vez.
nota
Definir ApplicationSnapshotConfiguration::SnapshotsEnabled
como false
levará à perda de dados durante as atualizações do aplicativo.
nota
O Managed Service for Apache Flink aciona pontos de salvamento intermediários durante a criação do snapshot. Para a versão 1.15 ou superior do Flink, os pontos de salvamento intermediários não causam mais efeitos secundários. Consulte Acionamento de pontos de salvamento.
Os snapshots criados automaticamente têm as seguintes qualidades:
-
O instantâneo é gerenciado pelo serviço, mas você pode ver o instantâneo usando a ListApplicationSnapshotsação. Os snapshots criados automaticamente são contabilizados no seu limite de snapshots.
-
Se seu aplicativo exceder o limite de snapshots, os snapshots criados manualmente falharão, mas o serviço Managed Service for Apache Flink ainda criará snapshots com êxito quando o aplicativo for atualizado, escalado ou interrompido. Você deve excluir manualmente os instantâneos usando a DeleteApplicationSnapshotação antes de criar mais instantâneos manualmente.
Restauração a partir de um snapshot que contém dados de estado incompatíveis
Como os snapshots contêm informações sobre operadores, a restauração dos dados de estado de um snapshot para um operador que foi alterado desde a versão anterior do aplicativo pode ter resultados inesperados. Um aplicativo falhará se tentar restaurar dados de estado de um snapshot que não corresponda ao operador atual. O aplicativo com falha ficará preso no estado STOPPING
ou UPDATING
.
Para permitir que um aplicativo restaure a partir de um snapshot que contém dados de estado incompatíveis, defina o AllowNonRestoredState
parâmetro do FlinkRunConfigurationpara true
usar a UpdateApplicationação.
Você verá o seguinte comportamento quando um aplicativo for restaurado a partir de um snapshot obsoleto:
Operador adicionado: se um novo operador for adicionado, o ponto de salvamento não terá dados de estado para o novo operador. Nenhuma falha ocorrerá e não é necessário configurar
AllowNonRestoredState
.Operador excluído: se um operador existente for excluído, o ponto de salvamento terá dados de estado do operador ausente. Ocorrerá uma falha, a menos que
AllowNonRestoredState
esteja configurada comotrue
.Operador modificado: se forem feitas alterações compatíveis, como alterar o tipo de um parâmetro para um tipo compatível, o aplicativo poderá restaurar a partir do snapshot obsoleto. Para obter mais informações sobre restauração a partir de instantâneos, consulte Savepoints
na documentação do Apache Flink. Um aplicativo que usa o Apache Flink versão 1.8 ou posterior pode ser restaurado a partir de um snapshot com um esquema diferente. Um aplicativo que usa o Apache Flink versão 1.6 não pode ser restaurado. Para two-phase-commit coletores, recomendamos usar o snapshot do sistema (SWs) em vez do snapshot criado pelo usuário (). CreateApplicationSnapshot Para Flink, o Managed Service for Apache Flink aciona pontos de salvamento intermediários durante a criação do snapshot. Para o Flink 1.15 ou superior, os pontos de salvamento intermediários não causam mais efeitos secundários. Consulte Acionamento de pontos de salvamento
.
Se você precisar retomar um aplicativo incompatível com os dados existentes do ponto de salvamento, recomendamos que você ignore a restauração a partir do snapshot definindo o parâmetro da ApplicationRestoreType
ação como. StartApplicationSKIP_RESTORE_FROM_SNAPSHOT
Para obter mais informações sobre como o Apache Flink lida com dados de estado incompatíveis, consulte Evolução do esquema do estado
Analise exemplos de instantâneos API
Esta seção inclui exemplos de solicitações de API ações para o uso de instantâneos com um aplicativo. Para obter informações sobre como usar um JSON arquivo como entrada para uma API ação, consulteCódigo de exemplo de serviço gerenciado para Apache Flink API.
Habilitar instantâneos para um aplicativo
O exemplo de solicitação a seguir para a ação UpdateApplication
habilita snapshots para um aplicativo:
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSnapshotConfigurationUpdate": { "SnapshotsEnabledUpdate": "true" } } }
Criar um snapshot
O exemplo de solicitação da ação CreateApplicationSnapshot
a seguir cria um snapshot do estado atual do aplicativo:
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }
Listar instantâneos de um aplicativo
O exemplo de solicitação da ação ListApplicationSnapshots
a seguir lista os primeiros 50 snapshots do estado atual do aplicativo:
{ "ApplicationName": "MyApplication", "Limit": 50 }
Listar detalhes de um instantâneo do aplicativo
O exemplo de solicitação a seguir para a ação DescribeApplicationSnapshot
lista detalhes de um snapshot de aplicativo específico:
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }
Excluir um snapshot
O exemplo de solicitação da ação DeleteApplicationSnapshot
a seguir exclui um snapshot salvo anteriormente. Você pode obter o valor SnapshotCreationTimestamp
usando um ListApplicationSnapshots
ou DeleteApplicationSnapshot
:
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot", "SnapshotCreationTimestamp": 12345678901.0, }
Reinicie um aplicativo usando um snapshot nomeado
O exemplo a seguir de solicitação para a ação StartApplication
inicia o aplicativo usando o estado salvo de um snapshot específico:
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_CUSTOM_SNAPSHOT", "SnapshotName": "MyCustomSnapshot" } } }
Reinicie um aplicativo usando o snapshot mais recente
O exemplo de solicitação para a ação StartApplication
a seguir inicia o aplicativo usando o snapshot mais recente:
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
Reinicie um aplicativo sem tirar um instantâneo
O exemplo de solicitação para a ação StartApplication
a seguir inicia o aplicativo sem carregar o estado do aplicativo, mesmo que um snapshot esteja presente:
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "SKIP_RESTORE_FROM_SNAPSHOT" } } }