Amazon Managed Service para Apache Flink 2.2 - Managed Service 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á.

Amazon Managed Service para Apache Flink 2.2

O Amazon Managed Service para Apache Flink agora oferece suporte ao Apache Flink versão 2.2. Essa é a primeira grande atualização de versão do serviço. Esta página aborda os recursos introduzidos no Flink 2.2, juntamente com considerações importantes para a atualização do Flink 1.x.

nota

O Flink 2.2 introduz mudanças significativas que exigem um planejamento cuidadoso. Veja a lista completa de alterações e suspensões importantes abaixo e Guia de compatibilidade estadual para atualizações do Flink 2.2 antes da atualização da versão 1.x.

O Amazon Managed Service para Apache Flink 2.2 introduz mudanças comportamentais que podem interromper os aplicativos existentes após a atualização. Analise-as cuidadosamente junto com as alterações da API Flink na próxima seção.

Manipulação de configuração programática

  • O MSF Flink 2.2 agora relata uma exceção quando os clientes tentam modificar configurações não suportadas pelo MSF ou similares. env.getConfig().set() APIs Consulte Propriedades de configuração programática do Flink.

  • Os clientes ainda podem solicitar a alteração de determinadas configurações por meio de tickets de suporte (consulte Configurações modificáveis)

Remoção de métricas

  • A fullRestarts métrica foi removida no Flink 2.2. Em vez disso, use a numRestarts métrica.

  • A bytesRequestedPerFetch métrica do conector KDS foi removida na versão 6.0.0 do AWS conector Flink (somente a versão do conector compatível com o Flink 2.2).

  • As downtime métricas uptime e estão marcadas como obsoletas no Flink 2.2 e serão removidas em breve. uptimeSubstitua pela nova métricarunningTime. downtimeSubstitua por um ou mais de restartingTimecancellingTime, failingTime e.

  • Consulte a página Métricas e Dimensões para ver a lista completa das métricas compatíveis.

Chamadas IMDS não credenciais bloqueadas

  • Esses endpoints permitidos são usados pelos AWS SDKs DefaultCredentialsProvider(/latest/meta-data/iam/security-credentials/) e DefaultAwsRegionProviderChain(/latest/dynamic/instance-identity/document) para configurar automaticamente as credenciais e a região do seu aplicativo.

  • Os aplicativos que usam funções do AWS SDK que dependem de chamadas IMDS não credenciais (comoEC2MetadataUtils.getInstanceId(), EC2MetadataUtils.getInstanceType()EC2MetadataUtils.getLocalHostName(), ouEC2MetadataUtils.getAvailabilityZone()) receberão erros HTTP 4xx ao tentarem essas chamadas.

  • Se seu aplicativo usa IMDS, por exemplo, metadados ou outras informações fora dos caminhos permitidos, refatore seu código para usar variáveis de ambiente ou configuração do aplicativo.

Sistema de arquivos raiz somente para leitura

  • Para melhorar a segurança, qualquer dependência fora da /tmp qual esteja o diretório de trabalho padrão do flink resultará em:. java.io.FileNotFoundException: /{path}/{filename} (Read-only file system)

  • As dependências do sistema de arquivos podem se originar diretamente do seu código ou indiretamente das bibliotecas incluídas nas suas dependências. Substitua as dependências diretas do sistema de arquivos para o seu código. /tmp/ Para dependências indiretas de sistemas de arquivos de bibliotecas, use substituições de configuração de biblioteca para redirecionar as operações do sistema de arquivos para o. /tmp/

Abaixo está um resumo das principais alterações e suspensões introduzidas no Managed Service for Apache Flink 2.2. Consulte as notas de lançamento do Apache Flink 2.0 para ver as notas de lançamento completas do Apache Flink 2.0 que introduzem essas mudanças importantes.

API do Flink e remoções de linguagem

DataSet API removida

  • A DataSet API antiga para processamento em lote foi completamente removida no Flink 2.0+. Todo o processamento em lote agora deve usar a DataStream API unificada.

  • Os aplicativos que usam a DataSet API devem ser migrados para a DataStream API antes da atualização. Consulte o guia de migração do Apache Flink para conversão DataSet DataStream

Java 11 e Python 3.8 removidos

  • O suporte ao Java 11 foi completamente removido; o Java 17 é o tempo de execução padrão e recomendado.

  • O suporte ao Python 3.8 foi removido; o Python 3.12 agora é o padrão.

Classes de conectores legadas removidas

  • O legado SourceFunction e as SinkFunction interfaces foram substituídos pelas novas fontes unificadas (FLIP-27) e Sink (FLIP-143) APIs, que fornecem melhor suporte à bounded/unbounded dualidade, melhor coordenação de pontos de verificação e um modelo de programação mais limpo.

  • Para Kinesis Data StreamsKinesisStreamsSource, KinesisStreamsSink use e de. flink-connector-aws-kinesis-streams:6.0.0-2.0

API Scala removida

  • A API Flink Scala foi removida. A API Java do Flink agora é a única API compatível com aplicativos baseados em JVM.

  • Se seu aplicativo for escrito em Scala, você ainda poderá usar a API Java do Flink a partir do código Scala — a principal mudança é que os wrappers específicos do Scala e as conversões implícitas não estão mais disponíveis. Consulte Atualização de aplicativos e versões do Flink para obter detalhes sobre como atualizar seus aplicativos Scala.

Considerações sobre compatibilidade de estados

  • O serializador Kryo atualizado da versão 2.24 para 5.6 pode causar problemas de compatibilidade de estado.

  • POJOs com coleções (HashMap,ArrayList,HashSet) pode ter problemas de compatibilidade de estado.

  • A serialização do Avro e do Protobuf não foi afetada.

  • Consulte Guia de compatibilidade estadual para atualizações do Flink 2.2 para obter uma avaliação detalhada para fazer a triagem do nível de risco do seu aplicativo.

Suporte de tempo de execução e idioma

Recurso Description Documentação
Tempo de execução do Java 17 O Java 17 agora é o tempo de execução padrão e recomendado; o suporte ao Java 11 foi removido. Compatibilidade com Java
Suporte ao Python 3.12 O Python 3.12 agora é suportado; o suporte ao Python 3.8 foi removido. PyFlink Documentação

Gestão e desempenho do estado

Recurso Description Documentação
RocksDB 8.10.0 I/O Desempenho aprimorado com a atualização do RocksDB. Backends estaduais
Melhorias na serialização Serializadores dedicados para Map, List, Set; Kryo atualizado de 2.24 para 5.6. Tipo de serialização

Recursos da API SQL e de tabela

Recurso Description Documentação
Tipo de dados VARIANT Suporte nativo para dados semiestruturados (JSON) sem análise repetida de strings. Tipos de dados
Delta Join Reduz os requisitos de estado para junções de streaming mantendo somente a versão mais recente de cada chave; requer infraestrutura gerenciada pelo cliente (por exemplo, Apache Fluss). Junta-se
StreamingMultiJoinOperator Executa uniões multidirecionais como um único operador, eliminando a materialização intermediária. FLIP-516
ProcessTableFunction (PTF) Permite lógica com estado e orientada por eventos diretamente no SQL com estado e temporizadores por chave. Funções definidas pelo usuário
Função ML_PREDICT Chame modelos de ML registrados em streaming/batch tabelas diretamente do SQL. Exige que o cliente agrupe uma ModelProvider implementação (por exemplo,flink-model-openai). ModelProvider as bibliotecas não são enviadas pelo Managed Service para Apache Flink. Previsão de ML
Modelo: DDL Defina modelos de ML como objetos de catálogo de primeira classe usando instruções CREATE MODEL. CREATE Declarações
Pesquisa vetorial A API Flink SQL suporta a pesquisa em bancos de dados vetoriais. Nenhuma VectorSearchTableSource implementação de código aberto está disponível no momento; os clientes devem fornecer sua própria implementação. SQL no Flink

DataStream Recursos da API

Recurso Description Documentação
API de origem do FLIP-27 Nova interface de origem unificada substituindo a antiga SourceFunction. Sources (Origens)
API de coletor FLIP-143 Nova interface de coletor unificada substituindo a antiga SinkFunction. Pias
Python assíncrono DataStream I/O Operações sem bloqueio na API DataStream Python usando. AsyncFunction E/S assíncrona

Ao atualizar para o Flink 2.2, você também precisa atualizar as dependências do conector para versões compatíveis com o tempo de execução do Flink 2.2. Os conectores Flink são lançados independentemente do tempo de execução do Flink, e nem todos os conectores têm uma versão compatível com o Flink 2.2 ainda. A tabela a seguir resume a disponibilidade dos conectores comumente usados no Amazon Managed Service para Apache Flink:

Disponibilidade de conectores para Flink 2.2
Conector Versão Flink 1.20 Versão Flink 2.0+ Observações
Apache Kafka flink-connector-kafka 3.4.0-1.20 flink-connector-kafka 4.0.0-2.0 Recomendado para o Flink 2.2
Kinesis Data Streams (fonte) flink-connector-kinesis 5.0.0-1.20 flink-connector-aws-kinesis-streams 6.0.0-2.0 Recomendado para o Flink 2.2
Kinesis Data Streams (coletor) flink-connector-aws-kinesis-streams 5.1.0-1.20 flink-connector-aws-kinesis-streams 6.0.0-2.0 Recomendado para o Flink 2.2
Amazon Data Firehose flink-connector-aws-kinesis-mangueira de incêndio 5.1.0-1.20 flink-connector-aws-kinesis-mangueira de incêndio 6.0.0-2.0 Compatível com Flink 2.0
Amazon DynamoDB flink-connector-dynamodb 5.1.0-1.20 flink-connector-dynamodb 6.0.0-2.0 Compatível com Flink 2.0
Amazon SQS flink-connector-sqs 5.1.0-1.20 flink-connector-sqs 6.0.0-2.0 Compatível com Flink 2.0
FileSystem (S3, HDFS) Empacotado com o Flink Empacotado com o Flink Integrado à distribuição do Flink — sempre disponível
JDBC flink-connector-jdbc 3.3.0-1.20 Ainda não foi lançado para 2.x Nenhuma versão compatível com o Flink 2.x disponível
OpenSearch flink-connector-opensearch 1.2.0-1.19 Ainda não foi lançado para 2.x Nenhuma versão compatível com o Flink 2.x disponível
Elasticsearch Somente conector antigo Ainda não foi lançado para 2.x Considere migrar para o conector OpenSearch
Amazon Managed Service for Prometheus flink-connector-prometheus 1.0.0-1.20 Ainda não foi lançado para 2.x Nenhuma versão compatível com o Flink 2.x disponível
  • Se seu aplicativo depende de um conector que ainda não tem uma versão 2.x do Flink, você tem duas opções: esperar que o conector lance uma versão compatível ou avaliar se você pode substituí-lo por uma alternativa (por exemplo, usando o catálogo JDBC ou um coletor personalizado).

  • Ao atualizar as versões do conector, preste atenção às mudanças no nome do artefato — alguns conectores foram renomeados entre as versões principais (por exemplo, o conector Firehose mudou de flink-connector-aws-kinesis-firehose para flink-connector-aws-firehose em algumas versões intermediárias).

  • Sempre verifique a documentação do conector Amazon Managed Service para Apache Flink para ver os nomes e versões exatos dos artefatos compatíveis com seu tempo de execução de destino.

Os seguintes recursos não são compatíveis com o Amazon Managed Service para Apache Flink 2.2:

  • Tabelas materializadas: instantâneos de tabelas consultáveis e mantidos continuamente.

  • Alterações de telemetria personalizadas: relatórios métricos personalizados e configurações de telemetria.

  • ForSt State Backend: armazenamento de estado desagregado (experimental em código aberto).

  • Java 21: suporte experimental em código aberto, não suportado no Managed Service for Apache Flink.

Amazon Managed Service para Apache Flink Studio

O Flink 2.2 no Amazon Managed Service para Apache Flink não é compatível com aplicativos Studio. Para obter mais informações, consulte Criação de um notebook do Studio.

Conector Kinesis EFO

  • Os aplicativos que usam o caminho KinesisStreamsSource with EFO (Enhanced Fan-Out/ SubscribeToShard) introduzido nos conectores v5.0.0 e v6.0.0 podem falhar quando os streams do Kinesis são refragmentados. Esse é um problema conhecido na comunidade. Para obter mais informações, consulte FLINK-37648.

  • Os aplicativos que usam o caminho KinesisStreamsSource com EFO (Enhanced Fan-Out/ SubscribeToShard) introduzido nos conectores v5.0.0 e v6.0.0 KinesisStreamsSink podem enfrentar impasses se o aplicativo Flink estiver sob contrapressão, resultando na interrupção completa do processamento de dados em um ou mais. TaskManagers Uma operação de parada forçada e uma operação de início do aplicativo são necessárias para recuperar o aplicativo. Esse é um subcaso do problema conhecido na comunidade. Para obter mais informações, consulte FLINK-34071.

O Amazon Managed Service para Apache Flink oferece suporte a atualizações de versão no local que preservam a configuração, os logs, as métricas, as tags do seu aplicativo e, se o estado e os binários forem compatíveis, o estado do seu aplicativo. Para step-by-step obter instruções, consulteAtualizando para o Flink 2.2: guia completo.

Para obter orientação sobre como avaliar o risco de compatibilidade de estados e lidar com estados incompatíveis durante atualizações, consulte. Guia de compatibilidade estadual para atualizações do Flink 2.2

Em caso de dúvidas ou problemas, consulte Solucionar problemas do Managed Service for Apache Flink ou entre em contato com o AWS Support.