Beban kerja yang sangat paralel, juga dikenal sebagai beban kerja paralel yang memalukan, umum di perusahaan keuangan, media, dan ilmu hayati. Untuk workload paralel seperti ini, perusahaan biasanya men-deploy cluster node komputasi. Setiap node dapat melakukan tugas pemrosesan independen, dalam konfigurasi yang disebut sebagai grid computing. Untuk memproses data untuk beban kerja paralel, Anda dapat menggunakan Apache Beam dengan Dataflow. Untuk informasi selengkapnya tentang Apache Beam, lihat panduan pemrograman Apache Beam.
Menggunakan Dataflow untuk beban kerja yang sangat paralel memberikan banyak manfaat.
- Buat alur kerja yang terkelola sepenuhnya, dengan pemrosesan dan orkestrasi data dalam
pipeline yang sama.
- Antarmuka pengguna dan API Dataflow menyertakan fitur visibilitas.
- Dataflow memiliki logging terpusat untuk semua tahap pipeline.
- Dataflow menawarkan penskalaan otomatis untuk memaksimalkan performa dan mengoptimalkan penggunaan resource.
- Dataflow fault-tolerant dan menyediakan load balancing dinamis.
- Dataflow menawarkan deteksi dan koreksi pelacak.
- Gunakan satu sistem untuk semua aspek pipeline, baik pra-pemrosesan maupun pasca-pemrosesan, dan untuk pemrosesan tugas. Anda bahkan dapat menggunakan kode C++ yang ada di pipeline.
- Gunakan pemrosesan tepat satu kali bawaan yang disediakan Dataflow.
Selain itu, Dataflow menyertakan berbagai fitur keamanan:
- Gunakan kunci enkripsi yang dikelola pelanggan (CMEK) dengan pipeline Anda.
- Tentukan aturan firewall untuk jaringan yang terkait dengan tugas Dataflow Anda.
- Gunakan jaringan VPC.
Beban kerja ini memerlukan distribusi data ke fungsi yang berjalan di banyak inti. Distribusi ini sering kali memerlukan pembacaan serentak yang sangat tinggi, diikuti dengan fan-out data yang besar, yang diserap oleh sistem downstream. Kompetensi inti Dataflow adalah distribusi workload batch dan streaming di seluruh resource serta mengelola penskalaan otomatis dan penyeimbangan ulang tugas dinamis di seluruh resource ini. Oleh karena itu, saat Anda menggunakan Dataflow untuk beban kerja yang sangat paralel, kebutuhan performa, skalabilitas, ketersediaan, dan keamanan ditangani secara otomatis.
Menyertakan kode eksternal ke dalam pipeline
Apache Beam saat ini memiliki SDK bawaan untuk Java, Python, dan Go. Namun, banyak beban kerja yang sangat paralel menggunakan kode yang ditulis dalam C++. Anda dapat menggunakan Dataflow dan layanan Google Cloud lainnya untuk menjalankan biner (library) C++ sebagai kode eksternal menggunakan Apache Beam. Menyertakan biner C++ memungkinkan Anda membuka jenis workload ini menggunakan layanan terkelola sepenuhnya. Hal ini juga memberi Anda kemampuan untuk membuat pipeline lengkap menggunakan directed acyclic graph (DAG) yang canggih.
Pendekatan yang sama untuk menjalankan biner C++ juga relevan untuk kode yang ditulis dalam bahasa lain tempat Anda dapat mengompilasi biner mandiri.
Pipeline end-to-end yang sangat paralel
Dengan Dataflow, Anda dapat melakukan pemrosesan baca/tulis I/O, analisis, dan output tugas semuanya dalam pipeline yang sama, yang memungkinkan Anda menjalankan pipeline lengkap yang sangat paralel
Misalnya, beban kerja HPC yang sangat paralel dapat menggabungkan langkah-langkah berikut:
Serap data mentah, baik dari sumber internal maupun eksternal. Data mungkin berasal dari sumber yang tidak terbatas atau terbatas. Sumber yang tidak terbatas sebagian besar dikonversi menjadi sumber terbatas untuk mengakomodasi teknologi yang digunakan untuk task farming.
Memproses data mentah menjadi bentuk data dan encoding yang dapat digunakan komponen task farming.
Gunakan sistem untuk mendistribusikan penghitungan ke host dan mengambil data dari sumber, lalu mewujudkan hasilnya untuk pasca-analisis.
Lakukan analisis pasca-analisis untuk mengonversi hasil menjadi output.
Anda dapat menggunakan Dataflow untuk mengelola semua langkah ini dalam satu pipeline sekaligus memanfaatkan fitur Dataflow:
Karena satu sistem bertanggung jawab atas semua tahap, Anda tidak memerlukan sistem orkestrasi eksternal untuk mengoordinasikan pengoperasian beberapa pipeline.
Dengan lokalitas data, Anda tidak perlu secara eksplisit mewujudkan dan membatalkan di antara batas tahap, sehingga meningkatkan efisiensi.
Dengan telemetri dalam sistem yang lebih baik, informasi tentang total byte dalam tahap tersedia, yang membantu mendesain tahap berikutnya.
Dengan penskalaan otomatis, saat data berada di sistem, resource akan diskalakan berdasarkan volume data saat data berpindah melalui tahap pipeline.
Pipeline Dataflow HPC inti yang sangat paralel menggunakan mesin eksekusi DAG modern. Semua proses pipeline standar dapat diselesaikan dalam satu DAG, sehingga, satu pipeline Dataflow. Anda dapat menggunakan DAG yang dihasilkan oleh Apache Beam untuk menentukan bentuk pipeline.
Jika bermigrasi dari sistem farm tugas ke alur kerja yang sangat
paralel, Anda harus beralih dari tugas ke data. PTransform
berisi
DoFn
,
yang memiliki fungsi proses yang menerima elemen data.
Titik data dapat berupa objek apa pun dengan satu atau beberapa properti.
Dengan menggunakan DAG dan satu pipeline, Anda dapat memuat semua data dalam sistem selama seluruh alur kerja. Anda tidak perlu menghasilkan output data ke database atau penyimpanan.
Komponen Google Cloud yang digunakan dengan alur kerja yang sangat paralel
Aplikasi komputasi grid memerlukan data yang didistribusikan ke fungsi yang berjalan di banyak core. Pola ini sering kali memerlukan pembacaan konkurensi tinggi dan sering kali diikuti oleh fan-out data yang besar yang diserap oleh sistem downstream.
Dataflow terintegrasi dengan layanan terkelola Google Cloud lainnya yang dapat menyerap I/O data paralel berskala besar:
- Pub/Sub: penyimpanan kolom lebar untuk penyimpanan dalam cache dan penayangan
- Bigtable: layanan penyerapan aliran peristiwa global
- Cloud Storage: penyimpanan objek terpadu
- BigQuery: layanan data warehouse berskala petabyte
Jika digunakan bersama, layanan ini akan memberikan solusi yang menarik untuk beban kerja yang sangat paralel.
Arsitektur umum untuk beban kerja yang sangat paralel yang berjalan di Google Cloud mencakup hal berikut:
Dataflow Runner untuk Apache Beam. Runner ini mendistribusikan pekerjaan ke node petak dengan alur pemrosesan yang berasal dari DAG. Satu DAG Apache Beam memungkinkan Anda menentukan pipeline multi-tahap yang kompleks, tempat tahap pipeline paralel dapat digabungkan kembali menggunakan input samping atau join.
Cloud Storage. Layanan ini menyediakan lokasi untuk melakukan staging biner C++. Jika file besar perlu disimpan, seperti dalam banyak kasus penggunaan media, file tersebut juga berada di Cloud Storage.
Bigtable, BigQuery, dan Pub/Sub. Layanan ini digunakan sebagai sumber dan sink.
Diagram berikut menguraikan arsitektur tingkat tinggi untuk contoh alur kerja.
Anda juga dapat menggunakan sistem penyimpanan lain. Untuk mengetahui detailnya, lihat daftar sistem penyimpanan dan sumber streaming di halaman I/O pipeline dalam dokumentasi Apache Beam.
Runner Dataflow untuk Apache Beam
Gunakan Dataflow untuk mengubah dan memperkaya data Anda dalam mode streaming dan batch. Dataflow didasarkan pada Apache Beam.
Cloud Storage
Cloud Storage adalah penyimpanan objek terpadu yang mencakup penyajian data langsung, analisis data, machine learning (ML), dan pengarsipan data. Untuk workload yang sangat paralel dengan Dataflow, Cloud Storage menyediakan akses ke biner C++. Dalam beberapa kasus penggunaan, Cloud Storage juga menyediakan lokasi untuk data yang diperlukan oleh fase pemrosesan.
Untuk beban burst tinggi yang diperlukan oleh komputasi grid, Anda perlu memahami karakteristik performa Cloud Storage. Untuk mengetahui informasi selengkapnya tentang performa penayangan data Cloud Storage, lihat Pedoman Rasio Permintaan dan Distribusi Akses dalam dokumentasi Cloud Storage.
Bigtable
Bigtable adalah layanan database NoSQL berperforma tinggi yang dioptimalkan
untuk beban kerja operasional dan analisis yang besar. Bigtable
merupakan pelengkap untuk Dataflow. Karakteristik utama Bigtable, operasi baca dan tulis berlatensi rendah (6 md pada persentil ke-90), memungkinkannya menangani ribuan klien serentak dan workload burst berat. Fitur ini membuat Bigtable
ideal sebagai sink dan sebagai sumber data dalam
fungsi DoFn
pada fase pemrosesan Dataflow.
BigQuery
BigQuery adalah data warehouse perusahaan yang cepat, hemat, dan terkelola sepenuhnya untuk analisis data berskala besar. Hasil petak sering digunakan untuk analisis, dan memungkinkan Anda menjalankan agregasi skala besar terhadap output data petak.
Pub/Sub
Pub/Sub adalah layanan pesan asinkron dan skalabel yang memisahkan layanan yang menghasilkan pesan dari layanan yang memproses pesan tersebut. Anda dapat menggunakan Pub/Sub untuk analisis streaming dan pipeline integrasi data untuk menyerap dan mendistribusikan data. Hal ini sama efektifnya dengan middleware yang berorientasi pada pesan untuk integrasi layanan atau sebagai antrean untuk memparalelkan tugas.
DAG Dataflow
Apache Beam SDK memungkinkan Anda membuat DAG yang ekspresif, yang pada akhirnya memungkinkan Anda
membuat pipeline multi-tahap streaming atau batch. Pemindahan data ditangani oleh
runner, dengan data yang dinyatakan sebagai
objek PCollection
, yang merupakan koleksi elemen paralel yang tidak dapat diubah.
Diagram berikut menggambarkan alur ini.
Apache Beam SDK memungkinkan Anda menentukan DAG. Dalam DAG, Anda dapat menyertakan kode yang ditentukan pengguna sebagai fungsi. Biasanya, bahasa pemrograman yang sama (Java, Python, atau Go) digunakan untuk deklarasi DAG dan untuk kode yang ditentukan pengguna. Anda juga dapat menggunakan kode yang tidak bawaan, seperti C++, untuk kode yang ditentukan pengguna.
Langkah selanjutnya
Pelajari praktik terbaik untuk menggunakan pipeline Dataflow HPC yang sangat paralel.
Ikuti tutorial untuk membuat pipeline yang menggunakan penampung kustom dengan library C++.