Share via


Gerenciamento de tarefas do Apache Flink® no Azure HDInsight em clusters do AKS

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

    A captura de tela mostra a estrutura do diretório.

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

A captura de tela mostra como executar o trabalho '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.

    A captura de tela mostra como criar um novo 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.

    A captura de tela mostra como o usuário pode parar o trabalho.

    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.

    A captura de tela mostra como o usuário inicia o trabalho.

    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.

    A captura de tela mostra como o modelo de fluxo de preenchimento.

    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.

    A captura de tela mostra como reiniciar trabalhos com código de trabalho atualizado.

    Modelo para atualização do trabalho.

    Captura de tela mostrando o modelo para atualizar o 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.

    A captura de tela mostra a nova reinicialização do trabalho com o código mais recente.

    Modelo para atualização do trabalho.

    Captura de tela mostrando o modelo para atualizar o trabalho sem estado.

    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.

    A captura de tela mostra 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.

    Captura de tela mostrando o status da ação do trabalho.

  • Cancelar: este trabalho ajuda o usuário a encerrar o trabalho.

    A captura de tela mostra como o usuário pode encerrar o trabalho.

  • Excluir: excluir os dados do trabalho do portal.

    A captura de tela mostra como o usuário pode excluir dados de 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.

    A captura de tela mostra como exibir os detalhes do trabalho.

    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: API 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