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