Was sind die Nachteile von mapreduce?

8

Was sind die Nachteile von mapreduce? Mapreduce bietet viele Vorteile. Aber ich würde gerne auch die Nachteile von mapreduce kennen.

    
DilanG 03.09.2013, 06:47
quelle

4 Antworten

13

Ich würde eher fragen, wenn mapreduce keine geeignete Wahl ist? Ich glaube nicht, dass Sie einen Nachteil sehen würden, wenn Sie es wie beabsichtigt verwenden. Allerdings gibt es bestimmte Fälle, in denen mapreduce keine geeignete Wahl ist:

  • Echtzeit Verarbeitung.
  • Es ist nicht immer sehr einfach, alles und jedes als MR-Programm zu implementieren.
  • Wenn Ihre Zwischenprozesse miteinander kommunizieren müssen (Aufträge, die isoliert ausgeführt werden).
  • Bei der Verarbeitung müssen viele Daten über das Netzwerk gemischt
  • sein
  • Wenn Sie Streaming-Daten verarbeiten müssen. MR eignet sich am besten für Batch-Prozesse große Datenmengen, die Sie bereits bei sich haben.
  • Wenn Sie mit einem eigenständigen System das gewünschte Ergebnis erzielen können. Es ist offensichtlich weniger schmerzhaft, ein eigenständiges System im Vergleich zu einem verteilten System zu konfigurieren und zu verwalten.
  • Wenn Sie OLTP benötigen. MR ist nicht für eine große Anzahl von kurzen Online-Transaktionen geeignet.

Es könnte mehrere andere Fälle geben. Aber das Wichtigste ist, wie gut Sie es benutzen. Zum Beispiel können Sie nicht erwarten, dass ein MR-Job Ihnen das Ergebnis in ein paar ms liefert. Sie können es auch nicht als seinen Nachteil zählen. Es ist nur, dass Sie es am falschen Ort verwenden. Und es gilt für jede Technologie, IMHO. Lange Rede, kurzer Sinn, denke lange nach, bevor du handelst.

Wenn Sie noch wollen, können Sie die oben genannten Punkte als Nachteile von mapreduce nehmen:)

HTH

    
Tariq 03.09.2013, 21:49
quelle
3

Hier sind einige Anwendungsfälle, in denen MapReduce nicht sehr gut funktioniert.

  1. Wenn Sie schnell eine Antwort benötigen. z.B. sag & lt; einige Sekunden (Use stream Verarbeitung, CEP usw. statt)
  2. Verarbeiten von Diagrammen
  3. Komplexe Algorithmen, z.B. einige maschinelle Lernalgorithmen wie SVM und sehen auch 13 Zeichen (Die Landschaft der Parallel-Computing-Forschung: Ein Blick von Berkeley)
  4. Iterationen - wenn Sie Daten immer wieder verarbeiten müssen. z.B. KMeans - benutze Spark
  5. Wenn die Kartenphase zu viele Schlüssel generiert. Thensorting dauert ewig.
  6. Verbinden von zwei großen Datensätzen mit komplexen Bedingungen (Gleiches gilt für über Hashing behandelt werden)
  7. Staatliche Operationen - z.B. Bewerten einer Zustandsmaschine Kaskadierende Aufgaben Einer nach dem anderen - mit Hive, könnte Big helfen, aber viel Overhead     Daten erneut lesen und analysieren.
srinath_perera 15.07.2014 07:44
quelle
1
  1. Zunächst streamt die Kartenausgabe . Wenn es möglich ist, sie im Speicher zu behalten, ist dies effizienter. Ich habe meinen Algorithmus ursprünglich mit MPI implementiert, aber als ich einige der Knoten hochskalierte, habe ich den Übergang gemacht.

  2. Der Nameode verfolgt die Metadaten aller Dateien in Ihrem verteilten Dateisystem. Ich lese ein Hadoop-Buch (Hadoop in Aktion) und erwähnte, dass Yahoo die Metadaten auf ungefähr 600 Bytes pro Datei schätzte. Dies bedeutet, wenn Sie zu viele Dateien haben, könnte Ihr Nameode Probleme haben.

  3. Wenn Sie die Streaming-API nicht verwenden möchten, müssen Sie Ihr Programm in der Sprache java schreiben. Ich habe zum Beispiel eine Übersetzung von C ++ gemacht. Dies hat einige Nebenwirkungen, zum Beispiel hat Java einen großen String-Overhead im Vergleich zu C. Da meine Software nur aus Strings besteht, ist das eine Art von Nachteil.

Um ehrlich zu sein, musste ich wirklich nachdenken, um Nachteile zu finden. Die Probleme, die MapReduce für mich gelöst hat, waren viel größer als die Probleme, die damit verbunden waren. Diese Liste ist definitiv nicht vollständig , nur ein paar erste Bemerkungen. Natürlich muss man bedenken, dass es auf Big Data ausgerichtet ist, und dort wird es am besten funktionieren. Es gibt viele andere Distributionsframeworks mit ihren eigenen Eigenschaften.

    
DDW 03.09.2013 08:07
quelle
1
  1. Sie müssen triviale Operationen wie Joins, Filter in map / reduce / Schlüssel / Wert-Mustern
  2. überdenken / umschreiben
  3. MapReduce setzt voraus, dass der Job parallelisiert werden kann. Dies ist jedoch möglicherweise nicht bei allen Datenverarbeitungsjobs der Fall.
  4. Es ist eng mit Java verbunden, natürlich haben Sie Pig und Hive zur Rettung, aber Sie verlieren die Flexibilität.
Rags 03.09.2013 08:07
quelle

Tags und Links