Tentang workload HPC Dataflow yang sangat paralel

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.

Selain itu, Dataflow menyertakan berbagai fitur keamanan:

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:

  1. 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.

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

  3. Gunakan sistem untuk mendistribusikan penghitungan ke host dan mengambil data dari sumber, lalu mewujudkan hasilnya 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 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.

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 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.

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 selanjutnya

  • Pelajari praktik terbaik untuk menggunakan pipeline Dataflow HPC yang sangat paralel.

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