Apa manfaat dari Apache Balok lebih dari Spark/Flink untuk batch processing?

Apache Balok mendukung beberapa pelari backends, termasuk Apache Spark dan Flink. I'm akrab dengan Spark/Flink dan I'm mencoba untuk melihat pro/kontra dari Balok untuk pemrosesan batch.

Melihat Beam word count contoh, rasanya hal ini sangat mirip dengan yang asli Spark/Flink setara, mungkin dengan sedikit lebih verbose sintaks.

Saat ini saya don't melihat manfaat besar dari memilih Balok lebih dari Spark/Flink untuk tugas seperti itu. Hanya pengamatan saya dapat membuat sejauh ini:

  • Pro: Abstraksi atas eksekusi yang berbeda backends.
  • Con: abstraksi Ini datang pada harga memiliki sedikit kontrol atas apa yang sebenarnya dijalankan di Spark/Flink.

Ada contoh yang lebih baik yang menyoroti lain yang pro/kontra dari model Balok? Apakah ada informasi tentang bagaimana kehilangan kontrol mempengaruhi kinerja?

Perhatikan bahwa I'm tidak meminta untuk perbedaan dalam streaming aspek, yang sebagian tertutup di pertanyaan dan diringkas dalam artikel ini (usang karena Spark 1.X).

Larutan

Ada's beberapa hal yang Beam menambahkan lebih banyak mesin yang ada.

  • Pemersatu batch dan streaming. Banyak sistem yang dapat menangani kedua batch dan grafik, tetapi mereka sering melakukannya melalui terpisah Api. Tapi di Balok, batch dan streaming hanya dua poin di spektrum latency, kelengkapan, dan biaya. Ada's tidak belajar/menulis ulang tebing dari batch ke streaming. Jadi jika anda menulis sebuah batch pipa hari ini, tapi besok anda latency perubahan kebutuhan, it's sangat mudah untuk menyesuaikan. Anda dapat melihat ini semacam perjalanan di Mobile Gaming contoh.

  • Api yang meningkatkan tingkat abstraksi: Balok's Api fokus pada menangkap sifat-sifat data dan logika anda, bukan membiarkan rincian mendasari runtime bocor melalui. Ini adalah kunci untuk portabilitas (lihat ayat berikutnya) dan juga dapat memberikan runtimes banyak fleksibilitas dalam cara mereka mengeksekusi. Sesuatu seperti ParDo fusion (alias fungsi komposisi) adalah cukup mendasar optimasi bahwa sebagian besar pelari yang sudah dilakukan. Optimasi lainnya masih sedang dilaksanakan untuk beberapa pelari. Misalnya, Balok's Sumber Api secara khusus dibangun untuk menghindari overspecification yang sharding dalam pipa. Sebaliknya, mereka memberikan pelari hak kait untuk secara dinamis menyeimbangkan bekerja di mesin yang tersedia. Hal ini dapat membuat perbedaan besar dalam kinerja pada dasarnya menghilangkan orang yg tersesat pecahan. Secara umum, kecerdasan lebih yang dapat kita buat menjadi pelari, lebih baik kita'll. Bahkan yang paling hati-hati tangan tuning akan gagal sebagai data, kode, dan lingkungan kerja.

  • Portabilitas di runtimes.: Karena data bentuk dan runtime persyaratan yang rapi dipisahkan, sama pipa dapat dijalankan dalam berbagai cara. Dan itu berarti bahwa anda don't akhirnya menulis ulang kode ketika anda harus pindah dari pada-prem ke awan atau dari mencoba dan benar sistem untuk sesuatu di ujung tombak. Anda dapat dengan mudah membandingkan pilihan untuk menemukan campuran dari lingkungan dan kinerja yang bekerja terbaik untuk kebutuhan anda saat ini. Dan yang mungkin menjadi campuran dari hal-hal pengolahan data sensitif pada premis dengan open source runner dan pengolahan data-data lain yang dikelola layanan di cloud.

Merancang model Balok untuk menjadi berguna abstraksi yang lebih banyak, berbeda dengan mesin yang lebih rumit. Balok tidak persimpangan fungsi semua mesin (terbatas!) atau serikat (terlalu jauh dari wastafel dapur!). Sebaliknya, Balok mencoba untuk berada di garis depan di mana pengolahan data yang terjadi, baik mendorong fungsi ke dalam dan menarik pola dari runtime engine.

  • Mengetik Negara adalah sebuah contoh dari fungsi yang ada di berbagai mesin dan diaktifkan menarik dan kasus penggunaan umum, tetapi tidak't awalnya dinyatakan dalam Balok. Kami baru-baru ini memperluas model Balok untuk menyertakan versi dari fungsi ini menurut Beam's prinsip-prinsip desain.
  • Dan sebaliknya, kami berharap bahwa Balok akan mempengaruhi peta jalan dari berbagai mesin serta. Misalnya, semantik Flink's DataStreams yang dipengaruhi oleh Balok (née Dataflow) model.
  • Hal ini juga berarti bahwa kemampuan tidak akan selalu sama persis sama di seluruh Balok yang berbeda pelari pada suatu titik tertentu dalam waktu. Sehingga's mengapa kita're menggunakan kemampuan matrix mencoba untuk berkomunikasi dengan jelas keadaan hal.
Komentar (0)