Inhaltsverzeichnis:
Video: AWS Tutorial For Beginners | AWS Full Course - Learn AWS In 10 Hours | AWS Training | Edureka 2024
Abgesehen von der Optimierung des eigentlichen Anwendungscodes mit MapReduce für Big Data-Projekte können Sie einige Optimierungstechniken zur Verbesserung der Zuverlässigkeit und Leistung. Sie fallen in drei Kategorien: Hardware / Netzwerktopologie, Synchronisation und Dateisystem.
Big-Data-Hardware / Netzwerktopologie
Unabhängig von der Anwendung erzielen schnellste Hardware und Netzwerke die schnellsten Laufzeiten für Ihre Software. Ein deutlicher Vorteil von MapReduce ist die Fähigkeit, auf kostengünstigen Clustern von Standardhardware und Standardnetzwerken zu laufen. Wenn Sie nicht darauf achten, wo Ihre Server physisch organisiert sind, erhalten Sie nicht die beste Leistung und ein hohes Maß an Fehlertoleranz, die zur Unterstützung von Big-Data-Aufgaben erforderlich sind.
Commodity-Hardware wird häufig in Racks im Rechenzentrum gespeichert. Die Nähe der Hardware innerhalb des Racks bietet einen Leistungsvorteil gegenüber dem Verschieben von Daten und / oder Code von Rack zu Rack. Während der Implementierung können Sie Ihre MapReduce-Engine so konfigurieren, dass diese Nähe erkannt und genutzt wird.
Das Zusammenhalten der Daten und des Codes ist eine der besten Optimierungen für die Leistung von MapReduce. Im Wesentlichen gilt: Je näher die Hardware-Verarbeitungselemente einander liegen, desto weniger Latenz müssen Sie bewältigen.
Big-Data-Synchronisation
Da es ineffizient ist, alle Ergebnisse des Mappings innerhalb des Knotens zu speichern, kopieren die Synchronisationsmechanismen die Mapping-Ergebnisse unmittelbar nach Abschluss der Operation auf die reduzierenden Knoten, so dass die Die Verarbeitung kann sofort beginnen. Alle Werte desselben Schlüssels werden an denselben Reduzierer gesendet, was wiederum eine höhere Leistung und eine bessere Effizienz gewährleistet.
Die Reduktionsausgaben werden direkt in das Dateisystem geschrieben und müssen daher für beste Ergebnisse ausgelegt und abgestimmt werden.
Big Data-Dateisystem
Ihre MapReduce-Implementierung wird von einem verteilten Dateisystem unterstützt. Der Hauptunterschied zwischen lokalen und verteilten Dateisystemen ist die Kapazität. Um die riesigen Informationsmengen in einer Big-Data-Welt bewältigen zu können, müssen Dateisysteme über mehrere Rechner oder Knoten in einem Netzwerk verteilt sein.
MapReduce-Implementierungen basieren auf einem Master-Slave-Verteilungsstil, bei dem der Master-Knoten alle Metadaten, Zugriffsrechte, Zuordnungen und Speicherorte von Dateien und Blöcken usw. speichert. Die Slaves sind Knoten, an denen die eigentlichen Daten gespeichert sind. Alle Anfragen gehen an den Master und werden dann vom entsprechenden Slave-Knoten bearbeitet.Wenn Sie über das Design des Dateisystems nachdenken, sollten Sie Folgendes beachten:
-
Warmhalten: Wie zu erwarten ist, könnte der Master-Knoten überarbeitet werden, weil dort alles anfängt. Wenn der Master-Knoten ausfällt, kann auf das gesamte Dateisystem nicht zugegriffen werden, bis der Master wiederhergestellt wird. Eine sehr wichtige Optimierung besteht darin, einen "Warm-Standby" -Masterknoten zu erstellen, der in den Dienst springen kann, wenn ein Problem mit dem Online-Master auftritt.
-
Je größer, desto besser: Die Dateigröße ist ebenfalls eine wichtige Überlegung. Viele kleine Dateien (weniger als 100 MB) sollten vermieden werden. Verteilte Dateisysteme, die MapReduce-Module unterstützen, funktionieren am besten, wenn sie mit einer bescheidenen Anzahl großer Dateien gefüllt werden.
-
Die lange Sicht: Da Workloads in Batches verwaltet werden, ist eine hohe Netzwerkbandbreite wichtiger als schnelle Ausführungszeiten der Mapper oder Reducer. Der optimale Ansatz besteht darin, dass der Code beim Lesen und beim Schreiben in das Dateisystem viele Daten streamen kann.
-
Halten Sie es sicher: Aber nicht übermäßig. Das Hinzufügen von Sicherheitsschichten auf dem verteilten Dateisystem verschlechtert seine Leistung. Die Dateiberechtigungen schützen vor unbeabsichtigten Konsequenzen und nicht vor bösartigem Verhalten. Der beste Ansatz besteht darin, sicherzustellen, dass nur autorisierte Benutzer Zugriff auf die Rechenzentrumsumgebung haben und das verteilte Dateisystem vor äußeren Einflüssen geschützt ist.