Hadoop, HDFS, YARN, MapReduce ve daha birçok şey anlamına gelir. Spark vs MapReduce'u mu kastediyorsunuz ? Çünkü Spark, Hadoop'la / birlikte çalışıyor, bu da esas mesele.
Spark'ı kullanmanın birincil nedeni hız içindir ve bu, yürütme işleminin bir Harita veya Küçültmeden sonra daima HDFS'ye geri dönmek yerine, aşamalar arasında verileri bellekte tutabilmesi gerçeğinden kaynaklanmaktadır. Bu avantaj, her biri aynı verilere temas eden onlarca aşamaya sahip yinelemeli hesaplamalar için çok belirgindir. İşlerin daha hızlı "100x" olabileceği yer burasıdır. MapReduce'un tasarlandığı basit, tek geçişli ETL benzeri işler için, genel olarak daha hızlı değildir.
Spark'ı kullanmanın bir diğer nedeni de MapReduce ile karşılaştırıldığında daha güzel olan üst seviye dili. MapReduce kodunu yazmaktan çok daha güzel olan Scala'yı taklit eden işlevsel bir programlama görünümü sağlar. (Scala'yı kullanmanız veya biraz daha az gelişmiş Java veya Spark için Python API'lerini kullanmanız gerekmesine rağmen). Crunch ve Cascading, zaten MapReduce'un üstüne benzer bir soyutlama sağlıyor, ancak bu hala Spark'ın güzel olduğu bir alan.
Sonunda Spark, benzer, tutarlı bir API ortaya koyan ML, grafik analizi ve akış için henüz genç ama gelecek vaat eden alt projelere sahip. MapReduce ile bunun için başka birkaç farklı projeye başvurmanız gerekecektir (Mahout, Giraph, Storm). Henüz 'pişirilmemiş' olmasına rağmen tek bir pakette olması güzel.
Neden Spark kullanmıyorsun? kendimi felç etmek :
- Spark, öncelikle Java API'leri olan Scala'dır; MapReduce, Java tabanlı geliştiriciler için daha dostça ve daha yerel olabilir
- Dışarıda şimdi Spark'dan daha fazla MapReduce uzmanlığı var
- MapReduce için tasarlanan veri paralel, tek geçişli ETL benzeri işler için MapReduce, Spark eşdeğeri ile karşılaştırıldığında daha hafiftir.
- Kıvılcım oldukça olgun, ve şimdi de YARN, ama Spark-on-YARN hala oldukça yeni. İkisi henüz optimal olarak entegre edilemeyebilir. Örneğin yakın zamana kadar Spark'ın YARN'dan çekirdek sayısına dayalı tahsisatlar isteyebileceğini sanmıyorum. Şöyle ki: MapReduce'u anlamak, yönetmek ve ayarlamak daha kolay olabilir