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 para
/dags
e/plugins
pastas. Normalmente, isto acontece se usar a flag--gzip-local-all
num comandogcloud 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 chama-se
.
. Este objeto não é sincronizado com os programadores e os trabalhadores, e pode deixar de ser sincronizado.Solução: mude o nome do objeto.
Uma pasta e um ficheiro Python DAG têm o mesmo nome, 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
.
Os trabalhadores e os programadores geram erros "É um diretório" ou "É um ficheiro"
Este problema ocorre porque os objetos podem ter um espaço de nomes sobreposto no Cloud Storage, enquanto os componentes do Airflow do seu ambiente usam sistemas de ficheiros Linux convencionais. No Cloud Storage, é possível adicionar uma pasta e um objeto com o mesmo nome a um contentor. Quando o contentor é sincronizado com os componentes do Airflow do ambiente, é gerado um erro:
- Se o objeto tiver sido sincronizado primeiro, o conteúdo da pasta não é sincronizado e é gerado o erro
Is a file
. - Se a pasta tiver sido sincronizada primeiro, o objeto não é sincronizado e é gerado um erro
Is a directory
.
Exemplo:
Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...'
Ambos os erros podem levar a falhas de tarefas devido a ficheiros em falta. Em alguns casos, o processo de sincronização pode ser interrompido e outros objetos no contentor do ambiente também não são sincronizados.
Solução:
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 objeto) e /dags/misc/example_file.txt
(outro objeto) estiverem num contentor, mude o nome do objeto misc
ou da pasta
onde example_file.txt
se encontra, para que não haja sobreposição.
O que se segue?
- Resolução de problemas do processador DAG
- Resolução de problemas do agendador do Airflow
- Resolução de problemas de DAGs