Usar arquivos YAML com fluxos de trabalho

Você pode definir um modelo de fluxo de trabalho em um arquivo YAML e instanciar o modelo para executar o fluxo de trabalho. Também é possível importar e exportar um arquivo YAML de um modelo de fluxo de trabalho para criar e atualizar um recurso de modelo de fluxo de trabalho do Dataproc.

Executar um fluxo de trabalho usando um arquivo YAML

Para executar um fluxo de trabalho sem primeiro criar um recurso de modelo de fluxo de trabalho, use o comando gcloud dataproc workflow-templates instantiate-from-file.

  1. Defina seu modelo de fluxo de trabalho em um arquivo YAML. O arquivo YAML deve incluir todos os campos WorkflowTemplate obrigatórios, exceto o campo id, e também deve excluir o campo version e todos os campos apenas de saída. No exemplo de fluxo de trabalho a seguir, a lista prerequisiteStepIds na etapa terasort garante que a etapa terasort só começará após a teragen concluída com êxito.
    jobs:
    - hadoopJob:
        args:
        - teragen
        - '1000'
        - hdfs:///gen/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: teragen
    - hadoopJob:
        args:
        - terasort
        - hdfs:///gen/
        - hdfs:///sort/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: terasort
      prerequisiteStepIds:
        - teragen
    placement:
      managedCluster:
        clusterName: my-managed-cluster
        config:
          gceClusterConfig:
            zoneUri: us-central1-a
    
  2. Executar o fluxo de trabalho:
    gcloud dataproc workflow-templates instantiate-from-file \
        --file=TEMPLATE_YAML \
        --region=REGION
    

Instanciar um fluxo de trabalho usando um arquivo YAML com a veiculação de zona automática do Dataproc

  1. Defina seu modelo de fluxo de trabalho em um arquivo YAML. Este arquivo YAML é o mesmo que o arquivo YAML anterior, exceto o zoneUri é definido como a string vazia ('') para permitir que o Dataproc Posicionamento automático de zona para selecionar a zona do cluster.
    jobs:
    - hadoopJob:
        args:
        - teragen
        - '1000'
        - hdfs:///gen/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: teragen
    - hadoopJob:
        args:
        - terasort
        - hdfs:///gen/
        - hdfs:///sort/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: terasort
      prerequisiteStepIds:
        - teragen
    placement:
      managedCluster:
        clusterName: my-managed-cluster
        config:
          gceClusterConfig:
            zoneUri: ''
    
  2. Executar o fluxo de trabalho. Ao usar a Colocação automática, transmita uma região para o comando gcloud.
    gcloud dataproc workflow-templates instantiate-from-file \
        --file=TEMPLATE_YAML \
        --region=REGION
    

Importar e exportar um arquivo YAML do modelo de fluxo de trabalho

É possível importar e exportar arquivos YAML do modelo de fluxo de trabalho. Normalmente, um modelo de fluxo de trabalho é primeiro exportado como um arquivo YAML, que é editado e, em seguida, importado para atualizar o modelo.

  1. Exporte o modelo de fluxo de trabalho para um arquivo YAML. Durante a operação de exportação, os campos id e version e todos os campos somente saída são filtrados da saída e não aparecem no arquivo YAML exportado.

    gcloud dataproc workflow-templates export TEMPLATE_ID or TEMPLATE_NAME \
        --destination=TEMPLATE_YAML \
        --region=REGION
    
    É possível transmitir o WorkflowTemplate id ou o recurso de modelo totalmente qualificado name ("projects/PROJECT_ID/regions/REGION/workflowTemplates/TEMPLATE_ID") para o comando.

  2. Edite o arquivo YAML localmente. Observe que os campos id, version e somente saída, que foram filtrados do arquivo YAML quando o modelo foi exportado, não são permitidos no arquivo YAML importado.

  3. Importe o arquivo YAML do modelo de fluxo de trabalho atualizado:

    gcloud dataproc workflow-templates import TEMPLATE_ID or TEMPLATE_NAME \
        --source=TEMPLATE_YAML \
        --region=REGION
    
    É possível transmitir o WorkflowTemplate id ou o recurso de modelo totalmente qualificado name ("projects/PROJECT_ID/regions/region/workflowTemplates/TEMPLATE_ID") para o comando. O recurso de modelo com o mesmo nome será substituído, e o número de versão será incrementado. Se não existirem dois modelos com o mesmo nome, um modelo será criado.