Pemecahan masalah: DAG, Operator, Koneksi, dan masalah lainnya di Apache Airflow v1 - Amazon Managed Workflows for Apache Airflow (MWAA)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pemecahan masalah: DAG, Operator, Koneksi, dan masalah lainnya di Apache Airflow v1

Topik pada halaman ini berisi resolusi untuk Apache Airflow v1.10.12 dependensi Python, plugin kustom, DAG, Operator, Koneksi, tugas, dan masalah server Web yang mungkin Anda temui di Amazon Managed Workflow untuk lingkungan Apache Airflow.

Memperbarui requirements.txt

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat memperbaruirequirements.txt.

Menambahkanapache-airflow-providers-amazon menyebabkan lingkungan saya gagal

apache-airflow-providers-xyzhanya kompatibel dengan Apache Airflow v2. apache-airflow-backport-providers-xyzkompatibel dengan Apache Airflow 1.10.12.

DAG yang rusak

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat menjalankan DAG.

Saya menerima kesalahan 'Broken DAG' saat menggunakan operator Amazon DynamoDB

Kami menyarankan sebagai berikut:

  1. Uji DAG, plugin kustom, dan dependensi Python Anda secara lokal menggunakan aws-mwaa-local-runneronGitHub.

  2. Tambahkan paket berikut ke paket Andarequirements.txt.

    boto
  3. Jelajahi cara untuk menentukan dependensi Python dalamrequirements.txt file, lihatMengelola dependensi Python di requirements.txt.

Saya menerima kesalahan 'Broken DAG: Tidak ada modul bernama psycopg2'

Kami menyarankan sebagai berikut:

  1. Uji DAG, plugin kustom, dan dependensi Python Anda secara lokal menggunakan aws-mwaa-local-runneronGitHub.

  2. Tambahkan yang berikut ke versi Apache Airflow Anda.requirements.txt Misalnya:

    apache-airflow[postgres]==1.10.12
  3. Jelajahi cara untuk menentukan dependensi Python dalamrequirements.txt file, lihatMengelola dependensi Python di requirements.txt.

Saya menerima kesalahan 'Broken DAG' saat menggunakan operator Slack

Kami menyarankan sebagai berikut:

  1. Uji DAG, plugin kustom, dan dependensi Python Anda secara lokal menggunakan aws-mwaa-local-runneronGitHub.

  2. Tambahkan paket berikut ke Andarequirements.txt dan tentukan versi Apache Airflow Anda. Misalnya:

    apache-airflow[slack]==1.10.12
  3. Jelajahi cara untuk menentukan dependensi Python dalamrequirements.txt file, lihatMengelola dependensi Python di requirements.txt.

Saya menerima berbagai kesalahan saat menginstal Google/GCP/BigQuery

Amazon MWAA menggunakan Amazon Linux yang memerlukan versi tertentu dari Cython dan perpustakaan kriptografi. Kami menyarankan sebagai berikut:

  1. Uji DAG, plugin kustom, dan dependensi Python Anda secara lokal menggunakan aws-mwaa-local-runneronGitHub.

  2. Tambahkan paket berikut ke paket Andarequirements.txt.

    grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow-backport-providers-amazon[google]
  3. Jika Anda tidak menggunakan penyedia backport, Anda dapat menggunakan:

    grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow[gcp]==1.10.12
  4. Jelajahi cara untuk menentukan dependensi Python dalamrequirements.txt file, lihatMengelola dependensi Python di requirements.txt.

Saya menerima kesalahan 'Broken DAG: Tidak ada modul bernama Cython'

Amazon MWAA menggunakan Amazon Linux yang memerlukan versi tertentu dari Cython. Kami menyarankan sebagai berikut:

  1. Uji DAG, plugin kustom, dan dependensi Python Anda secara lokal menggunakan aws-mwaa-local-runneronGitHub.

  2. Tambahkan paket berikut ke paket Andarequirements.txt.

    cython==0.29.21
  3. Perpustakaan Cython memiliki berbagai versi ketergantungan pip yang diperlukan. Misalnya, menggunakanawswrangler==2.4.0 requirespyarrow<3.1.0,>=2.0.0, jadi pip3 mencoba menginstalpyarrow==3.0.0 yang menyebabkan kesalahan Broken DAG. Sebaiknya tentukan eksplisitas versi tertua yang dapat diterima. Misalnya, jika Anda menentukan nilai minimumpyarrow==2.0.0 sebelumawswrangler==2.4.0 maka kesalahan hilang, danrequirements.txt menginstal dengan benar. Persyaratan akhir akan terlihat seperti ini:

    cython==0.29.21 pyarrow==2.0.0 awswrangler==2.4.0
  4. Jelajahi cara untuk menentukan dependensi Python dalamrequirements.txt file, lihatMengelola dependensi Python di requirements.txt.

Operator

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat menggunakan Operator.

Saya menerima kesalahan menggunakanBigQuery operator

Amazon MWAA tidak mendukung operator dengan ekstensi UI. Kami menyarankan sebagai berikut:

  1. Uji DAG, plugin kustom, dan dependensi Python Anda secara lokal menggunakan aws-mwaa-local-runneronGitHub.

  2. Solusinya adalah mengganti ekstensi dengan menambahkan baris di DAG untuk disetel<operator name>.operator_extra_links = None setelah mengimpor operator masalah. Misalnya:

    from airflow.contrib.operators.bigquery_operator import BigQueryOperator BigQueryOperator.operator_extra_links = None
  3. Anda dapat menggunakan pendekatan ini untuk semua DAG dengan menambahkan di atas ke plugin. Sebagai contoh, lihat Membuat plugin khusus untuk Apache AirflowPythonVirtualenvOperator.

Koneksi

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat menggunakan sambungan Apache Airflow, atau menggunakanAWS database lain.

Saya tidak dapat terhubung ke Snowflake

Kami menyarankan sebagai berikut:

  1. Uji DAG, plugin kustom, dan dependensi Python Anda secara lokal menggunakan aws-mwaa-local-runneronGitHub.

  2. Tambahkan entri berikut ke requirements.txt untuk lingkungan Anda.

    asn1crypto == 0.24.0 snowflake-connector-python == 1.7.2
  3. Tambahkan impor berikut ke DAG Anda:

    from airflow.contrib.hooks.snowflake_hook import SnowflakeHook from airflow.contrib.operators.snowflake_operator import SnowflakeOperator

Pastikan objek koneksi Apache Airflow mencakup pasangan kunci-nilai berikut:

  1. Kontak Id: snowflake_conn

  2. Tipe Conn: Kepingan Salju

  3. Tuan rumah:<my account>. <my region if not us-west-2>.snowflakecomputing.com

  4. Skema: <my schema>

  5. Masuk: <my user name>

  6. Kata Sandi: ********

  7. Pelabuhan: <port, if any>

  8. Ekstra:

    { "account": "<my account>", "warehouse": "<my warehouse>", "database": "<my database>", "region": "<my region if not using us-west-2 otherwise omit this line>" }

Misalnya:

>>> import json >>> from airflow.models.connection import Connection >>> myconn = Connection( ... conn_id='snowflake_conn', ... conn_type='Snowflake', ... host='YOUR_ACCOUNT.YOUR_REGION.snowflakecomputing.com', ... schema='YOUR_SCHEMA' ... login='YOUR_USERNAME', ... password='YOUR_PASSWORD', ... port='YOUR_PORT' ... extra=json.dumps(dict(account='YOUR_ACCOUNT', warehouse='YOUR_WAREHOUSE', database='YOUR_DB_OPTION', region='YOUR_REGION')), ... )

Saya tidak dapat terhubung ke Secrets Manager

Kami menyarankan sebagai berikut:

  1. Pelajari cara membuat kunci rahasia untuk koneksi Apache Airflow dan variabel AndaMengkonfigurasi koneksi Apache Airflow menggunakan rahasia AWS Secrets Manager.

  2. Pelajari cara menggunakan kunci rahasia untuk variabel Apache Airflow (test-variable) diMenggunakan kunci rahasia diAWS Secrets Manageruntuk variabel Apache Airflow.

  3. Pelajari cara menggunakan kunci rahasia untuk koneksi Apache Airflow (myconn) diMenggunakan kunci rahasiaAWS Secrets Manageruntuk koneksi Apache Airflow.

Saya tidak dapat terhubung ke server MySQL saya di <DB-identifier-name>'.cluster-id. <region>.rds.amazonaws.com'

Grup keamanan Amazon MWAA dan grup keamanan RDS memerlukan aturan masuknya untuk memungkinkan lalu lintas ke dan dari satu sama lain. Kami menyarankan sebagai berikut:

  1. Ubah grup keamanan RDS untuk mengizinkan semua lalu lintas dari grup keamanan VPC Amazon MWAA untuk mengizinkan semua lalu lintas dari grup keamanan VPC Amazon MWAA.

  2. Ubah grup keamanan VPC Amazon MWAA untuk mengizinkan semua lalu lintas dari grup keamanan VPC Amazon MWAA untuk mengizinkan semua lalu lintas dari grup keamanan VPC Amazon MWAA.

  3. Jalankan kembali tugas Anda lagi dan verifikasi apakah kueri SQL berhasil dengan memeriksa log Apache Airflow diCloudWatch Log.

Server web

Topik berikut menjelaskan kesalahan yang mungkin Anda terima untuk server Apache Airflow Web Anda di Amazon MWAA.

Saya menggunakanBigQueryOperator dan itu menyebabkan server web saya mogok

Kami menyarankan sebagai berikut:

  1. Operator Apache Airflow sepertiBigQueryOperator danQuboleOperator yang berisioperator_extra_links dapat menyebabkan server web Apache Airflow Anda mogok. Operator ini mencoba memuat kode ke server web Anda, yang tidak diizinkan karena alasan keamanan. Kami merekomendasikan untuk menambal operator di DAG Anda dengan menambahkan kode berikut setelah pernyataan impor Anda:

    BigQueryOperator.operator_extra_links = None
  2. Uji DAG, plugin kustom, dan dependensi Python Anda secara lokal menggunakan aws-mwaa-local-runneronGitHub.

Saya melihat kesalahan 5xx mengakses server web

Kami menyarankan sebagai berikut:

  1. Periksa opsi konfigurasi Apache Airflow. Pastikan pasangan kunci-nilai yang Anda tentukan sebagai opsi konfigurasi Apache Airflow, misalnyaAWS Secrets Manager, telah dikonfigurasi dengan benar. Untuk mempelajari selengkapnya, lihat Saya tidak dapat terhubung ke Secrets Manager.

  2. Periksarequirements.txt. Verifikasi paket “ekstra” aliran udara dan pustaka lain yang tercantum dalam Andarequirements.txt kompatibel dengan versi Apache Airflow Anda.

  3. Jelajahi cara untuk menentukan dependensi Python dalamrequirements.txt file, lihatMengelola dependensi Python di requirements.txt.

Saya melihat kesalahan 'Penjadwal tidak tampak berjalan'

Jika penjadwal tampaknya tidak berjalan, atau “detak jantung” terakhir diterima beberapa jam yang lalu, DAG Anda mungkin tidak muncul di Apache Airflow, dan tugas baru tidak akan dijadwalkan.

Kami menyarankan sebagai berikut:

  1. Konfirmasikan bahwa grup keamanan VPC Anda mengizinkan akses masuk ke port5432. Port ini diperlukan untuk terhubung ke database metadata Amazon Aurora PostgreSQL untuk lingkungan Anda. Setelah aturan ini ditambahkan, berikan Amazon MWAA beberapa menit, dan kesalahannya akan hilang. Untuk mempelajari selengkapnya, lihat Keamanan di VPC Anda di Amazon MWAA.

    catatan
    • Metadatabase Aurora PostgreSQL adalah bagian dari arsitektur layanan Amazon MWAA dan tidak terlihat di situs AndaAkun AWS.

    • Kesalahan terkait database biasanya merupakan gejala kegagalan penjadwal dan bukan akar penyebabnya.

  2. Jika scheduler tidak berjalan, mungkin karena sejumlah faktor seperti kegagalan instalasi ketergantungan, atau scheduler kelebihan beban. Konfirmasikan bahwa DAG, plugin, dan persyaratan Anda bekerja dengan benar dengan melihat grup log yang sesuai diCloudWatch Log. Untuk mempelajari selengkapnya, lihat Pemantauan dan metrik untuk Alur Kerja Terkelola Amazon untuk Apache Airflow.

Tugas

Topik berikut menjelaskan kesalahan yang mungkin Anda terima untuk tugas Apache Airflow di lingkungan.

Saya melihat tugas saya macet atau tidak menyelesaikan

Jika tugas Apache Airflow Anda “macet” atau tidak selesai, kami menyarankan sebagai berikut:

  1. Mungkin ada sejumlah besar DAG yang ditentukan. Kurangi jumlah DAG dan lakukan pembaruan lingkungan (seperti mengubah level log) untuk memaksa reset.

    1. Aliran udara mem-parsing DAG apakah mereka diaktifkan atau tidak. Jika Anda menggunakan lebih dari 50% kapasitas lingkungan Anda, Anda dapat mulai membebani Apache Airflow Scheduler. Ini mengarah ke Total Parse Time yang besar dalamCloudWatch Metrik atau waktu pemrosesan DAG yang panjang diCloudWatch Log. Ada cara lain untuk mengoptimalkan konfigurasi Apache Airflow yang berada di luar cakupan panduan ini.

    2. Untuk mempelajari lebih lanjut tentang praktik terbaik yang kami sarankan untuk menyesuaikan kinerja lingkungan Anda, lihatPenyetelan kinerja untuk Apache Airflow di Amazon MWAA.

  2. Mungkin ada sejumlah besar tugas dalam antrian. Ini sering muncul sebagai jumlah tugas yang besar—dan bertambah—dalam status “Tidak Ada”, atau sebagai jumlah besar dalam Tugas Antrian dan/atau Tugas TertundaCloudWatch. Hal ini dapat terjadi karena alasan berikut:

    1. Jika ada lebih banyak tugas untuk dijalankan daripada lingkungan memiliki kapasitas untuk menjalankan, dan/atau sejumlah besar tugas yang antri sebelum autoscaling memiliki waktu untuk mendeteksi tugas dan menyebarkan Pekerja tambahan.

    2. Jika ada lebih banyak tugas untuk dijalankan daripada lingkungan yang memiliki kapasitas untuk dijalankan, kami sarankan untuk mengurangi jumlah tugas yang dijalankan oleh DAG Anda secara bersamaan, dan/atau meningkatkan Pekerja Aliran Udara Apache minimum.

    3. Jika ada sejumlah besar tugas yang diantri sebelum penskalaan otomatis memiliki waktu untuk mendeteksi dan menyebarkan pekerja tambahan, kami merekomendasikan penyebaran tugas yang mengejutkan dan/atau meningkatkan Pekerja Aliran Udara Apache minimum.

    4. Anda dapat menggunakan perintah update-environment diAWS Command Line Interface (AWS CLI) untuk mengubah jumlah minimum atau maksimum Pekerja yang berjalan di lingkungan Anda.

      aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 10
    5. Untuk mempelajari lebih lanjut tentang praktik terbaik yang kami sarankan untuk menyesuaikan kinerja lingkungan Anda, lihatPenyetelan kinerja untuk Apache Airflow di Amazon MWAA.

  3. Mungkin ada tugas yang dihapus pertengahan eksekusi yang muncul sebagai log tugas yang berhenti tanpa indikasi lebih lanjut di Apache Airflow. Hal ini dapat terjadi karena alasan berikut:

    1. Jika ada momen singkat di mana 1) tugas saat ini melebihi kapasitas lingkungan saat ini, diikuti oleh 2) beberapa menit tidak ada tugas yang mengeksekusi atau sedang antri, maka 3) tugas baru sedang antri.

    2. Autoscaling Amazon MWAA bereaksi terhadap skenario pertama dengan menambahkan pekerja tambahan. Dalam skenario kedua, menghapus pekerja tambahan. Beberapa tugas yang sedang antri dapat mengakibatkan pekerja dalam proses dihapus, dan akan berakhir ketika wadah dihapus.

    3. Kami menyarankan untuk meningkatkan jumlah minimum pekerja di lingkungan Anda. Pilihan lainnya adalah menyesuaikan waktu DAG dan tugas Anda untuk memastikan bahwa skenario ini tidak terjadi.

    4. Anda juga dapat mengatur pekerja minimum yang sama dengan pekerja maksimum di lingkungan Anda, secara efektif menonaktifkan penskalaan otomatis. Gunakan perintah update-environment diAWS Command Line Interface (AWS CLI) untuk menonaktifkan penskalaan otomatis dengan menetapkan jumlah minimum dan maksimum pekerja agar sama.

      aws mwaa update-environment --name MyEnvironmentName --min-workers 5 --max-workers 5
    5. Untuk mempelajari lebih lanjut tentang praktik terbaik yang kami sarankan untuk menyesuaikan kinerja lingkungan Anda, lihatPenyetelan kinerja untuk Apache Airflow di Amazon MWAA.

  4. Jika tugas Anda terjebak dalam keadaan “berjalan”, Anda juga dapat menghapus tugas atau menandainya sebagai berhasil atau gagal. Hal ini memungkinkan komponen autoscaling untuk lingkungan Anda untuk menurunkan jumlah pekerja yang berjalan di lingkungan Anda. Citra berikut menunjukkan contoh tugas yang terdampar.

    Ini adalah gambar dengan tugas yang terdampar.
    1. Pilih lingkaran untuk tugas yang terdampar, lalu pilih Clear (seperti yang ditunjukkan). Hal ini memungkinkan Amazon MWAA untuk menurunkan skala pekerja; jika tidak, Amazon MWAA tidak dapat menentukan DAG mana yang diaktifkan atau dinonaktifkan, dan tidak dapat menurunkan skala, jika masih ada tugas antrian.

      Tindakan Aliran Udara Apache
  5. Pelajari lebih lanjut tentang siklus hidup tugas Apache Airflow di Concepts dalam panduan referensi Apache Airflow.

CLI

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat menjalankan perintah Airflow CLI diAWS Command Line Interface.

Saya melihat kesalahan '503' saat memicu DAG di CLI

Airflow CLI berjalan pada server Apache Airflow Web, yang memiliki konkurensi terbatas. Biasanya maksimal 4 perintah CLI dapat berjalan secara bersamaan.