Workload yang sangat paralel, juga dikenal sebagai workload paralel yang memalukan, umum ditemukan di perusahaan keuangan, media, dan ilmu hayati. Untuk workload paralel seperti ini, perusahaan biasanya men-deploy cluster node komputasi. Setiap node dapat menjalankan tugas pemrosesan independen, dalam konfigurasi yang disebut sebagai komputasi grid. Untuk memproses data untuk workload paralel, Anda dapat menggunakan Apache Beam dengan Dataflow. Untuk mengetahui informasi selengkapnya tentang Apache Beam, lihat panduan pemrograman Apache Beam.
Menggunakan Dataflow untuk workload yang sangat paralel memberikan banyak manfaat.
- Membuat alur kerja yang terkelola sepenuhnya, dengan pemrosesan dan orkestrasi data dalam pipeline yang sama.
- Antarmuka pengguna dan API Dataflow mencakup fitur kemampuan observasi.
- Dataflow memiliki pencatatan terpusat untuk semua tahap pipeline.
- Dataflow menawarkan penskalaan otomatis untuk memaksimalkan performa dan mengoptimalkan penggunaan resource.
- Dataflow bersifat fault tolerant dan menyediakan load balancing dinamis.
- Dataflow menawarkan deteksi dan koreksi straggler.
- Menggunakan satu sistem untuk semua aspek pipeline, baik untuk pra-pemrosesan dan pasca-pemrosesan maupun untuk pemrosesan tugas. Anda bahkan dapat menggunakan kode C++ yang ada di pipeline.
- Menggunakan pemrosesan tepat satu kali bawaan yang disediakan Dataflow.
Selain itu, Dataflow menyertakan berbagai fitur keamanan:
- Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) dengan pipeline Anda.
- Menentukan aturan firewall untuk jaringan yang terkait dengan tugas Dataflow Anda.
- Menggunakan jaringan VPC.
Workload ini memerlukan distribusi data ke fungsi yang berjalan di banyak core. Distribusi ini sering kali memerlukan pembacaan konkurensi yang sangat tinggi, diikuti dengan fan-out data yang besar, yang diserap oleh sistem downstream. Kompetensi inti Dataflow adalah mendistribusikan 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 workload yang sangat paralel, kebutuhan performa, skalabilitas, ketersediaan, dan keamanan ditangani secara otomatis.
Menggabungkan kode eksternal ke dalam pipeline
Apache Beam memiliki SDK bawaan untuk Java, Python, dan Go. Namun, banyak workload yang sangat paralel menggunakan kode yang ditulis dalam C++. Anda dapat menggunakan Dataflow dan layanan Google Cloud Platform lainnya untuk menjalankan program biner (library) C++ sebagai kode eksternal menggunakan Apache Beam. Menyertakan program biner C++ memungkinkan Anda mengakses jenis workload ini menggunakan layanan terkelola sepenuhnya. Anda juga dapat membangun pipeline lengkap menggunakan directed acyclic graph (DAG) yang canggih.
Pendekatan yang sama untuk menjalankan program biner C++ juga relevan untuk kode yang ditulis dalam bahasa lain tempat Anda dapat mengompilasi program biner mandiri.
Pipeline end-to-end yang sangat paralel
Dengan Dataflow, Anda dapat melakukan pemrosesan baca dan tulis I/O, analisis, dan output tugas dalam pipeline yang sama. Hal ini memungkinkan Anda menjalankan pipeline lengkap yang sangat paralel.
Misalnya, workload HPC yang sangat paralel dapat menggabungkan langkah-langkah berikut:
Menyerap data mentah, baik dari sumber internal maupun eksternal. Data dapat berasal dari sumber yang dibatasi maupun yang tidak. Sebagian besar sumber yang tidak dibatasi dikonversi menjadi sumber yang dibatasi untuk mengakomodasi teknologi yang digunakan untuk task farming.
Melakukan pra-pemrosesan data mentah menjadi bentuk dan encoding data yang dapat digunakan oleh komponen task farming.
Menggunakan sistem untuk mendistribusikan penghitungan ke host dan mengambil data dari sumber, lalu mewujudkan hasil untuk pasca-analisis.
Melakukan pasca-analisis untuk mengonversi hasil menjadi output.
Anda dapat menggunakan Dataflow untuk mengelola semua langkah ini dalam satu pipeline sambil memanfaatkan fitur Dataflow:
Karena satu sistem bertanggung jawab atas semua tahap, Anda tidak memerlukan sistem orkestrasi eksternal untuk mengoordinasikan jalannya beberapa pipeline.
Dengan lokalitas data, Anda tidak perlu mematerialisasi dan mendematerialisasi secara eksplisit 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 selanjutnya.
Dengan penskalaan otomatis, saat data berada dalam sistem, resource akan diskalakan berdasarkan volume data saat data bergerak melalui tahapan pipeline.
Pipeline HPC Dataflow inti yang sangat paralel menggunakan mesin eksekusi DAG modern. Semua proses pipeline umum dapat diselesaikan dalam satu DAG dan, oleh karena itu, satu pipeline Dataflow. Anda dapat menggunakan DAG yang dihasilkan oleh Apache Beam untuk menentukan bentuk pipeline.
Jika bermigrasi dari sistem task farm ke alur kerja yang sangat paralel, Anda perlu 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 mengirimkan data ke database atau penyimpanan.
Komponen Google Cloud Platform yang digunakan dengan alur kerja yang sangat paralel
Aplikasi komputasi grid memerlukan data untuk didistribusikan ke fungsi yang berjalan di banyak core. Pola ini sering kali memerlukan pembacaan dengan konkurensi tinggi dan sering kali diikuti oleh fan-out data besar yang diserap oleh sistem downstream.
Dataflow terintegrasi dengan layanan terkelola Google Cloud Platform lainnya yang dapat menyerap I/O data paralel berskala besar:
- Pub/Sub: penyimpanan kolom lebar untuk caching dan penayangan
- Bigtable: layanan penyerapan streaming global event
- Cloud Storage: penyimpanan objek terpadu
- BigQuery: layanan data warehouse berskala petabyte
Jika digunakan bersama, layanan ini akan memberikan solusi yang efektif untuk workload yang sangat paralel.
Arsitektur umum untuk workload yang sangat paralel yang berjalan di Google Cloud Platform mencakup hal berikut:
Dataflow Runner untuk Apache Beam. Runner ini mendistribusikan pekerjaan ke node grid dengan alur pemrosesan yang berasal dari DAG. Satu DAG Apache Beam memungkinkan Anda menentukan pipeline multi-tahap yang kompleks dengan tahap pipeline paralel dapat digabungkan kembali menggunakan input samping atau penggabungan.
Cloud Storage. Layanan ini menyediakan lokasi untuk stage program biner C++. Saat file berukuran 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 mentransformasi 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 program 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 Panduan Tingkat Permintaan dan Distribusi Akses dalam dokumentasi Cloud Storage.
Bigtable
Bigtable adalah layanan database NoSQL berperforma tinggi yang dioptimalkan untuk workload analisis dan operasional yang besar.
Bigtable melengkapi Dataflow. Karakteristik utama Bigtable, yaitu operasi baca dan tulis berlatensi rendah (6 md pada persentil ke-90), memungkinkannya menangani ribuan klien serentak dan workload burst berat. Fitur ini menjadikan Bigtable ideal sebagai sink dan sebagai sumber data dalam fungsi DoFn pada fase pemrosesan Dataflow.
BigQuery
BigQueryadalah data warehouse perusahaan yang cepat, hemat, dan terkelola sepenuhnya untuk analisis data skala 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 guna menyerap dan mendistribusikan data. Pub/Sub sama efektifnya sebagai middleware berorientasi pesan untuk integrasi layanan atau sebagai antrean untuk memparalelkan tugas.
DAG Dataflow
Anda dapat menggunakan Apache Beam SDK untuk membangun DAG yang ekspresif, yang memungkinkan Anda membuat pipeline multi-level streaming atau batch. Perpindahan data ditangani oleh pelaksana, dengan data yang dinyatakan sebagai objek PCollection, yang merupakan kumpulan 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 berikutnya
- Pelajari praktik terbaik untuk menggunakan pipeline yang sangat paralel HlPC Dataflow.
- Ikuti tutorial untuk membuat pipeline yang menggunakan container kustom dengan library C++.