Apache Kafka vs Apache Storm


102

Apache Kafka: Sistem pesan terdistribusi
Apache Storm: Pemrosesan Pesan Real Time

Bagaimana kita bisa menggunakan kedua teknologi dalam pipeline data real-time untuk memproses data peristiwa?

Dalam hal pipeline data waktu nyata, keduanya menurut saya melakukan pekerjaan yang sama. Bagaimana kita dapat menggunakan kedua teknologi pada pipeline data?

Jawaban:


158

Anda menggunakan Apache Kafka sebagai antrian terdistribusi dan kuat yang dapat menangani data volume tinggi dan memungkinkan Anda meneruskan pesan dari satu titik akhir ke titik akhir lainnya.

Badai bukanlah antrian. Ini adalah sistem yang telah mendistribusikan kemampuan pemrosesan waktu nyata, yang berarti Anda dapat mengeksekusi semua jenis manipulasi pada data waktu nyata secara paralel.

Alur umum dari alat-alat ini (seperti yang saya ketahui) adalah sebagai berikut:

real-time-system -> Kafka -> Storm -> NoSql -> BI (opsional)

Jadi, Anda memiliki aplikasi waktu nyata yang menangani data volume tinggi, mengirimkannya ke antrean Kafka. Storm menarik data dari kafka dan menerapkan beberapa manipulasi yang diperlukan. Pada titik ini Anda biasanya ingin mendapatkan beberapa manfaat dari data ini, jadi Anda dapat mengirimkannya ke beberapa Nosql db untuk penghitungan BI tambahan, atau Anda dapat menanyakan NoSql ini dari sistem lain.


Terima kasih Forhas. Ini sangat membantu. Satu pertanyaan, bisakah kita menggunakan Apache Kafka untuk menggabungkan file log Apache atau apakah kita masih memerlukan Flume untuk melakukannya?
Ananth Duari

Saya kira Anda bisa meskipun saya tidak terbiasa dengan aliran seperti itu. Mungkin Anda dapat memeriksa Splunk untuk kebutuhan Anda (tebak saja ..).
untuk

Saya merekomendasikan untuk menggunakan GrayLog dan menghubungkannya ke apache kafka. GrayLog sudah memiliki plugin input kakfa.
saeid rastak

36

Kafka dan Storm memiliki tujuan yang sedikit berbeda:

Kafka adalah broker pesan terdistribusi yang dapat menangani pesan dalam jumlah besar per detik. Ia menggunakan paradigma publish-subscribe dan bergantung pada topik dan partisi. Kafka menggunakan Zookeeper untuk berbagi dan menyelamatkan negara antar broker. Jadi Kafka pada dasarnya bertanggung jawab untuk mentransfer pesan dari satu mesin ke mesin lainnya.

Storm adalah sistem analitik real-time yang skalabel, toleran terhadap kesalahan (berpikir seperti Hadoop dalam waktu nyata). Ini mengkonsumsi data dari sumber (Spouts) dan meneruskannya ke pipa (Bolts). Anda dapat menggabungkannya dalam topologi. Jadi Storm pada dasarnya adalah unit komputasi (agregasi, pembelajaran mesin).


Tetapi Anda dapat menggunakannya bersama-sama: misalnya aplikasi Anda menggunakan kafka untuk mengirim data ke server lain yang menggunakan badai untuk membuat beberapa perhitungan di atasnya.


32

Saya tahu bahwa ini adalah utas yang lebih lama dan perbandingan Apache Kafka dan Storm valid dan benar ketika ditulis, tetapi perlu dicatat bahwa Apache Kafka telah berkembang pesat selama bertahun-tahun dan sejak versi 0.10 (April 2016) Kafka telah disertakan API Kafka Streams yang menyediakan kemampuan pemrosesan aliran tanpa memerlukan perangkat lunak tambahan seperti Storm. Kafka juga menyertakan Connect API untuk menghubungkan ke berbagai sumber dan sink (tujuan) data.

Blog pengumuman - https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

Dokumentasi Apache saat ini - https://kafka.apache.org/documentation/streams/

Dalam 0.11 Kafka, fungsi pemrosesan aliran diperluas lebih lanjut untuk menyediakan Semantik dan Transaksi Tepat Sekali.

https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/


1
Jadi pada dasarnya sekarang sistem real-time berkomunikasi langsung dengan Kafka sebagai titik akhir dan Kafka menyimpan misalnya ke DB?
petugas masalah

2
Ya, sekarang Kafka menyertakan Kafka Connect untuk berbicara dengan database dan sumber data lainnya (syslog, JMS, file log, dll), dan Kafka Streams untuk melakukan pemrosesan streaming (bergabung, Transformasi, filter, agregasi), dan kembali ke Kafka Connect untuk menulis ke database atau repositori lain.
Hans Jespersen

15

Begini Cara kerjanya

Kafka - Untuk menyediakan streaming waktu nyata

Storm - Untuk melakukan beberapa operasi di aliran itu

Anda dapat melihat proyek GitHub https://github.com/abhishekgoel137/kafka-nodejs-d3js .

(D3js adalah pustaka representasi grafik)

Kasus ideal:

Realtime application -> Kafka -> Storm -> NoSQL -> d3js

Repositori ini didasarkan pada:

Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js

1
Abhishek, tautan yang disebutkan dalam jawaban di atas rusak. Bisakah Anda memperbarui tautan?
Abhijit Gaikwad

4

Seperti yang dijelaskan semua orang bahwa Apache Kafka: adalah antrean perpesanan berkelanjutan

Apache Storm: adalah alat pemrosesan berkelanjutan

di sini, dalam aspek ini Kafka akan mendapatkan data dari situs web mana pun seperti FB, Twitter dengan menggunakan API dan data tersebut diproses dengan menggunakan Apache Storm dan Anda dapat menyimpan data yang diproses baik di database mana pun yang Anda suka.

https://github.com/miguno/kafka-storm-starter

Ikuti saja Anda akan mendapatkan beberapa ide


3

Ketika saya memiliki kasus penggunaan yang mengharuskan saya untuk memvisualisasikan atau mewaspadai pola (pikirkan tren twitter), sambil terus memproses kejadian, saya memiliki beberapa pola.
NiFi akan memungkinkan saya untuk memproses sebuah acara dan memperbarui penyimpanan data yang persisten dengan agregasi batch yang rendah (er) dengan pengkodean khusus yang sangat, sangat sedikit.
Storm (banyak pengkodean khusus) memungkinkan saya mengakses hampir secara waktu nyata ke acara yang sedang tren.
Jika saya bisa menunggu beberapa detik, maka saya bisa keluar dari kafka, menjadi hdfs (Parquet) dan proses.
Jika saya perlu tahu dalam hitungan detik, saya perlu NiFi, dan bahkan mungkin Storm. (Pikirkan memantau ribuan stasiun bumi, di mana saya perlu melihat kondisi cuaca wilayah kecil untuk peringatan tornado).


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.