Memecahkan masalah sinkronisasi file

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Cloud Composer menyinkronkan folder tertentu di bucket lingkungan Anda ke komponen Airflow yang berjalan di lingkungan Anda. Lihat Data yang disimpan di Cloud Storage untuk mengetahui informasi selengkapnya. Halaman ini membahas masalah yang dapat mengganggu proses sinkronisasi dan cara memecahkan masalah tersebut.

Masalah Umum

Bagian berikut menjelaskan gejala dan kemungkinan perbaikan untuk beberapa masalah sinkronisasi file umum.

Menangani sejumlah besar DAG dan plugin di folder DAG dan plugin

Isi folder /dags dan /plugins disinkronkan dari bucket lingkungan Anda ke sistem file lokal pekerja dan penjadwal Airflow.

Makin banyak data yang disimpan di folder ini, makin lama waktu yang diperlukan untuk melakukan sinkronisasi. Untuk mengatasi situasi tersebut:

  • Batasi jumlah file di folder /dags dan /plugins. Simpan hanya file minimum yang diperlukan.

  • Tingkatkan ruang disk yang tersedia untuk scheduler dan pekerja Airflow.

  • Tingkatkan CPU dan memori penjadwal dan pekerja Airflow, sehingga operasi sinkronisasi dilakukan lebih cepat.

  • Jika jumlah DAG sangat banyak, bagi DAG menjadi beberapa batch, kompresi ke dalam arsip zip, lalu deploy arsip ini ke folder /dags. Pendekatan ini mempercepat proses sinkronisasi DAG. Komponen Airflow mengekstrak arsip ZIP sebelum memproses DAG.

  • Membuat DAG secara terprogram juga dapat menjadi metode untuk membatasi jumlah file DAG yang disimpan di folder /dags. Lihat bagian DAG Terprogram di halaman Pemecahan Masalah DAG untuk menghindari masalah terkait penjadwalan dan eksekusi DAG yang dibuat secara terprogram.

Anti-pola yang memengaruhi sinkronisasi DAG dan plugin ke scheduler, worker, dan server web

Cloud Composer menyinkronkan konten folder /dags dan /plugins ke scheduler dan worker. Objek tertentu di folder /dags dan /plugins dapat mencegah sinkronisasi ini berfungsi dengan benar atau memperlambatnya.

  • Folder /dags disinkronkan ke penjadwal dan pekerja.

    Folder ini tidak disinkronkan ke server web.

  • Folder /plugins disinkronkan ke scheduler, worker, dan server web.

Anda mungkin mengalami masalah berikut:

  • Anda mengupload file yang dikompresi dengan gzip yang menggunakan [transcoding kompresi][transcoding penyimpanan] ke folder /dags dan /plugins. Hal ini biasanya terjadi jika Anda menggunakan tanda --gzip-local-all dalam perintah gcloud storage cp untuk mengupload data ke bucket.

    Solusi: Hapus objek yang menggunakan transkode kompresi dan upload ulang ke bucket.

  • Salah satu objek diberi nama '.'—objek tersebut tidak disinkronkan ke penjadwal dan pekerja, dan mungkin berhenti disinkronkan sama sekali.

    Solusi: Ganti nama objek.

  • Folder dan file Python DAG memiliki nama yang sama, misalnya a.py. Dalam hal ini, file DAG tidak disinkronkan dengan benar ke komponen Airflow.

    Solusi: Hapus folder yang memiliki nama yang sama dengan file Python DAG.

  • Salah satu objek di folder /dags atau /plugins berisi simbol / di akhir nama objek. Objek tersebut dapat mengganggu proses sinkronisasi karena simbol / berarti bahwa objek adalah folder, bukan file.

    Solusi: Hapus simbol / dari nama objek yang bermasalah.

  • Jangan menyimpan file yang tidak perlu di folder /dags dan /plugins.

    Terkadang DAG dan plugin yang Anda terapkan dilengkapi dengan file tambahan, seperti file yang menyimpan pengujian untuk komponen ini. File ini disinkronkan ke pekerja dan penjadwal serta memengaruhi waktu yang diperlukan untuk menyalin file ini ke penjadwal, pekerja, dan server web.

    Solusi: Jangan menyimpan file tambahan dan tidak perlu di folder /dags dan /plugins.

Error Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...' dihasilkan oleh scheduler dan worker

Masalah ini terjadi karena objek dapat memiliki namespace yang tumpang-tindih di Cloud Storage, sementara pada saat yang sama scheduler dan pekerja menggunakan sistem file Linux konvensional. Misalnya, Anda dapat menambahkan folder dan objek dengan nama yang sama ke bucket lingkungan. Saat bucket disinkronkan ke scheduler dan worker lingkungan, error ini akan muncul, yang dapat menyebabkan kegagalan tugas.

Untuk memperbaiki masalah ini, pastikan tidak ada namespace yang tumpang-tindih di bucket lingkungan. Misalnya, jika /dags/misc (satu file) dan /dags/misc/example_file.txt (file lain) berada dalam bucket, error akan dibuat oleh penjadwal.

Langkah berikutnya