Können für MongoDB geschriebene Algorithmen zur Kartenreduzierung später auf Hadoop portiert werden?

11

In unserem Unternehmen verfügen wir über eine MongoDB-Datenbank mit vielen unstrukturierten Daten, für die wir kartenreduzierende Algorithmen ausführen müssen, um Berichte und andere Analysen zu erstellen. Für die Implementierung der erforderlichen Analysen stehen zwei Ansätze zur Auswahl:

  1. Ein Ansatz besteht darin, die Daten aus MongoDB in einen Hadoop-Cluster zu extrahieren und die Analyse vollständig auf der Hadoop-Plattform durchzuführen. Dies erfordert jedoch erhebliche Investitionen in die Vorbereitung der Plattform (Software und Hardware) und die Schulung des Teams für die Arbeit mit Hadoop und das Schreiben von Aufgaben zur Kartenreduzierung.

  2. Ein anderer Ansatz besteht darin, sich nur auf das Entwerfen der Algorithmen zur Kartenreduzierung zu konzentrieren und die Algorithmen auf MongoDB-Funktionen zur Kartenreduzierung auszuführen. Auf diese Weise können wir einen ersten Prototyp des endgültigen Systems erstellen, mit dem die Berichte erstellt werden können. Ich weiß, dass die kartenreduzierenden Funktionen der MongoDB im Vergleich zu Hadoop viel langsamer sind, aber derzeit sind die Daten nicht so groß, dass dies noch ein Engpass ist, zumindest nicht für die nächsten sechs Monate.

Die Frage ist, ob mit dem zweiten Ansatz und dem Schreiben der Algorithmen für MongoDB diese später mit wenig erforderlichen Änderungen und Neugestaltungen des Algorithmus nach Hadoop portiert werden können. MongoDB unterstützt nur JavaScript, aber Unterschiede in der Programmiersprache sind einfach zu handhaben. Gibt es jedoch grundlegende Unterschiede im Kartenreduzierungsmodell von MongoDB und Hadoop, die uns dazu zwingen könnten, Algorithmen für die Portierung nach Hadoop grundlegend neu zu gestalten?

Amir Ali Akbari
quelle

Antworten:

4

Am Ende wird es definitiv eine Übersetzungsaufgabe geben, wenn Sie nur mit Mongo einen Prototyp erstellen.

Wenn Sie eine MapReduce-Aufgabe auf mongodb ausführen, sind Datenquelle und Struktur integriert. Wenn Sie schließlich in hadoop konvertieren, sehen Ihre Datenstrukturen möglicherweise nicht gleich aus. Sie könnten den Mongodb-Hadoop-Connector nutzen, um direkt von Hadoop aus auf Mongo-Daten zuzugreifen, aber das ist nicht ganz so einfach, wie Sie vielleicht denken. Die Zeit, um herauszufinden, wie genau die Konvertierung am besten durchgeführt werden kann, ist einfacher zu rechtfertigen, sobald Sie einen Prototyp, IMO, installiert haben.

Während Sie Mapreduce-Funktionen übersetzen müssen, sollte der grundlegende Pseudocode für beide Systeme gut gelten. In MongoDB finden Sie nichts, was mit Java nicht möglich oder mit Java wesentlich komplexer ist.

Steve Kallestad
quelle
5

Sie können Map-Reduction-Algorithmen in Hadoop verwenden, ohne sie in Java zu programmieren. Es heißt Streaming und funktioniert wie Linux-Piping. Wenn Sie glauben, dass Sie Ihre Funktionen zum Lesen und Schreiben auf das Terminal portieren können, sollte dies gut funktionieren. Hier ist ein Beispiel für einen Blog-Beitrag, der zeigt, wie in Python in Hadoop geschriebene Funktionen zur Kartenreduzierung verwendet werden.

Damian Melniczuk
quelle
1
Das hätte noch Mongo, der die Verarbeitung durchführt, was meiner Meinung nach bei der endgültigen Lösung zu vermeiden ist. Geben Sie Ihnen trotzdem eine Gegenstimme für das Aufbringen eines wichtigen Wissens.
Steve Kallestad
4

Sie können auch eine MongoDB-Hadoop- Verbindung erstellen .

Phyrox
quelle
Vielen Dank für Ihren Beitrag, aber können Sie hier eine allgemeine Beschreibung der verknüpften Lösung einfügen? Der Link enthält möglicherweise die Antwort auf die Frage, es wird jedoch davon abgeraten, nur auf Links zu antworten.
Rubens