Pengorbanan antara Storm dan Hadoop (MapReduce)

12

Dapatkah seseorang dengan ramah memberi tahu saya tentang pertukaran yang terlibat ketika memilih antara Storm dan MapReduce di Hadoop Cluster untuk pemrosesan data? Tentu saja, selain dari yang sudah jelas, bahwa Hadoop (pemrosesan melalui MapReduce dalam Hadoop Cluster) adalah sistem pemrosesan batch, dan Storm adalah sistem pemrosesan waktu-nyata.

Saya telah bekerja sedikit dengan Hadoop Eco System, tetapi saya belum pernah bekerja dengan Storm. Setelah melihat banyak presentasi dan artikel, saya masih belum dapat menemukan jawaban yang memuaskan dan komprehensif.

Catatan: Istilah tradeoff di sini tidak dimaksudkan untuk dibandingkan dengan hal serupa. Ini dimaksudkan untuk mewakili konsekuensi mendapatkan hasil secara real-time yang tidak ada dalam sistem pemrosesan batch.

mbbce
sumber

Jawaban:

13

MapReduce : Kerangka komputasi terdistribusi kesalahan-toleran. MapReduce memungkinkan Anda untuk mengoperasikan data dalam jumlah besar - dengan banyak pekerjaan yang dilakukan untuk mencegah kegagalan karena perangkat keras. MapReduce adalah pilihan yang buruk untuk menghitung hasil dengan cepat karena lambat. (Pekerjaan MapReduce biasanya dilakukan dalam urutan menit atau jam, bukan mikrodetik)

Pekerjaan MapReduce mengambil file (atau beberapa penyimpanan data) sebagai input dan menulis file hasil. Jika Anda ingin hasil ini tersedia untuk suatu aplikasi, Anda bertanggung jawab untuk meletakkan data ini di tempat yang dapat diakses. Ini kemungkinan lambat, dan akan ada jeda antara nilai-nilai yang dapat Anda tampilkan, dan nilai-nilai yang mewakili sistem Anda dalam keadaan saat ini.

Perbedaan penting untuk dibuat ketika mempertimbangkan menggunakan MapReduce dalam membangun sistem realtime adalah melatih model Anda, dan menerapkan model Anda. Jika Anda merasa parameter model Anda tidak berubah dengan cepat, Anda bisa memasangnya dengan MapReduce, dan kemudian memiliki mekanisme untuk mengakses parameter pra-pas ini ketika Anda ingin menerapkan model Anda.

Storm : Sistem komputasi streaming real-time. Storm adalah kerangka kerja online, yang berarti, dalam hal ini, layanan yang berinteraksi dengan aplikasi yang sedang berjalan. Berbeda dengan MapReduce, ia menerima potongan kecil data (bukan seluruh file) saat diproses dalam aplikasi Anda. Anda menentukan DAG operasi untuk dilakukan pada data. Kasus penggunaan yang umum dan sederhana untuk Storm adalah melacak penghitung, dan menggunakan informasi itu untuk mengisi dasbor waktu nyata.

Storm tidak ada hubungannya dengan data Anda. Di sini, streaming adalah cara lain untuk mengatakan menjaga informasi yang Anda pedulikan dan membuang sisanya. Pada kenyataannya, Anda mungkin memiliki lapisan ketekunan dalam aplikasi Anda yang telah mencatat data, dan karenanya ini merupakan pemisahan yang baik dan dapat dibenarkan.

Jika Anda ingin tahu lebih banyak ... Jika Anda ingin mempelajari lebih lanjut tentang sistem waktu-nyata yang sesuai dengan parameter MR dan menerapkan model dengan cara yang berbeda di sini adalah slide untuk ceramah yang saya berikan untuk membuat mesin rekomendasi waktu-nyata pada HBase.

Makalah yang sangat bagus yang menggabungkan penghitungan waktu nyata dan kegigihan dengan cara yang menarik adalah Personalisasi Berita Google: Penyaringan Kolaboratif Scalable Online

Perkawinan menarik MR dan Storm lainnya adalah SummingBird . Summingbird memungkinkan Anda untuk menentukan operasi analisis data yang dapat diterapkan melalui Storm atau MR.

j_houg
sumber
9

Ini seperti bertanya tentang pengorbanan antara penggorengan dan laci perak Anda. Mereka bukan dua hal yang Anda bandingkan, sungguh. Anda dapat menggunakannya bersama sebagai bagian dari proyek yang lebih besar.

Hadoop sendiri bukan satu hal, tetapi nama untuk federasi layanan, seperti HDFS, Hive, HBase, MapReduce, dll. Storm adalah sesuatu yang Anda gunakan dengan beberapa layanan ini, seperti HDFS atau HBase. Ini adalah kerangka kerja pemrosesan aliran. Ada yang lain dalam ekosistem Hadoop yang diperluas, seperti Spark Streaming.

Kapan Anda akan memilih kerangka kerja stream-processing? ketika Anda perlu bereaksi terhadap data baru dalam waktu nyata. Jika Anda membutuhkan alat semacam ini, Anda juga menggunakan alat semacam ini.

Sean Owen
sumber
Saya merujuk pemrosesan melalui MapReduce di sistem Hadoop Echo sebagai hanya Hadoop karena itulah istilah yang umum digunakan (Meskipun secara teknis salah dan saya telah mengubah pertanyaan yang sesuai).
mbbce
Mungkin saya salah, tetapi saya pikir ada lebih dari itu daripada hanya memiliki pemrosesan waktu dekat. Jika tidak ada trade-off di antara mereka, semua orang akan suka melakukan hal-hal dalam waktu dekat. Pendekatan hibrida memungkinkan untuk mendapatkan yang terbaik dari kedua dunia (sampai batas tertentu). Karena itulah Summingbird diciptakan.
mbbce
1
Perbedaan utama adalah bahwa sistem pemrosesan aliran hanya dapat menyentuh data satu kali, dan dengan sendirinya tidak memiliki keadaan jangka panjang. Beberapa masalah tidak dapat diselesaikan dengan cara ini. Untuk masalah yang tidak apa-apa, lebih cepat menggunakan sistem yang tidak memerlukan data tetap pertama ke dalam penyimpanan (dapat dibaca kembali). MapReduce pada dasarnya tidak lebih lambat dari Storm; keduanya adalah wadah. Mereka adalah paradigma yang berbeda untuk masalah yang berbeda.
Sean Owen
Dengan tidak memiliki kondisi persisten jangka panjang, apakah itu berarti sistem waktu-dekat seperti itu tidak dapat mengakumulasi pembaruan input dalam durasi yang lama? Bisakah Anda merujuk saya ke sumber daya yang membahas lebih lanjut tentang ini?
mbbce
Ini adalah semacam definisi sistem streaming. Jika Anda membayangkan sebuah sistem yang dapat mengakses keadaan jangka panjang sesuka hati, itu tidak benar-benar mengalir.
Sean Owen