Fırtına ve Hadoop arasındaki ödünleşmeler (MapReduce)


12

Birisi bana veri işleme için Hadoop Kümesi'nde Fırtına ve MapReduce arasında seçim yaparken oluşan ödünleşimlerden bahsedebilir mi? Tabii ki, bariz olanın yanı sıra, Hadoop (bir Hadoop Kümesinde MapReduce aracılığıyla işleme) bir toplu işleme sistemi ve Storm gerçek zamanlı bir işleme sistemidir.

Hadoop Eco Sistemi ile biraz çalıştım, ancak Storm ile çalışmadım. Birçok sunum ve makaleye baktıktan sonra, tatmin edici ve kapsamlı bir cevap bulamadım.

Not: Buradaki takas terimi benzer şeylerle karşılaştırmak için değildir. Bir toplu işlem sisteminde bulunmayan sonuçları gerçek zamanlı elde etmenin sonuçlarını temsil etmek içindir.

Yanıtlar:


13

MapReduce : Hataya dayanıklı dağıtılmış hesaplama çerçevesi. MapReduce, donanımdan kaynaklanan arızaları önlemek için çok fazla çalışmayla büyük miktarlarda veri üzerinde çalışmanıza olanak tanır. MapReduce yavaş olduğu için sonuçları anında hesaplamak için kötü bir seçimdir. (Tipik bir MapReduce işi mikrosaniye değil dakikalar veya saatler alır)

MapReduce işi bir dosyayı (veya bazı veri deposunu) girdi olarak alır ve bir sonuç dosyası yazar. Bu sonuçların bir uygulama için kullanılabilir olmasını istiyorsanız, bu verileri erişilebilir bir yere koymak sizin sorumluluğunuzdadır. Bu muhtemelen yavaştır ve görüntüleyebileceğiniz değerler ile sisteminizi geçerli durumunda temsil eden değerler arasında bir gecikme olacaktır.

MapReduce uygulamasını gerçek zamanlı sistemler oluştururken kullanmayı düşünürken yapmanız gereken önemli bir ayrım, modelinizi eğitmek ve modelinizi uygulamaktır. Model parametrelerinizin hızlı bir şekilde değişmediğini düşünüyorsanız, bunları MapReduce ile sığdırabilir ve ardından modelinizi uygulamak istediğinizde bu önceden takılmış parametrelere erişmek için bir mekanizmaya sahip olabilirsiniz.

Fırtına : Gerçek zamanlı, akışlı bir hesaplama sistemi. Fırtına çevrimiçi çerçevedir, yani bu anlamda çalışan bir uygulama ile etkileşime giren bir hizmettir. MapReduce'un aksine, uygulamanızda işlendikçe küçük veri parçaları (bir dosya değil) alır. Veriler üzerinde gerçekleştirilecek işlemlerin bir DAG'sini tanımlarsınız. Storm için yaygın ve basit bir kullanım durumu sayaçları izlemek ve bu bilgileri gerçek zamanlı bir gösterge tablosunu doldurmak için kullanmaktır.

Storm'un verilerinizi devam ettirmeyle ilgisi yoktur. Burada akış, önem verdiğiniz bilgileri saklamanın ve geri kalanını atmanın bir başka yoludur. Gerçekte, muhtemelen uygulamanızda zaten veri kaydeden bir kalıcılık katmanınız vardır ve bu da endişelerin iyi ve haklı bir şekilde ayrılmasıdır.

Daha fazla bilgi edinmek istiyorsanız ... MR ile parametrelere uyan ve modelleri farklı bir şekilde uygulayan gerçek zamanlı sistemler hakkında daha fazla bilgi edinmek istiyorsanız, gerçek zamanlı öneri motorları oluşturmaya verdiğim bir konuşma için slaytlar HBase.

Gerçek zamanlı sayma ve kalıcılığı ilginç bir şekilde birleştiren mükemmel bir makale Google Haberler Kişiselleştirme: Ölçeklenebilir Çevrimiçi İşbirlikçi Filtreleme

MR ve Fırtına'nın bir başka ilginç evliliği SummingBird . Summingbird, Storm veya MR yoluyla uygulanabilecek veri analizi işlemlerini tanımlamanızı sağlar.


9

Bu, kızartma tavası ile gümüş eşya çekmecesi arasındaki ödünleşimleri sormak gibidir. Bunlar karşılaştırdığınız iki şey değil. Bunları daha büyük bir projenin parçası olarak birlikte kullanabilirsiniz.

Hadoop'un kendisi bir şey değil, HDFS, Hive, HBase, MapReduce, vb. Gibi bir hizmet federasyonunun adı. Fırtına, HDFS veya HBase gibi bu hizmetlerin bazılarında kullandığınız bir şeydir. Bir akış işleme çerçevesidir. Genişletilmiş Hadoop ekosisteminde Spark Streaming gibi başkaları da var.

Ne zaman bir akış işleme çerçevesi seçersiniz? yeni verilere neredeyse gerçek zamanlı olarak yanıt vermeniz gerektiğinde. Bu tür bir araca ihtiyacınız varsa, bu tür bir aracı da dağıtırsınız.


Hadoop Echo sistemindeki MapReduce üzerinden işleme sadece Hadoop olarak atıfta bulundum çünkü bu yaygın olarak kullanılan bir terimdir (teknik olarak yanlış olmasına rağmen soruyu buna göre değiştirdim).
mbbce

Belki yanılıyorum ama bunun gerçek zamanlıya yakın işlemden çok daha fazlası olduğunu düşünüyorum. Aralarında ödünleşim olmasaydı, herkes neredeyse gerçek zamanlı olarak bir şeyler yapmak isterdi. Karma bir yaklaşım, her iki dünyanın da (bir dereceye kadar) en iyisini elde etmenizi sağlar. Bu yüzden Summingbird yaratıldı.
mbbce

1
Önemli bir fark, bir akış işleme sisteminin verilere sadece bir kez dokunabilmesi ve kendi başına uzun vadeli bir durumun olmamasıdır. Bazı problemler bu şekilde çözülemez. Bunun iyi olduğu sorunlar için, (yeniden okunabilir) depolamaya ilk kalıcı veri gerektirmeyen bir sistem kullanmak daha hızlıdır. MapReduce, Storm'dan doğal olarak daha yavaş değildir; her ikisi de kaplar. Farklı problemler için farklı paradigmalardır.
Sean Owen

Uzun süreli kalıcı duruma sahip olmamanız, bu tür gerçek zamanlıya yakın sistemlerin giriş güncellemelerini uzun süre biriktiremeyeceği anlamına mı geliyor? Beni bu konuda daha fazla tartışacak kaynaklara yönlendirebilir misiniz?
mbbce

Bu bir akış sisteminin tanımıdır. İsterseniz uzun vadeli duruma erişebilen bir sistem hayal ediyorsanız, gerçekte akış değildir.
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.