MongoDB için yazılan harita küçültme algoritmaları daha sonra Hadoop'a taşınabilir mi?


11

Şirketimizde, raporlar ve diğer analizler oluşturmak için harita azaltma algoritmaları çalıştırmamız gereken çok sayıda yapılandırılmamış veri içeren bir MongoDB veritabanımız var. Gerekli analizleri uygulamak için seçim yapabileceğimiz iki yaklaşımımız var:

  1. Bir yaklaşım MongoDB'den bir Hadoop kümesine veri çıkarmak ve analizi tamamen Hadoop platformunda yapmaktır. Bununla birlikte, bu, platformun (yazılım ve donanım) hazırlanması ve ekibin Hadoop ile çalışacak ve bunun için harita azaltma görevleri yazma konusunda eğitilmesi için önemli miktarda yatırım gerektirir.

  2. Başka bir yaklaşım, sadece harita azaltma algoritmalarını tasarlama çabamızı göstermek ve algoritmaları MongoDB harita azaltma işlevleri üzerinde çalıştırmaktır. Bu şekilde, raporları oluşturabilen nihai sistemin ilk prototipini oluşturabiliriz. MongoDB'nin harita azaltma işlevlerinin Hadoop'a kıyasla çok daha yavaş olduğunu biliyorum, ancak şu anda veriler o kadar da büyük değil, bu da bunu en azından altı ay boyunca değil.

Soru, ikinci yaklaşımı kullanarak ve MongoDB için algoritmaları yazarak, daha sonra çok az modifikasyon ve algoritma yeniden tasarımı ile Hadoop'a taşınabilir mi? MongoDB sadece JavaScript'i desteklemekle birlikte programlama dili farklılıklarının üstesinden gelmek kolaydır. Ancak, MongoDB ve Hadoop'un harita azaltma modelinde, bizi Hadoop'a taşımak için algoritmaları yeniden tasarlamaya zorlayabilecek temel farklılıklar var mı?


Yanıtlar:


4

Sadece mongo kullanarak prototip yaparsanız, sonunda kesinlikle bir çeviri görevi olacaktır.

Mongodb üzerinde bir MapReduce görevi çalıştırdığınızda, veri kaynağı ve yapısı yerleşiktir. Sonunda hadoop'a dönüştürdüğünüzde, veri yapılarınız aynı görünmeyebilir. Mongo verilerine doğrudan hadoop içinden erişmek için mongodb-hadoop konektöründen yararlanabilirsiniz, ancak bu düşündüğünüz kadar basit olmayacaktır. Dönüşümün en uygun şekilde nasıl tam olarak yapılacağını anlamanın zamanı, yerinde bir prototip (IMO) olduğunda haklı çıkarmak daha kolay olacaktır.

Mapreduce işlevlerini çevirmeniz gerekse de, temel sözde kod her iki sistem için de geçerli olmalıdır. MongoDB'de Java ile yapılamayan veya Java ile ilgisi daha karmaşık olan hiçbir şey bulamazsınız.


5

Java'da programlamadan Hadoop'ta harita azaltma algoritmalarını kullanabilirsiniz. Akış olarak adlandırılır ve Linux borulama gibi çalışır. Eğer terminale okumak ve yazmak için fonksiyonlarınızı taşıyabileceğinize inanıyorsanız, iyi çalışmalıdır. İşte Hadoop'ta Python'da yazılmış harita azaltma işlevlerinin nasıl kullanılacağını gösteren örnek blog yazısı.


1
Sorunun nihai çözümde kaçınılması gerektiğine inandığım işlem hala mongo yapar. Önemli bir bilgi edinmeniz için size bir oy verin.
Steve Kallestad

4

Ayrıca bir MongoDB-Hadoop bağlantısı da oluşturabilirsiniz .


Gönderiniz için teşekkür ederiz, ancak buraya bağlantılı çözümün genel bir açıklamasını ekleyebilir misiniz? Bağlantının sorunun cevabı olabilir, ancak yalnızca bağlantının yanıtları önerilmez.
Rubens
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.