Tentang workload HPC Dataflow yang sangat paralel

Beban kerja yang sangat paralel, juga dikenal sebagai beban kerja paralel yang memalukan, umum digunakan 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 grid computing. Untuk memproses data untuk beban kerja paralel, Anda dapat menggunakan Apache Beam dengan Dataflow. Untuk mengetahui informasi selengkapnya tentang Apache Beam, lihat panduan pemrograman Apache Beam.

Menggunakan Dataflow untuk beban kerja yang sangat paralel memberikan banyak manfaat.

Selain itu, Dataflow menyertakan berbagai fitur keamanan:

Beban kerja 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 hilir. 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 beban kerja yang sangat paralel, kebutuhan performa, skalabilitas, ketersediaan, dan keamanan ditangani secara otomatis.

Menggabungkan 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 Platform lainnya untuk menjalankan biner (library) C++ sebagai kode eksternal menggunakan Apache Beam. Menyertakan biner C++ memungkinkan Anda membuka kunci jenis workload ini menggunakan layanan terkelola sepenuhnya. Hal ini juga memberi Anda kemampuan untuk membangun 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 paralel tinggi end-to-end

Dengan Dataflow, Anda dapat melakukan pemrosesan baca/tulis I/O, analisis, dan output tugas semuanya dalam pipeline yang sama, sehingga Anda dapat menjalankan pipeline paralel yang sangat lengkap

Misalnya, workload paralel tinggi HPC dapat menggabungkan langkah-langkah berikut:

  1. Menyerap data mentah, baik dari sumber internal maupun eksternal. Data dapat berasal dari sumber yang tidak terikat atau terikat. Sumber tidak terikat sebagian besar dikonversi menjadi sumber terikat untuk mengakomodasi teknologi yang digunakan untuk task farming.

  2. Memproses data mentah sebelumnya menjadi bentuk dan encoding data yang dapat digunakan oleh komponen task farming.

  3. Gunakan sistem untuk mendistribusikan perhitungan ke host dan mengambil data dari sumber, lalu mewujudkan hasil untuk pasca-analisis.

  4. Lakukan analisis 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 tahap 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 Anda bermigrasi dari sistem task farm 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 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 konkurensi tinggi dan sering diikuti oleh fan-out data besar yang diserap oleh sistem hilir.

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 aliran peristiwa global
  • Cloud Storage: penyimpanan objek terpadu
  • BigQuery: layanan data warehouse berskala petabyte

Jika digunakan bersama, layanan ini akan memberikan solusi yang efektif untuk beban kerja 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 petak dengan alur pemrosesan yang berasal dari DAG. Satu DAG Apache Beam memungkinkan Anda menentukan pipeline multi-tahap yang kompleks dengan tahap pipeline paralel yang dapat digabungkan kembali menggunakan input samping atau penggabungan.

  • Cloud Storage. Layanan ini menyediakan lokasi untuk menyiapkan 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 tujuan.

Diagram berikut menguraikan arsitektur tingkat tinggi untuk contoh alur kerja.

Arsitektur solusi komputasi grid

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 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 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 dengan lonjakan besar. Fitur ini menjadikan Bigtable ideal sebagai tujuan 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 guna menyerap dan mendistribusikan data. Pub/Sub sama efektifnya sebagai middleware berorientasi pesan untuk integrasi layanan atau sebagai antrean untuk memparalelkan tugas.

DAG Dataflow

Apache Beam SDK memungkinkan Anda membuat DAG yang ekspresif, yang pada gilirannya memungkinkan Anda membuat pipeline multi-tahap streaming atau batch. Perpindahan data ditangani oleh pelari, dengan data yang dinyatakan sebagai objek PCollection, yang merupakan kumpulan elemen paralel yang tidak dapat diubah.

Diagram berikut menggambarkan alur ini.

Alur menggunakan DAG

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 paralel tinggi HPC Dataflow.

  • Ikuti tutorial untuk membuat pipeline yang menggunakan container kustom dengan library C++.