Workload yang sangat paralel, yang juga dikenal sebagai workload paralel memalukan, biasa terjadi di perusahaan keuangan, media, dan ilmu hayati. Untuk beban kerja paralel seperti ini, perusahaan biasanya men-deploy cluster node komputasi. Setiap node dapat melakukan tugas pemrosesan independen, dalam konfigurasi yang disebut sebagai komputasi petak. Guna memproses data untuk workload paralel, Anda dapat menggunakan Apache Beam dengan Dataflow. Untuk informasi selengkapnya tentang Apache Beam, lihat panduan pemrograman Apache Beam.
Penggunaan Dataflow untuk beban kerja yang sangat paralel akan memberikan banyak manfaat.
- Ciptakan alur kerja yang terkelola sepenuhnya dengan pemrosesan dan orkestrasi data di pipeline yang sama.
- Antarmuka pengguna dan API Dataflow menyertakan fitur kemampuan observasi.
- Dataflow memiliki logging terpusat untuk semua tahap pipeline.
- Dataflow menawarkan penskalaan otomatis untuk memaksimalkan performa dan mengoptimalkan penggunaan resource.
- Dataflow memiliki toleransi kesalahan dan menyediakan load balancing dinamis.
- Dataflow menawarkan deteksi dan koreksi yang sulit.
- Gunakan satu sistem untuk semua aspek pipeline, baik untuk pra-pemrosesan maupun pasca-pemrosesan serta untuk pemrosesan tugas. Anda bahkan dapat menggunakan kode C++ yang ada di pipeline.
- Gunakan bawaan persis setelah pemrosesan 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 berkaitan dengan tugas Dataflow Anda.
- Gunakan jaringan VPC.
Workload ini memerlukan distribusi data ke fungsi yang berjalan di banyak core. Distribusi ini sering kali memerlukan pembacaan serentak yang sangat tinggi, diikuti dengan fan-out data yang besar, yang diserap oleh sistem downstream. Kompetensi inti dari Dataflow adalah distribusi workload batch dan stream 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, performa, skalabilitas, ketersediaan, dan kebutuhan keamanan akan ditangani secara otomatis.
Gabungkan kode eksternal ke pipeline Anda
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. Dengan menyertakan biner C++, Anda akan dapat membuka jenis beban kerja ini menggunakan layanan terkelola sepenuhnya. API ini juga memberi Anda kemampuan untuk membuat pipeline lengkap menggunakan grafik asiklik terarah (DAG) canggih.
Pendekatan yang sama untuk menjalankan biner C++ juga relevan untuk kode yang ditulis dalam bahasa lain tempat Anda dapat mengompilasi biner mandiri.
Pipeline sangat paralel 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 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 terikat atau terbatas. Sumber tak terikat sebagian besar dikonversi menjadi sumber terikat untuk mengakomodasi teknologi yang digunakan untuk task farming.
Lakukan pra-pemrosesan data mentah menjadi bentuk data dan encoding yang dapat digunakan oleh komponen task farming.
Gunakan sistem untuk mendistribusikan penghitungan ke host dan mengambil data dari sumber, lalu terwujudkan hasilnya untuk pascaanalisis.
Lakukan pascaanalisis untuk mengonversi hasil menjadi {i>output<i}.
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 berjalannya beberapa pipeline.
Dengan lokalitas data, Anda tidak perlu secara eksplisit mewujud dan melakukan dematerialisasi di antara batas tahap, sehingga meningkatkan efisiensi.
Dengan telemetri dalam sistem yang lebih baik, informasi tentang total byte dalam tahapan tersedia untuk 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 standar 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 harus beralih dari tugas ke data. PTransform
berisi
DoFn
,
yang memiliki fungsi proses yang mengambil 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 keseluruhan alur kerja. Anda tidak perlu menghasilkan data ke database atau penyimpanan.
Komponen Google Cloud yang digunakan dengan alur kerja yang sangat paralel
Aplikasi komputasi petak mengharuskan data didistribusikan ke fungsi yang berjalan pada banyak core. Pola ini sering memerlukan pembacaan konkurensi yang tinggi dan sering kali diikuti dengan fan-out data yang besar yang diserap oleh sistem downstream.
Dataflow terintegrasi dengan layanan terkelola Google Cloud lainnya yang dapat menyerap data I/O skala besar yang diparalelkan:
- 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 bersamaan, layanan ini memberikan solusi menarik untuk workload yang sangat paralel.
Arsitektur umum untuk workload yang sangat paralel yang berjalan di Google Cloud mencakup hal berikut:
Dataflow Runner untuk Apache Beam. Runner ini mendistribusikan tugas ke node petak dengan alur pemrosesan yang berasal dari DAG. Dengan satu DAG Apache Beam, Anda dapat menentukan pipeline multi-tahap yang kompleks, dengan tahapan pipeline paralel yang dapat disatukan kembali menggunakan side-input atau join.
Cloud Storage. Layanan ini menyediakan lokasi untuk tahap 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 lainnya. 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 penyaluran data live, 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 dibutuhkan oleh fase pemrosesan.
Untuk beban burst tinggi yang diperlukan oleh komputasi petak, Anda perlu memahami karakteristik performa Cloud Storage. Untuk mengetahui informasi selengkapnya tentang performa penyajian data Cloud Storage, lihat Panduan Distribusi Akses dan Rasio Permintaan dalam dokumentasi Cloud Storage.
Bigtable
Bigtable adalah layanan database NoSQL berperforma tinggi yang dioptimalkan untuk workload analisis dan operasional yang besar. Bigtable merupakan pelengkap untuk Dataflow. Dengan karakteristik utama Bigtable, pembacaan dan penulisan latensi rendah (6 md pada persentil ke-90), memungkinkannya untuk menangani ribuan klien serentak dan beban kerja burst yang berat. Fitur-fitur ini menjadikan Bigtable ideal sebagai sink dan sebagai sumber data dalam fungsi DoFn
pada fase pemrosesan Dataflow.
BigQuery
BigQuery adalah data warehouse perusahaan yang cepat, ekonomis, dan terkelola sepenuhnya untuk analisis data berskala besar. Hasil petak sering digunakan untuk analisis, dan memungkinkan Anda menjalankan agregasi berskala 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. Alat ini sama efektifnya dengan middleware berorientasi pesan untuk integrasi layanan atau sebagai antrean untuk paralelkan tugas.
DAG Dataflow
Apache Beam SDK memungkinkan Anda membuat DAG yang ekspresif, sehingga Anda dapat
membuat pipeline multi-tahap streaming atau batch. Perpindahan 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 kode yang ditentukan pengguna. Anda juga dapat menggunakan kode bawaan, seperti C++, untuk kode yang ditentukan pengguna.
Langkah selanjutnya
Pelajari praktik terbaik untuk menggunakan pipeline HPC Dataflow yang sangat paralel.
Ikuti tutorial untuk membuat pipeline yang menggunakan container kustom dengan library C++.