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:
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
Hier sind einige Anwendungsfälle, in denen MapReduce nicht sehr gut funktioniert.
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.
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.
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 strong> ausgerichtet ist, und dort wird es am besten funktionieren. Es gibt viele andere Distributionsframeworks mit ihren eigenen Eigenschaften.