Crescimento estadual ilimitado - Managed Service for Apache Flink

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á.

Crescimento estadual ilimitado

Se seu aplicativo não estiver descartando adequadamente as informações de estado desatualizadas, elas se acumularão continuamente e causarão problemas de desempenho ou estabilidade do aplicativo. Esta seção descreve os sintomas e as etapas de solução de problemas dessa condição.

Sintomas

Essa condição pode ter os seguintes sintomas:

  • A lastCheckpointDuration métrica está aumentando ou aumentando gradualmente.

  • A lastCheckpointSize métrica está aumentando ou aumentando gradualmente.

Causas e soluções

As condições a seguir podem fazer com que seu aplicativo acumule dados de estado:

  • Seu aplicativo está retendo dados de estado por mais tempo do que o necessário.

  • Seu aplicativo usa consultas de janela com uma duração muito longa.

  • Você não definiu o TTL para os dados do seu estado. Para obter mais informações, consulte State Time-To-Live (TTL) na documentação do Apache Flink.

  • Você está executando um aplicativo que depende da versão 2.25.0 ou mais recente do Apache Beam. Você pode optar por não participar da nova versão da transformação de leitura ampliando sua BeamApplicationProperties com os principais experimentos e valoresuse_deprecated_read. Para obter mais informações, consulte a documentação do Apache Sqoop.

Às vezes, os aplicativos enfrentam um crescimento cada vez maior do tamanho do estado, o que não é sustentável a longo prazo (afinal, um aplicativo Flink é executado indefinidamente). Às vezes, isso pode ser atribuído a aplicativos que armazenam dados no estado e não envelhecem adequadamente as informações antigas. Mas às vezes há expectativas irracionais sobre o que o Flink pode oferecer. Os aplicativos podem usar agregações em grandes janelas de tempo que abrangem dias ou até semanas. A menos que AggregateFunctionssejam usados, o que permite agregações incrementais, o Flink precisa manter os eventos de toda a janela no estado.

Além disso, ao usar funções de processo para implementar operadores personalizados, o aplicativo precisa remover dados de um estado que não é mais necessário para a lógica de negócios. Nesse caso, o estado time-to-live pode ser usado para envelhecer automaticamente os dados com base no tempo de processamento. Managed Service for Apache Flink usa pontos de verificação incrementais e, portanto, o ttl de estado é baseado na compactação do RocksDB. Você só pode observar uma redução real no tamanho do estado (indicada pelo tamanho do ponto de verificação) após a ocorrência de uma operação de compactação. Em particular, para tamanhos de pontos de verificação abaixo de 200 MB, é improvável que você observe qualquer redução no tamanho dos pontos de verificação como resultado da expiração do estado. No entanto, os pontos de salvamento são baseados em uma cópia limpa do estado que não contém dados antigos, portanto, você pode acionar um instantâneo no Managed Service for Apache Flink para forçar a remoção do estado desatualizado.

Para fins de depuração, pode fazer sentido desativar os pontos de verificação incrementais para verificar mais rapidamente se o tamanho do ponto de verificação realmente diminui ou se estabiliza (e evitar o efeito da compactação no RockSBS). No entanto, isso requer um tíquete para a equipe de serviço.