Anteriormente, o Amazon Managed Service for Apache Flink (Amazon MSF) era conhecido como Amazon Kinesis Data Analytics for Apache Flink.
Implemente a escalabilidade de aplicativos no Managed Service for 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 mais informações sobre como o Apache Flink programa instâncias paralelas de tarefas, consulte Execução paralela
Tópicos
Configure o paralelismo e o ParallelismPerKPU
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 é1e o máximo padrão é256. -
ParallelismPerKPU: use esta propriedade para definir o número de tarefas em paralelo que podem ser programadas por unidade de processamento do Kinesis (Kinesis Processing Unit, KPU) do seu aplicativo. O padrão é1e o máximo é8. Para aplicativos que têm operações de bloqueio (por exemplo, E/S), um valor maior queParallelismPerKPUleva à utilização total dos recursos da KPU.
nota
O limite para Parallelism é igual a ParallelismPerKPU vezes o limite para KPUs (que tem um padrão de 64). O limite de KPUs pode ser aumentado ao solicitar 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 Configurar o paralelismo: operador
Aloque unidades de processamento do Kinesis
O Managed Service for Apache Flink provisiona a capacidade como KPUs. Uma única KPU oferece 1 vCPU e 4 GB de memória. Para cada KPU alocada, também são fornecidos 50 GB de armazenamento de aplicativos em execução.
O Managed Service for Apache Flink calcula as KPUs necessárias para executar seu aplicativo usando as propriedades Parallelism e ParallelismPerKPU, 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 para 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
Uma KPU adicional é cobrada 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 ações de API que definem o paralelismo de um aplicativo. Para ver mais exemplos e instruções sobre como usar blocos de solicitação com ações de API, consulte Exemplo de código de API para o Managed Service for Apache Flink.
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:::amzn-s3-demo-bucket", "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" } } } }
Considerações sobre o MaxParallelism
O paralelismo máximo que uma tarefa do Flink pode escalar é limitado pelo maxParallelism mínimo em todos os operadores da tarefa. Por exemplo, se você tiver um trabalho simples com apenas uma origem e um coletor, e a origem tiver um maxParallelism de 16 e coletor tiver 8, o aplicativo não poderá escalar além do paralelismo de 8.
Para saber como o maxParallelism padrão de um operador é calculado e como substituir o padrão, consulte Como definir o paralelismo máximo
Como regra básica, lembre-se de que, se você não definir maxParallelism para nenhum operador e iniciar seu aplicativo com um paralelismo menor ou igual a 128, todos os operadores terão um maxParallelism de 128.
nota
O paralelismo máximo do trabalho é o limite superior do paralelismo para escalar seu aplicativo mantendo o estado.
Se você modificar o maxParallelism de um aplicativo existente, o aplicativo não poderá ser reiniciado a partir de um snapshot anterior tirado com o maxParallelism antigo. Você só pode reiniciar o aplicativo sem um snapshot.
Se planeja escalar seu aplicativo para um paralelismo maior que 128, você deve definir explicitamente o maxParallelism em seu aplicativo.
A lógica de escalabilidade automática evitará a escalar uma tarefa do Flink para um paralelismo que excederá o paralelismo máximo da tarefa.
Se você usar uma escalabilidade automática personalizada ou escalabilidade programada, configure-as para que não excedam o paralelismo máximo do trabalho.
Se você escalar manualmente seu aplicativo além do paralelismo máximo, o aplicativo falhará ao iniciar.