Implemente o escalonamento de aplicativos no Managed Service para Apache Flink - 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á.

Implemente o escalonamento de aplicativos no Managed Service para Apache Flink

Você pode configurar a execução paralela de tarefas e a alocação de recursos para que o Amazon Managed Service for Apache Flink implemente a escalabilidade. Para obter informações sobre como o Apache Flink agenda instâncias paralelas de tarefas, consulte Execução paralela na documentação do Apache Flink.

Configure o paralelismo de aplicativos e ParallelismPer KPU

Você configura a execução paralela das tarefas do aplicativo Managed Service for Apache Flink (como ler de uma fonte ou executar um operador) usando as seguintes ParallelismConfiguration propriedades:

  • Parallelism: use esta propriedade para definir o paralelismo padrão do aplicativo Apache Flink. Todos os operadores, fontes e coletores são executados com esse paralelismo, a menos que sejam substituídos no código do aplicativo. O valor padrão é 1 e o máximo padrão é 256.

  • ParallelismPerKPU— Use essa propriedade para definir o número de tarefas paralelas que podem ser agendadas por Kinesis Processing Unit (KPU) do seu aplicativo. O padrão é 1 e o máximo é 8. Para aplicativos que têm operações de bloqueio (por exemplo, E/S), um valor maior de ParallelismPerKPU leva à utilização total dos KPU recursos.

nota

O limite para Parallelism é igual às ParallelismPerKPU vezes o limite para KPUs (que tem um padrão de 64). O KPUs limite pode ser aumentado solicitando um aumento de limite. Para obter instruções sobre como solicitar um aumento de limite, consulte “Para solicitar um aumento de limite” em Service Quotas.

Para obter informações sobre como definir o paralelismo de tarefas para um operador específico, consulte Configurando o paralelismo: Operador na documentação do Apache Flink.

Aloque unidades de processamento do Kinesis

O serviço gerenciado para Apache Flink provisiona a capacidade como. KPUs Um único KPU fornece 1 v CPU e 4 GB de memória. Para cada KPU alocação, também são fornecidos 50 GB de armazenamento de aplicativos em execução.

O Managed Service for Apache Flink calcula o KPUs que é necessário para executar seu aplicativo usando as ParallelismPerKPU propriedades Parallelism e, da seguinte forma:

Allocated KPUs for the application = Parallelism/ParallelismPerKPU

O Managed Service for Apache Flink fornece rapidamente aos seus aplicativos recursos em resposta a picos no throughput ou na atividade de processamento. Ele remove recursos do seu aplicativo gradualmente após o pico de atividade ter passado. Para desativar a alocação automática de recursos, defina o valor AutoScalingEnabled como false, conforme descrito posteriormente em Atualize o paralelismo do seu aplicativo.

O limite padrão KPUs para seu aplicativo é 64. Para obter instruções sobre como solicitar um aumento desse limite, consulte “Para solicitar um aumento de limite” em Service Quotas.

nota

Um adicional KPU é cobrado para fins de orquestração. Para obter mais informações, consulte Preço do Managed Service for Apache Flink.

Atualize o paralelismo do seu aplicativo

Esta seção contém exemplos de solicitações de API ações que definem o paralelismo de um aplicativo. Para obter mais exemplos e instruções sobre como usar blocos de solicitação com API ações, consulteCódigo de exemplo do Managed Service for Apache Flink API.

O exemplo a seguir de solicitação para a ação CreateApplication define o paralelismo quando você está criando um aplicativo:

{ "ApplicationName": "string", "RuntimeEnvironment":"FLINK-1_18", "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::mybucket", "FileKey":"myflink.jar", "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345" } }, "CodeContentType":"ZIPFILE" }, "FlinkApplicationConfiguration": { "ParallelismConfiguration": { "AutoScalingEnabled": "true", "ConfigurationType": "CUSTOM", "Parallelism": 4, "ParallelismPerKPU": 4 } } } }

O exemplo de solicitação a seguir para a ação UpdateApplication define o paralelismo para um aplicativo existente:

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "true", "ConfigurationTypeUpdate": "CUSTOM", "ParallelismPerKPUUpdate": 4, "ParallelismUpdate": 4 } } } }

O exemplo de solicitação a seguir para a ação UpdateApplication desativa o paralelismo para um aplicativo existente:

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "false" } } } }

maxParallelism considerações

O paralelismo máximo que uma tarefa do Flink pode escalar é limitado pelo mínimo maxParallelism em todos os operadores da tarefa. Por exemplo, se você tem um trabalho simples com apenas uma fonte e um coletor, e a fonte tem 16 e o coletor 8, o aplicativo não pode escalar além do paralelismo de 8. maxParallelism

Para saber como o padrão maxParallelism de um operador é calculado e como substituir o padrão, consulte Definindo o paralelismo máximo na documentação do Apache Flink.

Como regra básica, lembre-se de que, se você não definir maxParallelism para nenhum operador e iniciar seu aplicativo com um maxParallelism paralelismo menor ou igual a 128, todos os operadores terão 128.

nota

O paralelismo máximo do trabalho é o limite superior do paralelismo para escalar seu aplicativo mantendo o estado.

Se você modificar maxParallelism um aplicativo existente, o aplicativo não poderá ser reiniciado a partir de um instantâneo anterior tirado com o antigomaxParallelism. Você só pode reiniciar o aplicativo sem um snapshot.

Se você planeja escalar seu aplicativo para um paralelismo maior que 128, você deve definir explicitamente o maxParallelism em seu aplicativo.

  • A lógica de escalonamento automático evitará escalar uma tarefa do Flink para um paralelismo que excederá o paralelismo máximo da tarefa.

  • Se você usar um escalonamento automático personalizado ou escalabilidade programada, configure-os para que não excedam o paralelismo máximo do trabalho.

  • Se você dimensionar manualmente seu aplicativo além do paralelismo máximo, o aplicativo falhará ao iniciar.