Wie zu optimieren MapReduce Aufgaben

Neben der Optimierung des eigentlichen Anwendungscode mit MapReduce für große Datenprojekte, können Sie einige Optimierungstechniken verwenden, um die Zuverlässigkeit und die Leistung zu verbessern. Sie fallen in drei Kategorien: Hardware / Netzwerk-Topologie, Synchronisation und Dateisystem.

Große Daten Hardware / Netzwerktopologie

Unabhängig von Anwendung, die schnellste Hardware und Netzwerke werden die schnellsten Laufzeiten für Ihre Software wahrscheinlich ergeben. Ein deutlicher Vorteil von Karte verkleinern ist die Fähigkeit, auf kostengünstige Cluster von Standard-Hardware und Standardnetze laufen. Wenn Sie nicht darauf achten, wo Ihre Server physisch organisiert sind, werden Sie nicht die beste Leistung und ein hohes Maß an Fehlertoleranz erhalten notwendigen großen Daten Aufgaben zu unterstützen.

Commodity-Hardware wird oft in Racks im Rechenzentrum gespeichert. Die Nähe der Hardware innerhalb des Racks bietet einen Leistungsvorteil gegenüber Verschieben von Daten und / oder Code von Rack-Rack. Bei der Umsetzung können Sie konfigurieren Ihr Karte verkleinern Motor bewusst und nutzen diese Nähe zu sein.

Halten Sie die Daten und der Code zusammen ist eines der besten Optimierungen für Karte verkleinern Performance. Im Wesentlichen müssen die näher auf die Hardware-Verarbeitungselemente zueinander sind, desto weniger Latenz Sie beschäftigen.

Große Datensynchronisation

Weil es ineffizient ist, alle Ergebnisse Ihrer Zuordnung innerhalb des Knotens zu halten, kopieren Sie die Synchronisationsmechanismen der Mapping-Ergebnisse auf die Reduzierung Knoten sofort, nachdem sie abgeschlossen haben, so dass die Verarbeitung sofort beginnen kann. Alle Werte aus dem gleichen Schlüssel mit dem gleichen Reduktions gesendet, wieder eine höhere Leistung sicherzustellen und eine bessere Effizienz.

Die Reduktionsausgangssignale werden direkt auf das Dateisystem geschrieben, so muss es für beste Ergebnisse entworfen und abgestimmt werden.

Big Data-Dateisystem

Ihre MapReduce-Implementierung wird durch ein verteiltes Dateisystem unterstützt. Der wesentliche Unterschied zwischen lokalen und verteilten Dateisystemen Kapazität. Um die riesigen Mengen an Informationen in einer großen Datenwelt umgehen, müssen Dateisysteme auf mehreren Rechnern oder Knoten in einem Netzwerk verteilt werden.

MapReduce-Implementierungen beruhen auf einem Master-Slave-Stil der Verteilung, wo die Master-Knoten speichert alle Metadaten, Zugriffsrechte, Mapping und Speicherort der Dateien und blockiert, und so weiter. Die Slaves sind Knoten wo die tatsächlichen Daten gespeichert sind. Alle gehen die Anforderungen an den Master und dann durch den entsprechenden Slave-Knoten behandelt werden. Wie Sie das Design des Dateisystems in Erwägung ziehen, sollten Sie die folgenden Punkte beachten:

  • Halten Sie es warm: Wie Sie vielleicht erwarten, könnte der Master-Knoten überlastet, weil alles, was es beginnt. Außerdem, wenn der Master-Knoten ausfällt, ist das gesamte Dateisystem nicht zugänglich, bis der Master wiederhergestellt wird. Eine sehr wichtige Optimierung ist ein zu schaffen # 147-Warm-Standby-# 148- Master-Knoten, die in Dienst springen kann, wenn ein Problem mit dem Online-Master auftritt.

  • Je größer desto besser: Dateigröße ist auch ein wichtiger Gesichtspunkt. Viele kleine Dateien (weniger als 100 MB) sollten vermieden werden. Verteilte Dateisysteme MapReduce Motoren unterstützen funktionieren am besten, wenn sie mit einer bescheidenen Anzahl von großen Dateien bestückt sind.

  • Auf lange Sicht: Da Workloads in Chargen verwaltet werden, sehr nachhaltig Netzwerk-Bandbreite ist wichtiger als eine schnelle Ausführungszeiten der Mapper oder Reduzierungen. Die optimale Vorgehensweise ist für die Code viele Daten zu strömen, wenn es liest und wieder, wenn es Zeit ist, auf das Dateisystem zu schreiben.

  • Halten Sie es sicher: Aber nicht übermäßig. Hinzufügen von Sicherheitsebenen auf dem verteilten Dateisystem wird auf die Leistung auswirken. Die Dateiberechtigungen gibt es gegen unbeabsichtigte Folgen zu schützen, nicht schädliches Verhalten. Der beste Ansatz ist, um sicherzustellen, dass nur autorisierte Benutzer Zugriff auf die Datencenter-Umgebung haben und das verteilte Dateisystem von außen geschützt zu halten.

Menü