Solução de problemas de sincronização de arquivos

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

O Airflow gerenciado sincroniza pastas específicas no bucket do ambiente com os componentes do Airflow executados nele. Consulte Dados armazenados no Cloud Storage para mais informações. Esta página se refere a problemas que podem interromper o processo de sincronização e como resolvê-los.

Problemas comuns

As seções a seguir descrevem sintomas e possíveis correções para alguns problemas comuns de sincronização de arquivos.

Como processar um grande número de DAGs e plug-ins nas pastas dags e plugins

O conteúdo das pastas /dags e /plugins é sincronizado do bucket do ambiente para sistemas de arquivos locais de workers e programadores do Airflow.

Quanto mais dados forem armazenados nessas pastas, mais tempo levará para realizar a sincronização. Para resolver essas situações:

  • Limite o número de arquivos nas pastas /dags e /plugins. Armazene apenas o mínimo de arquivos necessários.

  • Aumente o espaço em disco disponível para programadores e workers do Airflow.

  • Aumente a CPU e a memória dos programadores e workers do Airflow para que a operação de sincronização seja realizada mais rapidamente.

  • No caso de um número muito grande de DAGs, divida-os em lotes, compacte-os em arquivos ZIP e implante esses arquivos na pasta /dags. Essa abordagem acelera o processo de sincronização de DAGs. Os componentes do Airflow extraem arquivos ZIP antes de processar DAGs.

  • Gerar DAGs de maneira programática também pode ser um método para limitar o número de arquivos DAG armazenados na pasta /dags. Consulte a seção DAGs programáticos na página Solução de problemas de DAGs para evitar problemas com a programação e execução de DAGs gerados programaticamente.

Padrões que afetam a sincronização de DAGs e plug-ins com programadores, workers e servidores da Web

O Airflow gerenciado sincroniza o conteúdo das pastas /dags e /plugins com programadores e workers. Alguns objetos nas pastas /dags e /plugins podem impedir que essa sincronização funcione corretamente ou a deixe mais lenta.

  • A pasta /dags é sincronizada com programadores e workers.

    Essa pasta não é sincronizada com o servidor da Web.

  • A pasta /plugins é sincronizada com programadores, workers e servidores da Web.

Você pode encontrar os seguintes problemas:

  • Você fez upload de arquivos compactados por gzip que usam a transcodificação de compactação para /dags e /plugins pastas. Isso geralmente acontece se você usar a flag --gzip-local-all em um comando gcloud storage cp para fazer upload de dados para o bucket.

    Solução: exclua o objeto que usou a transcodificação de compactação e faça novo upload dele para o bucket.

  • Um dos objetos é chamado de .. Esse objeto não é sincronizado com programadores e workers e pode parar de sincronizar completamente.

    Solução: renomeie o objeto.

  • Uma pasta e um arquivo Python DAG têm os mesmos nomes, por exemplo, a.py. Nesse caso, o arquivo DAG não é sincronizado corretamente com os componentes do Airflow.

    Solução: remova a pasta que tem o mesmo nome do arquivo Python DAG.

  • Um dos objetos nas pastas /dags ou /plugins contém um símbolo / no final do nome do objeto. Esses objetos podem interferir no processo de sincronização porque o símbolo / significa que um objeto é uma pasta, não um arquivo.

    Solução: remova o símbolo / do nome do objeto problemático.

  • Não armazene arquivos desnecessários nas pastas /dags e /plugins.

    Às vezes, os DAGs e plug-ins implementados vêm com arquivos adicionais, como arquivos que armazenam testes para esses componentes. Esses arquivos são sincronizados com workers e programadores e afetam o tempo necessário para copiar esses arquivos para programadores, workers e servidores da Web.

    Solução: não armazene arquivos adicionais e desnecessários nas pastas /dags e /plugins.

Workers e processadores de DAG geram erros "É um diretório" ou "É um arquivo"

Esse problema ocorre porque os objetos podem ter um namespace sobreposto no Cloud Storage, enquanto os componentes do Airflow do ambiente usam sistemas de arquivos Linux convencionais. No Cloud Storage, é possível adicionar uma pasta e um objeto com o mesmo nome a um bucket. Quando o bucket é sincronizado com os componentes do Airflow do ambiente, um erro é gerado:

  • Se o objeto foi sincronizado primeiro, o conteúdo da pasta não será sincronizado e o erro Is a file será gerado.
  • Se a pasta foi sincronizada primeiro, o objeto não será sincronizado e o erro Is a directory será gerado.

Exemplo:

Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...'

Esses dois erros podem levar a falhas de tarefas devido a arquivos ausentes. Em alguns casos, o processo de sincronização pode ser interrompido e outros objetos no bucket do ambiente também não serão sincronizados.

Solução:

Para corrigir esse problema, verifique se não há namespaces sobrepostos no bucket do ambiente.

Por exemplo, se /dags/misc (um objeto) e /dags/misc/example_file.txt (outro objeto) estiverem em um bucket, renomeie o objeto misc ou a pasta em que example_file.txt está localizado para que não haja sobreposição.

A seguir