Apache Spark vs Hadoop'un kullanım durumları nelerdir


30

Hadoop 2.0 ve YARN ile Hadoop'un artık yalnızca harita azaltma çözümleriyle bağlı olmadığı söyleniyor. Bu gelişme ile birlikte, Apache Spark vs Hadoop'un HDFS'nin her ikisine de oturduğunu düşünen kullanım durumları nelerdir? Spark'ın tanıtım belgelerini okudum, ancak merak ediyorum herhangi biri Spark'la Hadoop'a kıyasla daha verimli ve daha kolay bir sorunla karşılaştıysa merak ediyorum.

Yanıtlar:


40

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

açıklama için teşekkürler. Verileri hafızada tutmanın bazı ilginç sonuçları var gibi geliyor - Spark'ın Esnek Dağıtılmış Veri Kümesi kavramını biraz daha okuyacağım.
idclark

3
Benim gibi bu soruyu yaşayan birçok insan için net ve kullanışlı bir cevap için +1.
vefthym

3
Sean Owen'ın Spark hakkındaki yeni O'Reilly kitabının ortak yazarı olduğunu unutmayın. :-)
sheldonkreger

1

YARN hakkında emin değilim, ancak verilerin hesaplama düğümlerinin hafızasına güzel bir şekilde uyması durumunda Spark'ın Hadoop'a kıyasla (100 kat daha hızlı reklamı) gerçek bir fark yarattığını düşünüyorum. Sadece sabit disk erişimini engellediği için. Veriler belleğe uymuyorsa, tamponlama nedeniyle hala bir miktar kazanç vardır.


0

İyi bilgi @Sean Owen. Bir tane daha eklemek istiyorum. Spark, ortak hizmet katmanına yazabilme özelliğine sahip hem Toplu hem de Akış katmanlarına hitap eden Lambda mimarisinde Birleşik veri boru hatları oluşturmaya yardımcı olabilir. Toplu işlem ve Akış arasındaki mantığı yeniden kullanmak çok büyük bir avantajdır. Ayrıca Spark1.3'teki Streaming K-Means algoritmaları, 1.4'te mükemmel iş izleme ve işlem görselleştirmelerinin yanı sıra ML'ye de bir artıdır.


0

Spark'ı MapReduce - Hadoop'un işlem çerçevesi ile karşılaştırmak doğru olur . Çoğu durumda, Spark MapReduce'tan daha iyi performans gösterebilir. İlki, veriyi 100 kat daha hızlı işlemeyi mümkün kılan bellek içi veri işlemeyi mümkün kılar. Bu sebeple, hızlı bir şekilde görüşlere ihtiyacınız varsa, örneğin ihtiyaç duyduğunuzda, Spark tercih edilen bir seçenektir.

  • müşteri analitiklerini işletmek, örneğin bir müşterinin davranışını belirli bir müşteri segmentinin davranış kalıpları ile karşılaştırmak ve belirli eylemleri tetiklemek;
  • riskleri yönetmek ve çeşitli olası senaryoları tahmin etmek;
  • sahtekarlığı gerçek zamanlı olarak saptama;
  • endüstriyel büyük veri analizleri gerçekleştirin ve anormallikleri ve makine arızalarını tahmin edin.

Bununla birlikte, MapReduce gerçekten büyük veri kümelerini işlemede iyidir (işlem için gereken süre yeterli değilse). Ayrıca, MapReduce'un diske yazdığı / okuduğu gibi daha ekonomik bir çözüm. Ve diskler genellikle bellekten daha ucuzdur.


-1

Makine öğrenmesi, genç iplik eğirme çağına rağmen, Spark temelli çözümlerin mapreduce temelli çözümlerden hafif yıl önce olduğu bir problem türüne iyi bir örnektir.


2
Bunun doğru olduğunu sanmıyorum, ama sanırım ne elde ettiğinizi biliyorum: bellek içi yinelemeli hesaplamalar için çok daha hızlı çalışıyor ve çok fazla miktarda ML yinelemeli.
Sean Owen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.