Ben hadoop ve mapauce'u cloudera ile test ettim ve oldukça havalı buldum, en güncel ve alakalı BigData çözümü olduğunu düşündüm. Ancak birkaç gün önce şunu buldum:
https://spark.incubator.apache.org/
Bir "Yıldırım hızlı küme bilgi işlem sistemi", bir Hadoop kümesinin üstünde çalışabilir ve görünüşte haritacığı ezebilir. RAM'da mapreduce'dan daha çok çalıştığını gördüm.
Tek bir makinede alabileceğiniz G / Ç sorunlarının üstesinden gelmek için küme bilgisini yapmanız gerektiğinde, mapreduce'un hala geçerli olduğunu düşünüyorum.
Ancak Spark, mapreduce'un yaptığı işleri yapabildiğinden ve birkaç operasyonda daha etkili olabileceğinden, MapReduce'un sonu değil midir? Ya da MapReduce'un yapabileceği bir şey var mı, yoksa MapReduce, Spark'den belli bir bağlamda daha verimli olabilir mi?
MapReduce doğada parti odaklı. Bu nedenle, Hive ve Pig gibi MR uygulamalarının üstündeki tüm çerçeveler de doğada parti odaklıdır. Makine Öğrenimi ve etkileşimli analizde olduğu gibi yinelemeli işleme için, Hadoop / MR gereksinimi karşılamamaktadır. İşte Cloudera'dan güzel bir yazı
Why Spark bunu çok güzel özetliyor.
MR'un sonu değil. Bu yazının sonucunda Hadoop, Spark ile kıyaslandığında çok olgun ve birçok satıcı bunu destekliyor. Zamanla değişecek. Cloudera, Spark'i CDH'de kullanmaya başladı ve zamanla daha fazla satıcı, Büyük Veri dağıtımına dahil ediyor ve bunun için ticari destek sağlıyordu. MR ve Spark'i öngörülebilir bir gelecekte paralel göreceğiz.
Ayrıca Hadoop 2 (aka YARN) ile MR ve diğer modeller (Spark dahil) tek bir kümede çalıştırılabilir. Yani Hadoop hiçbir yere gitmiyor.
Ne yapmak istediğine bağlı.
MapReduce'un en büyük gücü çok sayıda büyük metin dosyası işliyor. Hadoop'un uygulaması string işleme etrafında inşa edildi ve çok I / O ağır.
MapReduce ile ilgili problem, insanların kolay paralellik çekicisini görmesi ve her şeyin bir çivi gibi görünmeye başlamasıdır. Ne yazık ki Hadoop'un büyük metin dosyalarını işlemek dışındaki herhangi bir şey için performansı çok kötü. Eğer iyi bir paralel kod yazıyorsanız, Hadoop'un ilk VM'sini bile üretmesinden önce genellikle bitirebilirsiniz. Kendi kodlarımda 100x farklar gördüm.
Spark, HERHANGİ BİR ŞEKİLDE I / O'ya güvenme gibi birçok Hadoop'un genel giderlerini ortadan kaldırır. Bunun yerine her şeyi hafızada tutar. Yeterli hafızaya sahipseniz harika, eğer yapmazsanız çok iyi değil.
Unutmayın ki Spark, bir yedek değil, Hadoop'un bir uzantısıdır. Günlükleri işlemek için Hadoop kullanırsanız, Spark muhtemelen yardımcı olmaz. Eğer daha karmaşık, belki de sıkı sıkıya bağlı problemleriniz varsa Spark bu konuda çok yardımcı olacaktır. Ayrıca, on-line hesaplamalar için Spark's Scala arayüzünü kullanabilirsiniz.