Migrar ambientes para o Airflow gerenciado (geração 2) (do Airflow 1) usando snapshots

Airflow gerenciado (Geração 3) | Airflow gerenciado (Geração 2) | Airflow gerenciado (Geração 1 legada)

Nesta página, explicamos como transferir DAGs, dados e configuração dos ambientes atuais do Airflow gerenciado (Geração 1 legada), Airflow 1 para o Airflow gerenciado (Geração 2), Airflow 2.

Este guia de migração usa o recurso de snapshots.

Outros guias de migração

De Para Método Guia
Airflow gerenciado (Geração 3), Airflow 2 Airflow gerenciado (Geração 3), Airflow 3 Transferência manual lado a lado Guia de migração manual
Airflow gerenciado (Geração 2) Airflow gerenciado (Geração 3) Lado a lado, usando o script de migração Guia de migração de script
Airflow gerenciado (Geração 2) Airflow gerenciado (Geração 3) Lado a lado, usando snapshots Guia de migração de snapshots
Airflow gerenciado (Geração 1 legada), Airflow 2 Airflow gerenciado (Geração 3) Lado a lado, usando snapshots Guia de migração de snapshots
Airflow gerenciado (Geração 1 legada), Airflow 2 Airflow gerenciado (Geração 2) Lado a lado, usando snapshots Guia de migração de snapshots
Airflow gerenciado (Geração 1 legada), Airflow 2 Airflow gerenciado (Geração 2) Transferência manual lado a lado Guia de migração manual
Airflow gerenciado (Geração 1 legada), Airflow 1 Airflow gerenciado (Geração 2), Airflow 2 Lado a lado, usando snapshots Este guia
Airflow gerenciado (Geração 1 legada), Airflow 1 Airflow gerenciado (Geração 2), Airflow 2 Transferência manual lado a lado Guia de migração manual
Airflow gerenciado (Geração 1 legada), Airflow 1 Airflow gerenciado (Geração 1 legada), Airflow 2 Transferência manual lado a lado Guia de migração manual

Antes de começar

  • Há suporte para snapshots no Airflow gerenciado (Geração 2) versão 2.0.9 e mais recentes. O Airflow gerenciado (Geração 1 legada) oferece suporte ao salvamento de snapshots de ambiente na versão 1.18.5.

  • O Airflow gerenciado oferece suporte à migração lado a lado do Airflow gerenciado (Geração 1 legada) para o Airflow gerenciado (Geração 2). Não é possível fazer upgrade do Airflow gerenciado (Geração 1 legada) para o Airflow gerenciado (Geração 2) no local.

  • Confira a lista de diferenças entre o Airflow gerenciado (Geração 1 legada) e o Airflow gerenciado (Geração 2).

  • O tamanho máximo do banco de dados do Airflow que oferece suporte a snapshots é de 20 GB. Se o banco de dados do ambiente ocupar mais de 20 GB, reduza o tamanho do banco de dados do Airflow.

  • O número total de objetos nas pastas /dags, /plugins e /data no bucket do ambiente precisa ser menor que 100.000 para criar snapshots.

  • Se você usar o mecanismo XCom para transferir arquivos, certifique-se de que você o use de acordo com as diretrizes do Airflow. A transferência de arquivos grandes ou de um grande número de arquivos usando o XCom afeta o desempenho do banco de dados do Airflow e pode levar a falhas ao carregar snapshots ou fazer upgrade do ambiente. Considere usar alternativas, como o Cloud Storage, para transferir grandes volumes de dados.

  • Como o Airflow gerenciado (Geração 2) usa o Airflow 2, a migração inclui a troca dos seus DAGs e da configuração do ambiente para o Airflow 2. Consulte o guia de migração do Airflow 1 para o Airflow 2 para informações sobre as mudanças interruptivas entre o Airflow 1 e o Airflow 2 no Airflow gerenciado.

  • Neste guia, você combina a migração com o Airflow 2 e a migração para o Airflow gerenciado (Geração 2) em um procedimento. Dessa forma, você não precisa migrar para um ambiente do Airflow gerenciado (Geração 1 legada) com o Airflow 2 antes de migrar para o Airflow gerenciado (Geração 2).

Etapa 1: fazer upgrade para o Airflow 1.10.15

Se o ambiente usar uma versão anterior ao Airflow 1.10.15, faça upgrade do ambiente para uma versão do Airflow gerenciado que use o Airflow 1.10.15 e ofereça suporte a snapshots.

Etapa 2: verificar a compatibilidade com o Airflow 2

Para verificar possíveis conflitos com o Airflow 2, consulte o guia Como fazer upgrade para o Airflow 2.0 e versões mais recentes, na seção sobre como fazer upgrade dos DAGs.

Um problema comum que pode ser encontrado está relacionado a caminhos de importação incompatíveis. Para saber mais sobre como resolver esse problema de compatibilidade, no guia Como fazer upgrade para o Airflow 2.0 e versões mais recentes, consulte a seção sobre provedores de backport.

Etapa 3: verificar se os DAGs estão prontos para o Airflow 2

Antes de transferir DAGs para o ambiente do Airflow gerenciado (Geração 2), verifique se:

  1. Os DAGs são executados com êxito e não há problemas de compatibilidade restantes.

  2. Seus DAGs usam instruções de importação corretas.

    Por exemplo, a nova instrução de importação para BigQueryCreateDataTransferOperator pode ser assim:

    from airflow.providers.google.cloud.operators.bigquery_dts \
        import BigQueryCreateDataTransferOperator
    
  3. Os DAGs estão atualizados para o Airflow 2. Essa mudança é compatível com o Airflow 1.10.14 e versões mais recentes.

Etapa 4: pausar DAGs no ambiente do Airflow gerenciado (Geração 1 legada)

Para evitar execuções simultâneas de DAGs, pause todos os DAGs no ambiente do Airflow gerenciado (Geração 1 legada) antes de salvar o snapshot.

Você pode usar uma das seguintes opções:

  • Em a interface da Web do Airflow, acesse DAGs e pause todos os DAGs manualmente.

  • Use o script composer_dags para pausar todos os DAGs:

    python3 composer_dags.py --environment COMPOSER_1_ENV \
      --project PROJECT_ID \
      --location COMPOSER_1_LOCATION \
      --operation pause
    

    Substitua:

    • COMPOSER_1_ENV pelo nome do ambiente do Airflow gerenciado (Geração 1 legada).
    • PROJECT_ID com o ID do projeto.
    • COMPOSER_1_LOCATION pela região em que o ambiente está localizado.

Etapa 5: salvar o snapshot do ambiente do Airflow gerenciado (Geração 1 legada)

Console

Crie um snapshot do ambiente:

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

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do ambiente do Airflow gerenciado (Geração 1 legada). A página Detalhes do ambiente é aberta.

  3. Clique em Criar snapshot.

  4. Na caixa de diálogo Criar snapshot, clique em Enviar. Neste guia, você salva o snapshot no bucket do ambiente do Airflow gerenciado (Geração 1 legada), mas é possível selecionar um local diferente, se quiser.

  5. Aguarde até que o Airflow gerenciado crie o snapshot.

gcloud

  1. Receba o URI do bucket do ambiente do Airflow gerenciado (Geração 1 legada):

    1. Execute este comando:

      gcloud composer environments describe COMPOSER_1_ENV \
          --location COMPOSER_1_LOCATION \
           --format="value(config.dagGcsPrefix)"
      

      Substitua:

      • COMPOSER_1_ENV pelo nome do ambiente do Airflow gerenciado (Geração 1 legada).
      • COMPOSER_1_LOCATION pela região em que o ambiente está localizado.
    2. Na saída, remova a pasta /dags. O resultado é o URI do bucket do ambiente do Airflow gerenciado (Geração 1 legada).

      Por exemplo, altere gs://us-central1-example-916807e1-bucket/dags para gs://us-central1-example-916807e1-bucket.

  2. Crie um snapshot do ambiente do Airflow gerenciado (Geração 1 legada):

    gcloud composer environments snapshots save \
      COMPOSER_1_ENV \
      --location COMPOSER_1_LOCATION \
      --snapshot-location "COMPOSER_1_SNAPSHOTS_FOLDER"
    

    Substitua:

    • COMPOSER_1_ENV pelo nome do ambiente do Airflow gerenciado (Geração 1 legada).
    • COMPOSER_1_LOCATION pela região em que o ambiente do Airflow gerenciado (Geração 1 legada) está localizado.
    • COMPOSER_1_SNAPSHOTS_FOLDER pelo URI do bucket do ambiente do Airflow gerenciado (Geração 1 legada). Neste guia, você salva o snapshot no bucket do ambiente do Airflow gerenciado (Geração 1 legada), mas é possível selecionar um local diferente, se quiser. Se você especificar um local personalizado, as contas de serviço dos dois ambientes precisarão ter permissões de leitura e gravação para o local especificado.

Etapa 6: criar um ambiente do Airflow gerenciado (Geração 2)

Crie um ambiente do Airflow gerenciado (Geração 2). É possível começar com uma predefinição de ambiente que corresponda às demandas de recursos esperadas e, depois, escalonar e otimizar o ambiente ainda mais.

Não é necessário especificar substituições de configuração e variáveis de ambiente, porque elas serão substituídas mais tarde ao carregar o snapshot do ambiente do Airflow gerenciado (Geração 1 legada).

Algumas opções de configuração do Airflow 1 usam um nome e uma seção diferentes no Airflow 2. Para saber mais, consulte Alterações de configuração.

Etapa 7: carregar o snapshot no ambiente do Airflow gerenciado (Geração 2)

Console

Para carregar o snapshot no ambiente do Airflow gerenciado (Geração 2):

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

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do ambiente do Airflow gerenciado (Geração 2). A página Detalhes do ambiente é aberta.

  3. Clique em Carregar snapshot.

  4. Na caixa de diálogo Carregar snapshot, clique em Procurar.

  5. Selecione a pasta com o snapshot. Se você usar o local padrão para este guia, essa pasta estará localizada no bucket do ambiente do Airflow gerenciado (Geração 1 legada) na pasta /snapshots, e o nome dela será o carimbo de data/hora da operação de salvamento do snapshot. Por exemplo, us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00.

  6. Clique em Carregar e aguarde até que o Airflow gerenciado carregue o snapshot.

gcloud

Carregue o snapshot do ambiente do Airflow gerenciado (Geração 1 legada) para o ambiente do Airflow gerenciado (Geração 2):

gcloud composer environments snapshots load \
  COMPOSER_2_ENV \
  --location COMPOSER_2_LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

Substitua:

  • COMPOSER_2_ENV pelo nome do ambiente do Airflow gerenciado (Geração 2).
  • COMPOSER_2_LOCATION pela região em que o ambiente do Airflow gerenciado (Geração 2) está localizado.
  • SNAPSHOT_PATH pelo URI do bucket do ambiente do Airflow gerenciado (Geração 1 legada), seguido pelo caminho para o snapshot. Por exemplo, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

Etapa 8: retomar DAGs no ambiente do Airflow gerenciado (Geração 2)

Você pode usar uma das seguintes opções:

  • Na interface da Web do Airflow, acesse DAGs e retome todos os DAGs manualmente, um por um.

  • Use o script composer_dags para retomar todos os DAGs:

    python3 composer_dags.py --environment COMPOSER_2_ENV \
      --project PROJECT_ID \
      --location COMPOSER_2_LOCATION \
      --operation unpause
    

    Substitua:

    • COMPOSER_2_ENV pelo nome do ambiente do Airflow gerenciado (Geração 2).
    • PROJECT_ID com o ID do projeto.
    • COMPOSER_2_LOCATION pela região em que o ambiente está localizado.
  • (Versões 2.9.1 e mais recentes do Airflow) Se houver erros de cota ao retomar um grande número de DAGs, use os seguintes comandos da CLI do Airflow para retomar todos os DAGs de uma só vez:

    gcloud composer environments run COMPOSER_2_ENV dags unpause \
      --project PROJECT_ID \
      --location COMPOSER_2_LOCATION \
      -- -y --treat-dag-id-as-regex ".*"
    
  • (Versões anteriores à 2.9.1 do Airflow) Se houver erros de cota ao retomar um grande número de DAGs, é possível retomar DAGs usando a API REST do Airflow. Consulte também Como testar a API na documentação do Airflow.

Etapa 9: verificar erros de DAG

  1. Na interface da Web do Airflow, acesse DAGs e verifique se há erros de sintaxe de DAG relatados.

  2. Verifique se as execuções de DAG estão programadas para o horário correto.

  3. Aguarde até que as execuções do DAG aconteçam no ambiente do Airflow gerenciado (Geração 2) e verifique se foram bem-sucedidas. Se uma execução do DAG foi bem-sucedida, não a retome no ambiente do Airflow gerenciado (Geração 1 legada). Se você fizer isso, uma execução do DAG para o mesmo horário e data ocorrerá no ambiente do Airflow gerenciado (Geração 1 legada).

  4. Se um DAG específico for executado, tente resolver problemas do DAG até que ele seja executado no Airflow gerenciado (Geração 2).

Etapa 10: monitorar o ambiente do Airflow gerenciado (Geração 2)

Depois de transferir todos os DAGs e a configuração para o ambiente do Airflow gerenciado (Geração 2), monitore-os em busca de possíveis problemas, execuções com falha do DAG e integridade geral do ambiente.

Se o ambiente do Airflow gerenciado (Geração 2) for executado sem problemas por um período suficiente, considere excluir o ambiente do Airflow gerenciado (Geração 1 legada).

A seguir