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 para pastas
/dags
e/plugins
. Isso geralmente acontece se você usar a flag--gzip-local-all
em um comandogcloud 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 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
.
Os workers e os programadores geram erros "É um diretório" ou "É um arquivo"
Esse problema ocorre porque os objetos podem ter namespaces sobrepostos no Cloud Storage, enquanto os componentes do Airflow no seu 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/...'
Ambos os erros podem causar falhas nas 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
- Solução de problemas do processador de DAGs
- Como solucionar problemas do Airflow Scheduler
- Como resolver problemas de DAGs