Resolução de problemas de sincronização de ficheiros

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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

Problemas comuns

As secções seguintes descrevem os sintomas e as potenciais correções para alguns problemas comuns de sincronização de ficheiros.

Processar um grande número de DAGs e plug-ins em pastas de DAGs e plug-ins

Os conteúdos das pastas /dags e /plugins são sincronizados do contentor do seu ambiente com os sistemas de ficheiros locais dos trabalhadores e dos programadores do Airflow.

Quanto mais dados forem armazenados nestas pastas, mais tempo demora a fazer a sincronização. Para resolver estas situações:

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

  • Aumentar o espaço em disco disponível para os programadores e os trabalhadores do Airflow.

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

  • No caso de um número muito elevado de DAGs, divida os DAGs em lotes, comprima-os em arquivos ZIP e implemente estes arquivos na pasta /dags. Esta abordagem acelera o processo de sincronização dos DAGs. Os componentes do Airflow extraem arquivos ZIP antes de processar DAGs.

  • A geração de DAGs de forma programática também pode ser um método para limitar o número de ficheiros DAG armazenados na pasta /dags. Consulte a secção DAGs programáticos na página de resolução de problemas de DAGs para evitar problemas com o agendamento e a execução de DAGs gerados de forma programática.

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

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

  • A pasta /dags é sincronizada com os programadores e as trabalhadoras.

    Esta pasta não está sincronizada com o servidor Web.

  • A pasta /plugins é sincronizada com os programadores, os trabalhadores e os servidores Web.

Pode deparar-se com os seguintes problemas:

  • Carregou ficheiros comprimidos com gzip que usam a [transcodificação de compressão][storage-transcoding] para as pastas /dags e /plugins. Normalmente, isto acontece se usar a flag --gzip-local-all num comando gcloud storage cp para carregar dados para o contentor.

    Solução: elimine o objeto que usou a transcodificação de compressão e carregue-o novamente para o contentor.

  • Um dos objetos tem o nome ".". Este objeto não é sincronizado com os programadores e os trabalhadores, e pode parar de ser sincronizado completamente.

    Solução: mude o nome do objeto.

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

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

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

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

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

    Por vezes, os DAGs e os plug-ins que implementa incluem ficheiros adicionais, como ficheiros que armazenam testes para estes componentes. Estes ficheiros são sincronizados com as trabalhadoras e os programadores, e afetam o tempo necessário para copiar estes ficheiros para os programadores, as trabalhadoras e os servidores Web.

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

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

Este problema ocorre porque os objetos podem ter um espaço de nomes sobreposto no Cloud Storage, enquanto os programadores e os trabalhadores usam sistemas de ficheiros Linux convencionais. Por exemplo, é possível adicionar uma pasta e um objeto com o mesmo nome ao contentor de um ambiente. Quando o contentor é sincronizado com os programadores e os trabalhadores do ambiente, este erro é gerado, o que pode levar a falhas de tarefas.

Para corrigir este problema, certifique-se de que não existem espaços de nomes sobrepostos no contentor do ambiente. Por exemplo, se /dags/misc (um ficheiro) e /dags/misc/example_file.txt (outro ficheiro) estiverem num contentor, o agendador gera um erro.

O que se segue?