Fluxo de trabalho usando o Cloud Scheduler

Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:

  • Dataproc
  • Compute Engine
  • Cloud Scheduler

Para gerar uma estimativa de custo baseada na projeção de uso, use a calculadora de preços.

Novos usuários do Google Cloud podem estar qualificados para um teste sem custo financeiro.

Antes de começar

Criar o projeto

  1. Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Instale a Google Cloud CLI.

  6. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  7. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Instale a Google Cloud CLI.

  12. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  13. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Criar uma função personalizada

  1. Abra a página **IAM e administrador → Papéis** no Google Cloud console.
    1. Clique em CRIAR PAPEL para abrir a página Criar papel.
    2. Preencha os campos "Título", "Descrição", "ID" e "Iniciar cenário". Sugestão: use "Criar modelo de fluxo de trabalho do Dataproc" como o título do papel.
    3. Clique em ADICIONAR PERMISSÕES,
      1. No formulário Adicionar permissões , clique em Filtrar e selecione "Permissão". Conclua o filtro para ler "Permissão: dataproc.workflowTemplates.instantiate".
      2. Clique na caixa de seleção à esquerda da permissão listada e clique em Adicionar.
    4. Na página "Criar papel", clique novamente em ADICIONAR PERMISSÕES para repetir as subetapas anteriores e adicionar a permissão "iam.serviceAccounts.actAs" à função personalizada. Agora a página Criar papel lista duas permissões.
    5. Clique em CRIAR na página Papel personalizado. O papel personalizado é listado na página Papéis.

Criar uma conta de serviço

  1. No Google Cloud console do, acesse a página Contas de serviço.

    Acessar Contas de serviço

  2. Selecione o projeto.

  3. Clique em Criar conta de serviço.

  4. No campo Nome da conta de serviço, insira o nome workflow-scheduler. O Google Cloud console dopreenche o campo ID da conta de serviço com base em nesse nome.

  5. Opcional: preencha o campo Descrição da conta de serviço.

  6. Clique em Criar e continuar.

  7. Clique no campo Selecionar um papel e escolha a função personalizada Criar modelo de fluxo de trabalho do Dataproc que você criou na etapa anterior.

  8. Clique em Continuar.

  9. No campo Papel de administradores da conta de serviço, insira o endereço de e-mail da sua Conta do Google.

  10. Clique em Concluído para terminar a criação da conta de serviço.

Criar um modelo de fluxo de trabalho

Copie e execute os comandos listados abaixo em uma janela de terminal local ou no Cloud Shell para criar e definir um modelo de fluxo de trabalho.

Observações:

  • Os comandos especificam a região "us-central1". É possível especificar uma região diferente ou excluir a sinalização --region, se tiver executado gcloud config set compute/region anteriormente para definir a propriedade da região.
  • A sequência "- " (espaço do traço) no comando add-job passa o argumento 1000 para o job do SparkPi, que especifica o número de amostras a serem usadas para estimar o valor de pi.

  1. Crie o modelo de fluxo de trabalho.
    gcloud dataproc workflow-templates create sparkpi \
        --region=us-central1
    
  2. Adicione o job spark ao modelo de fluxo de trabalho do sparkpi. O ID da etapa "compute" é obrigatório e identifica o job do SparkPi adicionado.
    gcloud dataproc workflow-templates add-job spark \
        --workflow-template=sparkpi \
        --step-id=compute \
        --class=org.apache.spark.examples.SparkPi \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        --region=us-central1 \
        -- 1000
    

  3. Use um cluster gerenciado, de nó único para executar o fluxo de trabalho. O Serviço Gerenciado para Apache Spark vai criar o cluster, executar o fluxo de trabalho nele e excluir o cluster quando o fluxo de trabalho for concluído.

    gcloud dataproc workflow-templates set-managed-cluster sparkpi \
        --cluster-name=sparkpi \
        --single-node \
        --region=us-central1
    

  4. Clique no nome sparkpi na página Fluxos de trabalho do Serviço Gerenciado para Apache Spark no console para abrir a página Detalhes do modelo de fluxo de trabalho. Google Cloud Confirme os atributos do modelo sparkpi.

Criar um job do Cloud Scheduler

  1. Abra a página Cloud Scheduler no Google Cloud console. Talvez seja necessário selecionar seu projeto para abrir a página. Clique em CRIAR JOB.

  2. Insira ou selecione as seguintes informações do job:

    1. Selecione uma região: "us-central" ou outra região em que você criou seu modelo de fluxo de trabalho.
    2. Nome: "Sparkpi"
    3. Frequência: "* * * * *" seleciona a cada minuto. "0 9 * * 1" seleciona todas as segundas-feiras às 9h. Consulte Como definir a programação de jobs para outros valores de unix-cron. Observação:você poderá clicar em um botão EXECUTAR AGORA nos Jobs do Cloud Scheduler no Google Cloud console para executar e testar o job, independentemente da frequência definida para ele.
    4. Fuso horário: selecione seu timezone. Digite "Estados Unidos" para listar os fusos horários dos EUA.
    5. Destino: "HTTP"
    6. URL: insira o URL a seguir depois de inserir your-project-id. Substitua "us-central1" se você criou o modelo de fluxo de trabalho em uma região diferente. Esse URL vai chamar a API workflowTemplates.instantiate do Serviço Gerenciado para Apache Spark para executar o modelo de fluxo de trabalho do Sparkpi.
      https://dataproc.googleapis.com/v1/projects/your-project-id/regions/us-central1/workflowTemplates/sparkpi:instantiate?alt=json
      
    7. Método HTTP:
      1. "POST"
      2. Corpo: "{}"
    8. Cabeçalho do Auth:
      1. "Adicionar token OAuth"
      2. Conta de serviço: insira o service account address da conta de serviço que você criou para este tutorial. Você pode usar o seguinte endereço de conta depois de inserir your-project-id:
        workflow-scheduler@your-project-id.iam.gserviceaccount.com
        
      3. Escopo: você pode ignorar este item.
    9. Clique em CRIAR

Testar o job do fluxo de trabalho programado

  1. Na linha do job sparkpi na página Jobs do Cloud Scheduler, clique em EXECUTAR AGORA.

  2. Aguarde alguns minutos e abra a página Fluxos de trabalho do Serviço Gerenciado para Apache Spark para verificar se o fluxo de trabalho sparkpi foi concluído.

  3. Depois que o fluxo de trabalho exclui o cluster gerenciado, os detalhes do job permanecem no Google Cloud console. Clique no job compute... listado na página Jobs do Serviço Gerenciado para Apache Spark para visualizar os detalhes do job do fluxo de trabalho.

Limpar

O fluxo de trabalho neste tutorial exclui o cluster gerenciado quando o fluxo de trabalho é concluído. Manter o fluxo de trabalho permite executá-lo novamente e não gera cobranças. Você pode excluir outros recursos criados neste tutorial para evitar custos recorrentes.

Excluir um projeto

  1. No Google Cloud console, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
  3. Na caixa de diálogo, digite o ID do projeto e clique em Desligar para excluir o projeto.

Excluir o modelo de fluxo de trabalho

gcloud dataproc workflow-templates delete sparkpi \
    --region=us-central1

Excluir o job do Cloud Scheduler

Abra a página Cloud Scheduler Jobs no Google Cloud console, marque a caixa à esquerda da função sparkpi e clique em EXCLUIR.

Excluir a conta de serviço

Abra a página IAM e administrador → Contas de serviço no Google Cloud console, selecione a caixa à esquerda da conta de serviço workflow-scheduler... e clique em EXCLUIR.

A seguir