Apa kasus penggunaan untuk Apache Spark vs Hadoop

30

Dengan Hadoop 2.0 dan BENANG Hadoop seharusnya tidak lagi terikat hanya solusi pengurangan peta. Dengan kemajuan itu, apa kasus penggunaan untuk Apache Spark vs Hadoop mempertimbangkan keduanya duduk di atas HDFS? Saya sudah membaca dokumentasi pendahuluan untuk Spark, tetapi saya ingin tahu apakah ada orang yang menemukan masalah yang lebih efisien dan lebih mudah untuk diselesaikan dengan Spark dibandingkan dengan Hadoop.

idclark
sumber

Jawaban:

40

Hadoop berarti HDFS, BENANG, MapReduce, dan banyak hal lainnya. Apakah maksud Anda Spark vs MapReduce ? Karena Spark berjalan pada / dengan Hadoop, yang agak penting.

Alasan utama untuk menggunakan Spark adalah untuk kecepatan, dan ini berasal dari kenyataan bahwa pelaksanaannya dapat menyimpan data dalam memori antara tahap daripada selalu bertahan kembali ke HDFS setelah Peta atau Mengurangi. Keuntungan ini sangat menonjol untuk perhitungan berulang, yang memiliki puluhan tahap yang masing-masing menyentuh data yang sama. Di sinilah segalanya mungkin "100x" lebih cepat. Untuk pekerjaan sederhana, satu-lulus ETL-seperti yang dirancang MapReduce, itu tidak secara umum lebih cepat.

Alasan lain untuk menggunakan Spark adalah bahasa tingkat tinggi yang lebih bagus dibandingkan dengan MapReduce. Ini memberikan tampilan seperti pemrograman fungsional yang meniru Scala, yang jauh lebih bagus daripada menulis kode MapReduce. (Meskipun Anda harus menggunakan Scala, atau mengadopsi Java atau Python API yang kurang berkembang untuk Spark). Crunch dan Cascading sudah menyediakan abstraksi serupa di atas MapReduce, tetapi ini masih merupakan area di mana Spark bagus.

Akhirnya Spark memiliki sub-proyek yang masih muda namun menjanjikan untuk ML, analisis grafik, dan streaming, yang mengekspos API yang koheren dan serupa. Dengan MapReduce, Anda harus beralih ke beberapa proyek lain yang berbeda untuk ini (Mahout, Giraph, Storm). Sangat menyenangkan untuk memilikinya dalam satu paket, meskipun belum 'dipanggang'.

Mengapa Anda tidak menggunakan Spark? parafrase sendiri:

  • Spark terutama adalah Scala, dengan Java API porting; MapReduce mungkin lebih ramah dan lebih asli untuk pengembang berbasis Java
  • Ada lebih banyak keahlian MapReduce di luar sana sekarang daripada Spark
  • Untuk pekerjaan paralel-paralel, satu-lintasan, seperti ETL yang dirancang untuk MapReduce, MapReduce memiliki bobot lebih ringan dibandingkan dengan Spark yang setara.
  • Spark sudah cukup matang, begitu juga BENANG sekarang, tetapi Spark-on-BENANG masih cukup baru. Keduanya mungkin belum terintegrasi secara optimal. Misalnya sampai saat ini saya tidak berpikir Spark bisa meminta YARN untuk alokasi berdasarkan jumlah core? Yaitu: MapReduce mungkin lebih mudah dipahami, dikelola, dan disesuaikan
Sean Owen
sumber
terimakasih atas klarifikasinya. Menyimpan data dalam memori kedengarannya memiliki beberapa implikasi menarik - Saya akan membaca konsep Spark's Resilient Distributed Dataset sedikit lebih banyak.
idclark
3
Memberi +1 untuk jawaban yang sangat jelas dan bermanfaat bagi banyak orang yang memiliki pertanyaan ini, seperti saya.
vefthym
3
Ingatlah bahwa Sean Owen adalah rekan penulis buku O'Reilly baru tentang Spark. :-)
sheldonkreger
1

Tidak yakin dengan BENANG, tetapi saya berpikir bahwa Spark membuat perbedaan nyata dibandingkan dengan Hadoop (diiklankan 100 kali lebih cepat) jika data dapat masuk dengan baik dalam memori node komputasi. Hanya karena itu menghindari akses hard disk. Jika data tidak sesuai dengan memori, masih ada keuntungan karena buffering.

iliasfl
sumber
0

Info bagus @Sean Owen. Ingin menambahkan satu tambahan. Spark dapat membantu membangun saluran pipa data terpadu dalam arsitektur Lambda yang menangani lapisan Batch dan Streaming dengan kemampuan untuk menulis ke lapisan penyajian umum. Ini adalah keuntungan besar untuk menggunakan kembali logika antara batch dan Streaming. Algoritma Streaming K-Means juga di Spark1.3 merupakan nilai tambah untuk ML selain dari pemantauan pekerjaan yang sangat baik dan proses visualisasi di 1.4.

Srini Vemula
sumber
0

Akan adil untuk membandingkan Spark dengan MapReduce - kerangka pemrosesan Hadoop. Dalam sebagian besar kasus, Spark dapat mengungguli MapReduce. Yang pertama memungkinkan pemrosesan data dalam memori, yang memungkinkan untuk memproses data hingga 100 kali lebih cepat. Karena alasan ini, Spark adalah opsi yang disukai jika Anda membutuhkan wawasan dengan cepat, misalnya, jika perlu

  • menjalankan analitik pelanggan, misalnya membandingkan perilaku pelanggan dengan pola perilaku segmen pelanggan tertentu dan memicu tindakan tertentu;
  • mengelola risiko dan memperkirakan berbagai skenario yang mungkin;
  • mendeteksi penipuan secara real-time;
  • menjalankan analitik data besar industri dan memprediksi anomali dan kegagalan mesin.

Namun, MapReduce pandai memproses kumpulan data yang sangat besar (jika Anda baik-baik saja dengan waktu yang diperlukan untuk pemrosesan). Selain itu, ini solusi yang lebih ekonomis, karena MapReduce membaca dari / menulis ke disk. Dan disk umumnya lebih murah daripada memori.

Irene
sumber
-1

Pembelajaran mesin adalah contoh yang baik dari jenis masalah di mana solusi berbasis Spark adalah tahun cahaya di depan solusi berbasis mapreduce, meskipun usia muda spark-on-yarn.

Max Gibiansky
sumber
2
Saya tidak berpikir ini benar, tetapi saya pikir saya tahu apa yang Anda maksud: in-memory bekerja jauh lebih cepat untuk perhitungan berulang dan banyak ML berulang.
Sean Owen