Insinyur data: Proyek rekayasa data selangkah demi selangkah

Nov 28 2022
jika Anda berencana untuk meningkatkan keterampilan Anda dan melibatkan diri Anda dalam beberapa proyek teknis yang berat, saya mengerti, artikel ini untuk Anda, yang berikutnya juga, saya akan menyoroti yang terbaik untuk Anda, seperti yang saya sebutkan, selalu, pengetahuan yang baik didistribusikan di sini. Pada artikel ini, kita akan menguraikan cara membuat tumpukan data menggunakan alat manajemen alur kerja apache airflow, membuat dasbor dengan Dash plottly, mengumpulkan metrik dengan Statsd, dan memvisualisasikan kinerja menggunakan Prometheus dan Grafana.

jika Anda berencana untuk meningkatkan keterampilan Anda dan melibatkan diri Anda dalam beberapa proyek teknis yang berat, saya mengerti, artikel ini untuk Anda, yang berikutnya juga, saya akan menyoroti yang terbaik untuk Anda, seperti yang saya sebutkan, selalu, pengetahuan yang baik didistribusikan di sini.

Gambar 1 : arsitektur proyek

Pada artikel ini, kita akan menguraikan cara membuat tumpukan data menggunakan alat manajemen alur kerja apache airflow , membuat dasbor dengan Dash plottly , mengumpulkan metrik dengan Statsd , dan memvisualisasikan kinerja menggunakan Prometheus dan Grafana .

Semua tugas yang disebutkan di atas, sedang dalam proses untuk dihubungkan bersama menggunakan docker compose . beberapa dari Anda tidak memiliki kesempatan untuk mengerjakannya, jadi mari kita definisikan secara singkat.

Gambar 2 : Komposisi Docker

Bayangkan bahwa Anda bekerja dengan banyak wadah pada waktu yang sama, masing-masing dari mereka memiliki tugas tersendiri, apakah Anda akan menangani masing-masing secara terpisah? TENTU TIDAK ! . Docker Compose adalah alat yang membantu mengatasi masalah ini dan dengan mudah menangani banyak kontainer sekaligus.

Saya dapat melihat Anda bertanya-tanya, mengapa saya memulai artikel berbicara tentang docker compose , tetapi tidak apa-apa, saya akan menjelaskan alasannya. Saya ingin kalian mengerti bahwa adalah wajib untuk memikirkan dasar dari setiap proyek TI sebelum mulai menggali lebih dalam. Komposisi Docker akan memungkinkan kita memulai semua layanan yang diperlukan untuk proyek kita.

Mari kita lihat dari file penulisan docker kami ( docker-compose-LocalExecutor.yml ):

setiap file docker-compose memiliki atribut yang perlu kita pahami:

  • versi : docker menulis versi
  • gambar : gambar buruh pelabuhan yang akan ditarik dari hub buruh pelabuhan
  • depend_on : di sini kita perlu menyebutkan layanan mana yang ditautkan ke layanan saat ini, misalnya aliran udara apache membutuhkan Postgres dan Mysql untuk menyimpan metadata dags
  • environment : disini kita mendefinisikan environment variable dari service, misalnya POSTGRES_USER = aliran udara yang akan digunakan saat kita memulai service.
  • command : perintah bash pertama yang Anda butuhkan untuk dijalankan setiap kali layanan dimulai
  • volumes : lokasi di dalam wadah Anda yang akan dipasang pada sistem file Anda, misalnya data yang diubah dari saluran pipa akan disimpan di tempat penyimpanan persisten
  • port : itu adalah media dari mana wadah Anda akan digunakan untuk berkomunikasi dengan layanan lain, misalnya data akan diserap ke Statsd dari aliran udara melalui port 8125 menggunakan protokol udp (periksa tangkapan layar di bawah).
  • Mulai layanan basis data:
  • Gambar 3 : layanan mysql
    Gambar 4 : server web aliran udara

    3.Mulai Statistik :

    Gambar 5 : Layanan Statsd

    4.Mulai Prometheus dan Grafana :

    Gambar 6 : Layanan Prometheus
    Gambar 7 : Layanan Grafana

    Jadi seperti yang kita lihat, semua definisi ini ditulis pada file yang sama dan semuanya akan dimulai bersama-sama dengan perintah sederhana untuk mencapai tujuan proyek.

    Proyek ini dibagi menjadi 3 langkah utama:

    1. pengikisan data dan mengotomatiskannya menggunakan aliran udara Apache .
    2. dasbor menggunakan Dash plotly .
    3. pantau menggunakan 3 alat : Statsd , Prometheus , Grafana .
    • sumber data :https://www.fahrrad.de/
    Gambar 8 : Screenshot dari website Fahrrad.de

    kita akan mengekstrak:

    • nama merek
    • kategori
    • nama model
    • harga
    • gambar sepeda

    Skrip scraping akan otomatis menggunakan alat apache airflow yang paling kuat, tetapi jika Anda belum pernah menggunakannya sebelumnya, saya akan memberikan gambaran singkat tentang alat tersebut.

    Aliran udara Apache adalah alat manajemen aliran kerja yang memiliki banyak operator yang dapat membantu insinyur data mana pun untuk merancang dan mengatur pekerjaan proyek ilmuwan data besar, misalnya mengotomatiskan skrip pengumpulan data. operator yang digunakan dalam proyek ini adalah :

    • PythonOperator : untuk skrip pengikisan web
    • BashOperator : untuk mendefinisikan pekerjaan administrasi Linux
    • EmailOperator : Untuk mengirim email saat pipeline selesai

    Dag adalah urutan tugas dan setiap tugas didefinisikan menggunakan satu operator

    tugas harus memiliki tempat yang pasti dan teratur (t1 >> t2 : tugas satu harus dijalankan sebelum tugas 2 )

    Gambar 9 : screenshot dari pipeline

    Setelah mengumpulkan data dari sumbernya (situs web menggunakan metode scraping), sekarang saatnya untuk mendapatkan wawasan darinya, itulah mengapa kami membuat dasbor interaktif menggunakan Dash plotly .

    Dash plotly : ini adalah kerangka kerja untuk menulis aplikasi web interaktif, ditulis di atas Flask, Plotly. js dan Bereaksi. js.

    Gambar 10 : dashboard untuk memvisualisasikan data

    Saat ini, mari kita lakukan beberapa staf mewah, saat pekerjaan sedang berjalan, itu akan menghasilkan metrik yang harus dipantau, metrik ini akan didorong dari aliran udara melalui port 8125 ke Statsd menggunakan protokol udp (Anda dapat memeriksa file penulisan docker ), data metrik tidak dapat ditampilkan dalam antarmuka yang teratur jika kami hanya menggunakan statsd , jadi kami akan mengandalkan Prometheus dan Grafana untuk mencapai apa yang kami cari.

    Gambar 11 : metrik di Statsd
    Gambar 12 : metrik ditampilkan di Prometheus
    Gambar 13 : Dasbor Grafana

    seluruh proses dilakukan dengan cara ini:

    Gambar 14 : pemantauan aliran udara

    Video proyek:

    Kesimpulan :

    Pada artikel ini, kami membangun keseluruhan tumpukan data: mulai dari mengumpulkan data menggunakan skrip python, beralih ke membuat dasbor untuk mengekstrak wawasan berguna darinya, juga memantau saluran data dan melihat kinerja berbagai tugas. Saya harap Anda menikmati membaca artikel saya dan jangan ragu untuk bertanya kepada saya pertanyaan apa pun dan saya berharap dapat mendengar ide Anda tentang artikel berikutnya.

    Repo GIT :

    https://github.com/chiheb08/data_enginnering_project