Gerenciamento de tarefas do Apache Flink® no Azure HDInsight em clusters do AKS
Observação
Desativaremos o Microsoft Azure HDInsight no AKS em 31 de janeiro de 2025. Para evitar o encerramento abrupto das suas cargas de trabalho, você precisará migrá-las para o Microsoft Fabric ou para um produto equivalente do Azure antes de 31 de janeiro de 2025. Os clusters restantes em sua assinatura serão interrompidos e removidos do host.
Apenas o suporte básico estará disponível até a data de desativação.
Importante
Esse recurso está atualmente na visualização. Os Termos de uso complementares para versões prévias do Microsoft Azure incluem mais termos legais que se aplicam aos recursos do Azure que estão em versão beta, em versão prévia ou ainda não lançados em disponibilidade geral. Para obter informações sobre essa versão prévia específica, confira Informações sobre a versão prévia do Azure HDInsight no AKS. No caso de perguntas ou sugestões de recursos, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para ver mais atualizações sobre a Comunidade do Azure HDInsight.
O Azure HDInsight no AKS fornece um recurso para gerenciar e enviar trabalhos do Apache Flink® diretamente pelo portal do Microsoft Azure (interface amigável) e pelas APIs REST do ARM.
Esse recurso capacita os usuários a controlar e monitorar com eficiência seus trabalhos do Apache Flink sem requerer conhecimento profundo no nível do cluster.
Benefícios
Gerenciamento de trabalho simplificado: com a integração nativa do Apache Flink no portal do Azure, os usuários não exigem conhecimento mais amplo dos clusters do Flink para enviar, gerenciar e monitorar trabalhos.
API REST amigável: o HDInsight no AKS fornece APIs REST do ARM amigáveis para enviar e gerenciar trabalhos do Flink. Os usuários podem enviar trabalhos do Flink de qualquer serviço do Azure usando essas APIs REST.
Atualizações de trabalho sem esforço e gerenciamento de estado: a integração nativa com o portal do Azure fornece uma experiência sem inconvenientes para atualizar trabalhos e restaurá-los para o último estado salvo (ponto de salvamento). Essa funcionalidade garante a continuidade e a integridade dos dados em todo o ciclo de vida do trabalho.
Automatizar o trabalho do Flink usando o pipeline do Azure: usando o HDInsight no AKS, os usuários do Flink têm acesso à API REST do ARM amigável. Você pode integrar facilmente as operações de trabalho do Flink ao pipeline do Azure. Independentemente de você estar iniciando novos trabalhos, atualizando trabalhos em execução ou executando várias operações de trabalho, essa abordagem simplificada elimina as etapas manuais. Ela permite que você gerencie seu cluster do Flink com eficiência.
Pré-requisitos
Há alguns pré-requisitos antes de enviar e gerenciar trabalhos por meio do portal ou de APIs REST.
Crie um diretório na conta de armazenamento primário do cluster para carregar o jar do trabalho.
Se o usuário quiser usar pontos de salvamento, crie um diretório na conta de armazenamento para pontos de salvamento de trabalho.
Recursos principais e operações
Novo envio de trabalho: os usuários podem enviar facilmente um novo Flink, eliminando a necessidade de configurações complexas ou ferramentas externas.
Parar e iniciar trabalhos com pontos de salvamento: os usuários podem parar e iniciar normalmente os próprios trabalhos do Flink do estado anterior deles (ponto de salvamento). Os pontos de salvamento garantem que o progresso do trabalho seja preservado, permitindo retomadas sem transtornos.
Atualizações de trabalho: o usuário pode atualizar o trabalho em execução depois de atualizar o jar na conta de armazenamento. Essa atualização usa automaticamente o ponto de salvamento e inicia o trabalho com um novo jar.
Atualizações sem estado: a execução de uma nova reinicialização para um trabalho é simplificada por meio de atualizações sem estado. Esse recurso permite que os usuários iniciem uma reinicialização limpa usando o jar de trabalho atualizado.
Gerenciamento de pontos de salvamento: a qualquer momento, os usuários podem criar pontos de salvamento para os trabalhos deles em execução. Esses pontos de salvamento podem ser listados e usados para reiniciar o trabalho de um ponto de verificação específico, conforme necessário.
Cancelar: isso cancela o trabalho permanentemente.
Excluir: excluir o registro do histórico de trabalhos.
Opções para gerenciar trabalhos no HDInsight no AKS
O HDInsight no AKS fornece maneiras de gerenciar trabalhos do Flink.
Gerenciamento de trabalhos por meio do portal do Azure
Para executar o trabalho Flink do portal, acesse:
Portal --> pool de clusters do HDInsight no AKS --> cluster do Flink --> Configurações --> Trabalhos do Flink
Novo trabalho: para enviar um novo trabalho, carregue os jars de trabalho na conta de armazenamento e crie um diretório de ponto de salvamento. Conclua o modelo com as configurações necessárias e envie o trabalho.
Detalhes da propriedade:
Propriedade Descrição Valor Padrão Obrigatório Nome do trabalho Um nome exclusivo para o trabalho. Isso é exibido no portal. O nome do trabalho deve estar em letras pequenas. Sim Caminho jar O caminho de armazenamento para o jar do trabalho. Os usuários devem criar um diretório no armazenamento de cluster e carregar o jar do trabalho. Sim Classe de entrada Classe de entrada para o trabalho do qual a execução do trabalho é iniciada. Sim Args Argumento para o programa principal do trabalho. Separe todos os argumentos com espaços. Não DOP (grau de Paralelismo de Flink do trabalho. 2 Sim savepoint.directory Diretório de ponto de salvamento do trabalho. É recomendável que os usuários criem um novo diretório para o ponto de salvamento de trabalho na conta de armazenamento. abfs://<container>@<account>/<deployment-ID>/savepoints
Não Depois que o trabalho é iniciado, o status do trabalho no portal é EXECUTANDO.
Parar: Parar o trabalho não exigiu nenhum parâmetro, o usuário pode parar o trabalho selecionando a ação.
Depois que o trabalho é interrompido, o status do trabalho no portal é PARADO.
Iniciar: esta ação inicia o trabalho do ponto de salvamento. Para iniciar o trabalho, selecione o trabalho interrompido e inicie-o.
Preencha o modelo de fluxo com as opções necessárias e inicie-o. Os usuários precisam selecionar o ponto de salvamento do qual o usuário deseja iniciar o trabalho. Por padrão, ele usa o último ponto de salvamento bem-sucedido.
Detalhes da propriedade:
Propriedade Descrição Valor Padrão Obrigatório Args Argumento para o programa principal do trabalho. Todos os argumentos devem ser separados por espaço. Não Último ponto de salvamento Última tomada de ponto de salvamento bem-sucedida antes de parar o trabalho. Isso será usado por padrão se nenhum ponto de salvamento estiver selecionado. Não editável Nome do ponto de salvamento Os usuários podem listar os pontos de salvamento disponíveis para o trabalho e selecionar um para iniciar o trabalho. Não Depois que o trabalho é iniciado, o status do trabalho no portal é EXECUTANDO.
Atualização: a atualização ajuda a reiniciar trabalhos com código de trabalho atualizado. Os usuários precisam atualizar o jar de trabalho mais recente no local de armazenamento e atualizar o trabalho por meio do portal. Essa atualização interrompe o trabalho com o ponto de salvamento e inicia-o novamente com o jar mais recente.
Modelo para atualização do trabalho.
Depois que o trabalho é iniciado, o status do trabalho no portal é "EXECUTANDO".
Atualização sem estado: esse trabalho é como uma atualização, mas envolve uma nova reinicialização do trabalho com o código mais recente.
Modelo para atualização do trabalho.
Detalhes da propriedade:
Propriedade Descrição Valor Padrão Obrigatório Args Argumento para o programa principal do trabalho. Separe todos os argumentos com espaço. Não Depois que o trabalho é atualizado, o status do trabalho no portal é EXECUTANDO.
Ponto de salvamento: use o ponto de salvamento para o trabalho Flink.
O ponto de salvamento é um processo demorado e leva algum tempo. Você pode ver o status da ação do trabalho como em andamento.
Cancelar: este trabalho ajuda o usuário a encerrar o trabalho.
Excluir: excluir os dados do trabalho do portal.
Exibir detalhes do trabalho: para exibir os detalhes do trabalho, o usuário pode clicar no nome do trabalho, ele fornece os detalhes sobre o trabalho e o resultado da última ação.
Para qualquer ação com falha, esse json de trabalho fornece exceções detalhadas e motivos para falha.
Gerenciamento de trabalho usando a API REST
O Azure HDInsight no AKS dá suporte a APIs REST do ARM amigáveis para enviar trabalhos e gerenciar trabalhos. Usando essa API REST do Flink, você pode integrar perfeitamente as operações de trabalho do Flink ao Azure Pipeline. Independentemente de você estar iniciando novos trabalhos, atualizando trabalhos em execução ou executando várias operações de trabalho, essa abordagem simplificada elimina as etapas manuais e permite que você gerencie seu cluster do Flink com eficiência.
Formato da URL base para a API REST
Consulte a URL a seguir para a API REST. Os usuários precisam substituir a assinatura, o grupo de recursos, o pool de clusters, o nome do cluster e a versão da API do HDInsight no AKS antes de usá-la.
https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runjob?api-version={{API_VERSION}}
Usando essa API REST, os usuários podem iniciar novos trabalhos, interromper trabalhos, iniciar trabalhos, criar pontos de salvamento, cancelar trabalhos e excluir trabalhos. A versão atual da API é a 2023-06-01-preview.
Autenticação de API REST
Para autenticar usuários da API Rest do ARM do Flink, é necessário obter o token de portador ou o token de acesso para o recurso do ARM. Para autenticar a API REST do Azure ARM (Azure Resource Manager) usando uma entidade de serviço, siga estas etapas gerais:
Crie uma entidade de serviço.
az ad sp create-for-rbac --name <your-SP-name>
Conceda permissão de proprietário ao SP para o cluster
flink
.Faça logon com a entidade de serviço.
az login --service-principal -u <client_id> -p <client_secret> --tenant <tenant_id>
Obtenha um token de acesso.
$token = az account get-access-token --resource=https://management.azure.com/ | ConvertFrom-Json
$tok = $token.accesstoken
Os usuários podem usar o token na URL mostrada.
$data = Invoke-RestMethod -Uri $restUri -Method GET -Headers @{ Authorization = "Bearer $tok" }
Autenticação usando Identidade Gerenciada: os usuários podem utilizar recursos que dão suporte à Identidade Gerenciada para fazer chamadas à API REST do trabalho. Para obter mais detalhes, consulte a documentação de Identidade Gerenciada.
Lista de APIs e parâmetros
Novo trabalho: API REST para enviar um novo trabalho ao Flink.
Opção Valor método POSTAR URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Cabeçalho Authorization = "Bearer $token" Corpo da solicitação:
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "NEW", "jobJarDirectory": "<JOB_JAR_STORAGE_PATH>", "jarName": "<JOB_JAR_NAME>", "entryClass": "<JOB_ENTRY_CLASS>", “args”: ”<JOB_JVM_ARGUMENT>” "flinkConfiguration": { "parallelism": "<JOB_PARALLELISM>", "savepoint.directory": "<JOB_SAVEPOINT_DIRECTORY_STORAGE_PATH>" } } }
Detalhes da propriedade para o corpo JSON:
Propriedade Descrição Valor Padrão Obrigatório jobType Tipo de trabalho. Deve ser definido como “FlinkJob” Sim jobName Um nome exclusivo para o trabalho. Isso é exibido no portal. O nome do trabalho deve estar em letras pequenas. Sim ação Indica o tipo de operação no trabalho. Deve sempre ser definido como “NEW” para o lançamento de novos trabalhos. Sim jobJarDirectory O caminho de armazenamento para o diretório do jar do trabalho. Os usuários devem criar um diretório no armazenamento de cluster e carregar o jar do trabalho. Sim jarName O nome do jar do trabalho. Sim entryClass Classe de entrada para o trabalho do qual a execução do trabalho é iniciada. Sim args Argumento para o programa principal do trabalho. Separe os argumentos com espaço. Não DOP (grau de Paralelismo de Flink do trabalho. 2 Sim savepoint.directory Diretório de ponto de salvamento do trabalho. É recomendável que os usuários criem um novo diretório para o ponto de salvamento de trabalho na conta de armazenamento. abfs://<container>@<account>/<deployment-ID>/savepoints
Não Exemplo:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Interromper trabalho: API REST para interromper o trabalho em execução atualmente.
Opção Valor método POSTAR URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Cabeçalho Authorization = "Bearer $token" Corpo da solicitação
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "STOP" } }
Detalhes da propriedade para o corpo JSON:
Propriedade Descrição Valor Padrão Obrigatório jobType Tipo de trabalho. Deve ser definido como “FlinkJob” Sim jobName Nome do trabalho, que é usado para iniciar o trabalho Sim ação Deve ser definido como “STOP” Sim Exemplo:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Iniciar trabalho: a API REST para iniciar o trabalho PARADO.
Opção Valor método POSTAR URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Cabeçalho Authorization = "Bearer $token" Corpo da solicitação
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "START", "savePointName": "<SAVEPOINT_NAME>" } }
Detalhes da propriedade para o corpo JSON:
Propriedade Descrição Valor Padrão Obrigatório jobType Tipo de trabalho. Deve ser definido como “FlinkJob” Sim jobName Nome do trabalho usado para iniciar o trabalho. Sim ação Deve ser definido como “START” Sim savePointName Nome do ponto de salvamento para iniciar o trabalho. É uma propriedade opcional. Por padrão, a operação de início usa o último ponto de salvamento bem-sucedido. Não Exemplo:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Atualizar trabalho: API REST para atualizar o trabalho em execução atualmente.
Opção Valor método POSTAR URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Cabeçalho Authorization = "Bearer $token" Corpo da solicitação
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "UPDATE", “args” : “<JOB_JVM_ARGUMENT>”, "savePointName": "<SAVEPOINT_NAME>" } }
Detalhes da propriedade para o corpo JSON:
Propriedade Descrição Valor Padrão Obrigatório jobType Tipo de trabalho. Deve ser definido como “FlinkJob” Sim jobName Nome do trabalho usado para iniciar o trabalho. Sim ação Deve sempre ser definido como “UPDATE” para o lançamento de novos trabalhos. Sim args Argumentos da JVM do trabalho Não savePointName Nome do ponto de salvamento para iniciar o trabalho. É uma propriedade opcional. Por padrão, a operação de início usará o último ponto de salvamento bem-sucedido. Não Exemplo:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Trabalho de atualização sem estado: API REST para atualização sem estado.
Opção Valor método POSTAR URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Cabeçalho Authorization = "Bearer $token" Corpo da solicitação
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "STATELESS_UPDATE", “args” : “<JOB_JVM_ARGUMENT>” } }
Detalhes da propriedade para o corpo JSON:
Propriedade Descrição Valor Padrão Obrigatório jobType Tipo de trabalho. Deve ser definido como “FlinkJob” Sim jobName Nome do trabalho usado para iniciar o trabalho. Sim ação Deve sempre ser definido como “STATELESS_UPDATE” para o lançamento de novos trabalhos. Sim args Argumentos da JVM do trabalho Não Exemplo:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Ponto de salvamento: APIs REST para disparar o ponto de salvamento para o trabalho.
Opção Valor método POSTAR URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Cabeçalho Authorization = "Bearer $token" Corpo da solicitação
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "SAVEPOINT" } }
Detalhes da propriedade para o corpo JSON:
Propriedade Descrição Valor Padrão Obrigatório jobType Tipo de trabalho. Deve ser definido como “FlinkJob” Sim jobName Nome do trabalho usado para iniciar o trabalho. Sim ação Deve sempre ser definido como “SAVEPOINT” para o lançamento de novos trabalhos. Sim Exemplo:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Listar pontos de salvamento: API REST para listar todos os pontos de salvamento do diretório de pontos de salvamento.
Opção Valor método POSTAR URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Cabeçalho Authorization = "Bearer $token" Corpo da solicitação
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "LIST_SAVEPOINT" } }
Detalhes da propriedade para o corpo JSON:
Propriedade Descrição Valor Padrão Obrigatório jobType Tipo de trabalho. Deve ser definido como “FlinkJob” Sim jobName Nome do trabalho, que é usado para iniciar o trabalho Sim ação Deve ser definido como “LIST_SAVEPOINT” Sim Exemplo:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Cancelar: API REST para cancelar o trabalho.
Opção Valor método POSTAR URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Cabeçalho Authorization = "Bearer $token" Corpo da solicitação
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "CANCEL" } }
Detalhes da propriedade para o corpo JSON:
Propriedade Descrição Valor Padrão Obrigatório jobType Tipo de trabalho. Deve ser definido como FlinkJob
Sim jobName Nome do trabalho usado para iniciar o trabalho. Sim ação Deve ser definido como CANCEL. Sim Exemplo:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Excluir: API REST para excluir o trabalho.
Opção Valor método POSTAR URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Cabeçalho Authorization = "Bearer $token" Corpo da solicitação
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "DELETE" } }
Detalhes da propriedade para o corpo JSON:
Propriedade Descrição Valor Padrão Obrigatório jobType Tipo de trabalho. Deve ser definido como “FlinkJob” Sim jobName Nome do trabalho usado para iniciar o trabalho. Sim ação Deve ser definido como DELETE. Sim Exemplo:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Listar trabalhos: API REST para listar todos os trabalhos e o status da ação atual.
Opção Valor Method GET URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/jobs?api-version={{API_VERSION}}
Cabeçalho Authorization = "Bearer $token" Saída:
{ "value": [ { "id": "/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/jobs/job1", "properties": { "jobType": "FlinkJob", "jobName": "job1", "jobJarDirectory": "<JOB_JAR_STORAGE_PATH>", "jarName": "<JOB_JAR_NAME>", "action": "STOP", "entryClass": "<JOB_ENTRY_CLASS>", "flinkConfiguration": { "parallelism": "2", "savepoint.directory": "<JOB_SAVEPOINT_DIRECTORY_STORAGE_PATH>s" }, "jobId": "20e9e907eb360b1c69510507f88cdb7b", "status": "STOPPED", "jobOutput": "Savepoint completed. Path: <JOB_SAVEPOINT_DIRECTORY_STORAGE_PATH>s/savepoint-20e9e9-8a48c6b905e5", "actionResult": "SUCCESS", "lastSavePoint": "<JOB_SAVEPOINT_DIRECTORY_STORAGE_PATH>s/savepoint-20e9e9-8a48c6b905e5" } } ] }
Observação
Quando qualquer ação estiver em andamento, actionResult indicará isso com o valor 'IN_PROGRESS'. Em caso de conclusão bem-sucedida, esse valor mostrará 'SUCCESS' e, em caso de falha, 'FAILED'.
Referência
- Agendamento de trabalhos do Apache Flink
- Apache, Apache Flink, Flink e nomes de projetos de código aberto associados são marcas registradas da Apache Software Foundation (ASF).