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

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

O Cloud Composer sincroniza pastas específicas no bucket do ambiente com os componentes do Airflow que são 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 lidar com 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 com os sistemas de arquivos locais dos workers e programadores do Airflow.

Quanto mais dados forem armazenados nessas pastas, mais tempo levará para realizar a sincronização. Para lidar com 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.

  • Se houver 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 de solução de problemas de DAGs para evitar problemas com o agendamento e a execução de DAGs gerados de maneira programática.

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

O Cloud Composer sincroniza o conteúdo das pastas /dags e /plugins com os programadores e workers. Alguns objetos nas pastas /dags e /plugins podem impedir que essa sincronização funcione corretamente ou deixá-la mais lenta.

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

    Essa pasta não está 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 com gzip que usam [transcodificação de compactação][storage-transcoding] para pastas /dags e /plugins. 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 compressão e faça o upload dele novamente para o bucket.

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

    Solução: renomeie o objeto.

  • Uma pasta e um arquivo Python de DAG têm o mesmo nome, 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 do DAG.

  • Um dos objetos nas pastas /dags ou /plugins contém um símbolo / no final do nome. 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 extras, 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.

O erro "Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...'" é gerado por programadores e workers.

Esse problema ocorre porque os objetos podem ter namespaces sobrepostos no Cloud Storage, enquanto os programadores e trabalhadores usam sistemas de arquivos Linux convencionais. Por exemplo, é possível adicionar uma pasta e um objeto com o mesmo nome ao bucket de um ambiente. Quando o bucket é sincronizado com os programadores e workers do ambiente, esse erro é gerado, o que pode levar a falhas de tarefas.

Para corrigir esse problema, verifique se não há namespaces sobrepostos no bucket do ambiente. Por exemplo, se /dags/misc (um arquivo) e /dags/misc/example_file.txt (outro arquivo) estiverem em um bucket, o programador vai gerar um erro.

A seguir