Cara mengatur klaster aliran udara multinode dengan Celery dan RabbitMQ

Apa itu Airflow?







Apache Airflow adalah pengelola alur kerja tingkat lanjut dan alat yang sangat diperlukan di gudang insinyur data modern.







Aliran udara memungkinkan Anda membuat alur kerja dalam bentuk grafik asiklik terarah (DAG) tugas. Berbagai utilitas baris perintah melakukan operasi kompleks di DAG. Antarmuka pengguna dengan mudah memvisualisasikan pipeline yang berjalan di lingkungan produksi, memantau kemajuan, dan memecahkan masalah sesuai kebutuhan.







Buat, rencanakan, dan kontrol alur kerja Anda secara terprogram. Ini menyediakan abstraksi fungsional dalam bentuk DAG idempoten (Grafik Acyclic Terarah). Fungsi sebagai layanan abstraksi untuk melakukan tugas pada interval tertentu.







Cluster dengan satu node Airflow







Dalam satu node Airflow cluster, semua komponen (pekerja, penjadwal, server web) diinstal pada satu node yang dikenal sebagai " node Master ". Untuk menskalakan cluster node tunggal Airflow



harus dikonfigurasi di LocalExecutor



. Pekerja mengambil (menarik) tugas dari antrian IPC (komunikasi antar-proses), ini berskala sangat baik selama sumber daya tersedia di simpul Master . Untuk menskalakan Aliran Udara di beberapa node, Anda harus mengaktifkan Celery Executor



.













Arsitektur node tunggal aliran udara







Kluster multinode aliran udara







Airflow . - , , , . , Airflow CeleryExecutor



.







Celery CeleryExecutor



Airflow. / Celery Redis RabbitMQ. RabbitMQ — . — . IPC, , RabbitMQ — . RabbitMQ / , Celery . .













Airflow







Celery:







Celery — , . , . Airflow . Airflow Airflow, .







Airflow Celery:







. CentOS 7 Linux.







  1. RabbitMQ


yum install epel-release
yum install rabbitmq-server
      
      





  1. RabbitMQ Server


systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
      
      





  1. - RabbitMQ


rabbitmq-plugins enable rabbitmq_management
      
      











rabbitmq — 15672



, - — admin/admin



.













  1. pyamqp



    RabbitMQ PostGreSQL


pip install pyamqp
      
      





amqp://



— , librabbitmq, , py-amqp



, .







pyamqp://



librabbitmq://



, , . pyamqp://



amqp



(http://github.com/celery/py-amqp)







PostGreSQL: psycopg2







Psycopg — PostgreSQL Python.







pip install psycopg2
      
      





  1. Airflow.


pip install 'apache-airflow[all]'
      
      





airflow







airflow version
      
      











Airflow v1.10.0, .









airflow initdb
      
      





, . Airflow .







  1. Celery


Celery .







pip install celery==4.3.0
      
      





Celery







celery --version
4.3.0 (rhubarb)
      
      





  1. airflow.cfg Celery Executor.


executor = CeleryExecutor
sql_alchemy_conn = postgresql+psycopg2://airflow:airflow@{HOSTNAME}/airflow 
broker_url= pyamqp://guest:guest@{RabbitMQ-HOSTNAME}:5672/
celery_result_backend = db+postgresql://airflow:airflow@{HOSTNAME}/airflow 
dags_are_paused_at_creation = True
load_examples = False
      
      





airflow.cfg



airflow airflow initdb



, airflow



.







- airflow







# default port is 8080
airflow webserver -p 8000
      
      











# start the scheduler
airflow scheduler
      
      





airflow .







airflow worker
      
      





Setelah Anda selesai memulai berbagai layanan aliran udara, Anda dapat memeriksa antarmuka aliran udara yang fantastis dengan perintah:







http://<IP-ADDRESS/HOSTNAME>:8000
      
      





seperti yang kami tentukan port 8000 di perintah start layanan webserver kami, jika tidak, nomor port default adalah 8080.







Iya! Kami telah selesai membuat cluster dengan arsitektur multinode Airflow. :)








All Articles