-
VERWEIS
-
Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
-
TECHNISCHES GEBIET
-
Dieses Dokument bezieht sich auf Datenverarbeitung in einem Mapreduce-Framework.
-
HINTERGRUND
-
Das MapReduce-Modell wurde von Google Inc. als ein Weg entwickelt, umfangreiche Datenverarbeitung zu vereinfachen. Implementierungen eines MapReduce-Verfahrens erfolgen im Einklang mit dem MapReduce-Modell.
-
ZUSAMMENFASSUNG
-
In einem ersten Aspekt beinhaltet ein computerimplemetiertes Verfahren für die Datenverarbeitung in einem Mapreduce-Framework Folgendes: das Empfangen einer Datenverarbeitungsanfrage für Eingabedaten in einem Mapreduce-Framework; die auf einer Datenverarbeitungsanfrage basierende Initialisierung einer Map-Operation, angewendet auf Eingabedaten mehrerer Mappers im Mapreduce-Framework, wobei jeder der Mapper einen Aggregator verwendet, um die Eingabedaten teilweise in einem oder mehreren intermediären Schlüssel/Wert-Paaren zu aggregieren; das Initialisieren einer Reduce-Operation, angewendet auf die intermediären Schlüssel/Wert-Paare durch mehrere Reducers im Mapreduce-Framework, ohne sie zu sortieren, wodurch jene der intermediären Schlüssel/Wert-Paare mit einem gemeinsamen Schlüssel vom selben Reducer verarbeitet werden, wobei jeder der Reducers den Aggregator verwendet, um intermediäre Schlüssel/Wert-Paare in einem oder mehreren Ausgabewerten zu aggregieren; und das Bereitstellen der Ausgabewerte in Reaktion auf die Datenverarbeitungsanfrage.
-
In einem zweiten Aspekt beinhaltet ein Computerprogrammprodukt, konkret umgesetzt in einem computerlesbaren Speichergerät, Instruktionen, die bei Ausführung durch einen Prozessor eine Methode für die Verarbeitung von Eingabedaten in einem Mapreduce-Framework durchführen. Das Verfahren beinhaltet: das Empfangen einer Datenverarbeitungsanfrage für Eingabedaten in einem Mapreduce-Framework; die auf einer Datenverarbeitungsanfrage basierende Initialisierung einer Map-Operation, angewendet auf Eingabedaten mehrerer Mappers im Mapreduce-Framework, wobei jeder der Mapper einen Aggregator verwendet, um die Eingabedaten teilweise in einem oder mehreren intermediären Schlüssel/Wert-Paaren zu aggregieren; das Initialisieren einer Reduce-Operation, angewendet auf die intermediären Schlüssel/Wert-Paare durch mehrere Reducers im Mapreduce-Framework, ohne sie zu sortieren, wodurch jene der intermediären Schlüssel/Wert-Paare mit einem gemeinsamen Schlüssel vom selben Reducer verarbeitet werden, wobei jeder der Reducers den Aggregator verwendet, um intermediären Schlüssel/Wert-Paare in einem oder mehreren Ausgabewerten zu aggregieren; und das Bereitstellen der Ausgabewerte in Reaktion auf die Datenverarbeitungsanfrage.
-
In einem dritten Aspekt beinhaltet das System: mindestens einen Prozessor; und mindestens ein computerlesbares Speichergerät, das Instruktionen umfasst, die bei Ausführung die Durchführung eines Verfahrens für die Eingabedatenverarbeitung in einem Mapreduce-Framework veranlasst. Das Verfahren beinhaltet: das Empfangen einer Datenverarbeitungsanfrage für Eingabedaten in einem Mapreduce-Framework; die auf einer Datenverarbeitungsanfrage basierende Initialisierung einer Map-Operation, angewendet auf Eingabedaten mehrerer Mappers im Mapreduce-Framework, wobei jeder der Mapper einen Aggregator verwendet, um die Eingabedaten teilweise in einem oder mehreren intermediären Schlüssel/Wert-Paaren zu aggregieren; das Initialisieren einer Reduce-Operation, angewendet auf die intermediären Schlüssel/Wert-Paare durch mehrere Reducers im Mapreduce-Framework, ohne sie zu sortieren, wodurch jene der intermediären Schlüssel/Wert-Paare mit einem gemeinsamen Schlüssel vom selben Reducer verarbeitet werden, wobei jeder der Reducers den Aggregator verwendet, um intermediären Schlüssel/Wert-Paare in einem oder mehreren Ausgabewerten zu aggregieren; und das Bereitstellen der Ausgabewerte in Reaktion auf die Datenverarbeitungsanfrage.
-
Verschiedene Implementierungen können einige, keine oder alle der folgenden Funktionsweisen beinhalten. Die Datenverarbeitungsanfrage identifiziert eine Anzahl von Schlüsseln in den Eingabedaten und das Verfahren beinhaltet weiterhin die Durchführung einer Größeneinordnung der identifizierten Anzahl Schlüssel mit Bezug auf die Größe der Eingabedaten, worin die Map- und Reduce-Operationen, die den Aggregator in Anspruch nehmen, basierend auf der Größeneinordnung für die Initialisierung ausgewählt werden. Die Mappers und Reducers werden unter Verwendung eines Maschinenclusters implementiert, wobei die Größeneinordnung den Speicherplatz von einer oder mehreren der Maschinen berücksichtigt. Die Größeneinordnung berücksichtigt, ob die Identifkationsnummer der Schlüssel drei Größenordnungen kleiner ist, als die Größe der Eingabedaten. Der Aggregator in den Map- und Reduce-Operationen verwendet eine Hash-Tabelle. Der Aggregator basiert auf einer kommutativen und assoziativen Aggregierungsfunktion.
-
Implementierungen können einige, keine oder alle der folgenden Vorteile haben. Leistungsstarke Aggregierungen von Anfragen können durchgeführt werden. Ein generischer Aggregator kann sowohl auf der Map-Seite als auch auf der Reduce-Seite des Frameworks eingesetzt werden. Der Aggregator kann die Aggregierung kontinuierlich durchführen (z. B. sobald jeder neue Wert verfügbar wird). Die Notwendigkeit, Schlüssel/Wert-Paare für die Reduce-Operation zu sortieren, kann eliminiert werden. Die Speicherverwendung kann reduziert werden, indem bloß ein aggregierter Wert für einen gegebenen Schlüssel im Speicher verwahrt wird. Ein Mapreduce-Framework kann wiederverwendet werden, zum Beispiel indem der Sortierer deaktiviert und ein generischer Aggregator hinzugefügt wird. Eine Voraussetzung, dass alle Werte für denselben Schlüssel zum selben Reduce-Aufruf wandern müssen, kann gelockert oder eliminiert werden. Der Aggregator kann einen Kombinator auf der Map-Seite ersetzen. Die Aggregierung kann unter Verwendung einer Hash-Tabelle durchgeführt werden.
-
Die Einzelheiten einer oder mehrerer Implementierungen sind in den begleitenden Zeichnungen und der Beschreibung unten dargelegt. Andere Eigenschaften und Vorteile werden aus der Beschreibung und den Zeichnungen sowie den Ansprüchen ersichtlich.
-
BESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt ein Beispiel eines Systems mit einem Mapreduce-Framework.
-
2 zeigt ein schematisches Beispiel einer Eingabedatenverarbeitung in einem Mapreduce-Framework.
-
3 ist ein Flussdiagramm einer Beispielsmethode.
-
4 ist ein Blockdiagramm eines beispielhaften Rechensystems, das in Verbindung mit den in diesem Dokument beschriebenen, computerimplementierten Verfahren verwendet werden kann.
-
Gleiche Bezugszeichen in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Dieses Dokument beschreibt Systeme und Techniken, durch welche Eingabedaten in einem Mapreduce-Framework unter Verwendung eines generischen Aggregators sowohl auf der Map-Seite als auch auf der Reduce-Seite verarbeitet werden können, ohne dass es vor der Reduce-Operation einer Sortierung der intermediären Daten bedürfte. In einigen Implementierungen kann der Ansatz der Verwendung eines generischen Aggregators auf der Einschätzung der relativen Größen sowohl der Eingabedaten als auch der Schlüssel basieren, die in der Verarbeitung der Eingabedaten involviert sind. Zum Beispiel können die Werte der Schlüssel, wenn nur relativ wenige Schlüssel in einem verhältnismäßig großen Datenvolumen gesucht werden (z. B. wenn die Zahl Wörter mindestens 1000 mal größer ist als die Zahl der Schlüssel), in der Map-Operation aggregiert werden und Schlüssel/Wert-Paare mit demselben Schlüssel können zum selben Reducer weitergeleitet werden. Der Reducer kann dann denselben generischen Aggregator in der Reduce-Operation verwenden. Dies kann signifikant das Volumen an intermediären Daten reduzieren, die von der Map-Operation an die Reduce-Operation weitergegeben werden, und kann die Notwendigkeit eliminieren, die intermediären Daten für die Reduce-Operation zu sortieren.
-
1 zeigt das Beispiel eines Systems 100 mit einem MapReduce-Rahmen 102. Der MapReduce-Rahmen 102 kann eingesetzt werden, um im Einklang mit dem MapReduce-Modell Datenverarbeitung vorzunehmen, zum Beispiel zur Durchführung bestimmter Arten von Analysen für große Datenmengen. So wie es in diesem Dokument verwendet wird, bezeichnet der Begriff „Mapreduce-Framework” ein System, das konfiguriert wurde, (i) wenigstens eine Map-Operation auszuführen, einen oder mehrere intermediäre Schlüssel/Wert-Paare aus Eingabedaten zu generieren; und (ii) wenigstens eine Reduce-Operation auszuführen, die aus den intermediären Schlüssel/Wert-Paaren einen oder mehrere Ausgabewerte generiert. Das Mapreduce-Framework teilt die Map-Operation zwischen verschiedenen Programm-Komponenten (manchmal als „Workers” bezeichnet) auf und weist den oder die Map-Aufträge jedem Worker zu. Der MapReduce-Rahmen teilt die Reduce-Operation in Reduce-Aufgaben ein und ordnet sie Arbeitern zu. Bei einigen Implementierungen wird der MapReduce-Rahmen auf einem Cluster von Verarbeitungsgeräten betrieben, wie etwa das Netzwerk standardmäßiger PCs.
-
Hier kann ein Anwender das Computer-Gerät 104 einsetzen, um auf das Mapreduce-Framework durch eine beliebige Art Netzwerk 106, etwa das Internet oder ein Netzwerk für mobile Geräte (z. B. ein Handy-Netzwerk), zuzugreifen. Die MapReduce-Verarbeitung kann durch ein Benutzerprogramm 108 auf dem Computer-Gerät initiiert werden. In einigen Implementierungen kann eine Werbetreibende Organisation das Programm 108 einsetzen, um Datenvolumen zu analysieren, die für einen oder mehrere Aspekte der Werbung relevant sind. Zum Beispiel kann die Mapreduce-Operation die umgekehrte Hyper-Verlinkung für jede von hunderten Millionen oder mehr Internetseiten bestimmen, was bedeutet, dass alle Seiten, die auf eine gegebene Seite verlinken, ermittelt werden. In solchen Situationen definiert das Anwenderprogramm 108 die Gruppe relevanter Zielseiten und es werden zur Präzisierung die entsprechenden Quellseiten gesucht. Als weiteres Beispiel können die Mapreduce-Operationen ein Anfrageprotokoll für Internetseiten verarbeiten, um zu bestimmen, wie viele Male jede der Seiten angefragt wurde. In dieser Situation identifiziert bzw. bestimmt das Anwenderprogramm 108 die relevante Protokolldatei (z. B. nach Datum oder einer beliebigen anderen Einschränkung) und legt fest, dass die Anzahl der Anfragen pro Seite gesucht wird.
-
In einigen Implementierungen wird das Anwenderprogramm 108 so konfiguriert, dass der Benutzer eine oder mehrere Abfragen formulieren kann (z. B. unter Verwendung der Structured Query Language (SQL)), die auf Teile oder die gesamte als Eingabedaten 110 gespeicherte Informationssammlung durchgeführt werden soll. Die Eingabedaten umfassen jegliche geeigneten Informationen, die im MapReduce-Rahmen 102 verarbeitet werden können. In einigen Implementierungen werden einige oder alle der Eingabedaten 110 durch eine Werbetreibende Organisation gesammelt, etwa durch Protokollierung der Online-Anfragen zugehöriger Anwender, indem in einer Suchmaschine eingegebene Abfragen aufgezeichnet und/oder indem im Internet verfügbare Seiten indiziert werden. Zum Beispiel und ohne Beschränkung können die Eingabedaten 110 Netzwerkdaten, Verkaufsdaten, Beobachtungsdaten, wissenschaftliche Daten, zufällige Daten, Bevölkerungsdaten, künstlerische Daten, statistische Daten oder eine Kombination derselben beinhalten. Für Situationen, in denen die hier erörterten Systeme auf persönlichen Daten (z. B. dem Abfrageverlauf) der Anwender beruhen, kann den Anwendern die Möglichkeit gegeben werden, in die Verwendung von Programmen oder Funktionen, die persönliche Daten sammeln, einzuwilligen/ihnen zu widersprechen. Zusätzlich können gewisse Daten auf einem oder mehreren Wegen anonymisiert werden, bevor sie gespeichert oder verwendet werden, so dass personenbezogene Informationen entfernt werden. Zum Beispiel kann die Identität eines Benutzers anonymisiert werden, sodass personenbezogene Informationen über den Benutzer nicht festgestellt werden können und jegliche identifizierten Präferenzen oder Interaktionen des Benutzers generalisiert (zum Beispiel auf Grundlage der demographischen Benutzerdaten) und nicht mit einem bestimmten Benutzer assoziiert werden. Als weiteres Beispiel können in Abfrageprotokollen gespeicherte Benutzerabfragen nach einem vorbestimmten Zeitraum gelöscht werden.
-
Die Eingabedaten können jedes Datenformat besitzen, das für Mapreduce-Operationen geeignet ist, einschließlich aber nicht beschränkt auf ein binäres Datenformat, ein Klartext-Format, ein Auszeichnungssprachformat (z. B. XML) oder ein Bildformat.
-
Das Mapreduce-Framework 102 beinhaltet eine Map-Operation 112 und eine Reduce-Operation 114. Bei einigen Implementierungen ist die Map-Operation 112 für die Verarbeitung von einigen oder allen Eingabedaten 110 konfiguriert und generiert mindestens ein intermediäres Schlüssel-/Wertepaar daraus. Bei einigen Implementierungen ist die Reduce-Operation 114 für die Verarbeitung von mindestens einem Teil des/der intermediären Schlüssel-/Wertepaar/e/s konfiguriert und generiert mindestens einen Ausgangswert daraus. Im Allgemeinen kann die Map-Operation 112 das Vorkommen eines jeden von multiplen Schlüsseln in den Eingabedaten 110 entdecken und die Reduce-Operation 114 kann Daten aus solchen Entdeckungen in nützliche Ausgabeinformationen zusammenfassen oder anderweitig bündeln (z. B. Häufigkeitstabelle).
-
Die Map-Operation 112 und/oder die Reduce-Operation 114 können als auf mehrere Prozessoren verteilte Aufträge durchgeführt werden. Bei einigen Implementierungen umfasst der MapReduce-Rahmen 102 ein Cluster 116 von Verarbeitungseinheiten, wie etwa Maschinen 118 oder arbeitet anderweitig mit diesen zusammen. Jede Maschine 118 zum Beispiel kann ein standradmäßiges Gerät sein (z. B. ein PC) und diese Maschinen können mit Hilfe eines jeden geeigneten Kommunikationsprotokolls (z. B. Ethernet) miteinander als Netzwerk eingerichtet werden. Jede der Maschinen 118 hat mindestens einen Speicher 120, der entweder in das Gerät integriert oder kommunikativ mit diesem durch eine angemessene Verbindung gekoppelt (z. B. mit einem System-Bus). Der Speicher 120 wird zum Beispiel bei der Entdeckung des Vorkommens von Schlüsseln in den Eingabedaten 110 und/oder für die Zusammenfassung von Daten zur Generierung der Ausgabeinformationen genutzt.
-
Das Mapreduce-Framework 102 beinhaltet eine Größeneinordnungsfunktion 122. In einigen Implementierungen vergleicht die Größeneinordnungsfunktion 122 die Größe der Eingabedaten 110 mit der Anzahl der in der Verarbeitung involvierten Schlüssel. Zum Beispiel kann die Größe eines Datenpools mit der Anzahl der verschiedenen Worte oder Buchstaben verglichen werden, die gesucht werden.
-
Falls die Anzahl Schlüssel im Verhältnis zum Datenvolumen ausreichend gering ist, kann das Mapreduce-Framework 102 während der Durchführung der Map-Operation 112 und der Reduce-Operation 114 einen oder mehrere Aggregatoren 124 in Anspruch nehmen. Der Aggregator 124 kann auf jeder kommutativen oder assoziativen Aggregierungsfunktion basieren, einschließlich aber nicht beschränkt auf MAX, MTN, COUNT oder SUM. Zum Beispiel kann der Aggregator 124 in der Map-Operation 112 für jedes Wort oder jeden Buchstaben in den Eingabedaten 110 einen verknüpften Wert erhöhen, der die Vorkommnisse zählt. Als weiteres Beispiel kann der Aggregator 124 in der Reduce-Operation 114 die Werte für intermediäre Schlüssel/Wert-Paare mit demselben Schlüssel zusammenzählen oder anderweitig aggregieren. Beispiele für Größenverhältnisse zwischen den Schlüsseln und den Daten werden weiter unten erörtert.
-
In einigen Implementierungen kann in der Map-Operation 112 oder in der Reduce-Operation 114 oder beiden mindestens eine Hash-Tabelle 126 verwendet werden. Zum Beispiel kann eine Hash-Tabelle Schlüssel und einen Zählwert für jeden Schlüssel speichern. Sobald jeder aufeinander folgende Schlüssel in der Map-Operation 112 identifiziert wurde, kann die Hash-Tabelle aktualisiert werden, um den/die entsprechenden Wert/e zu erhöhen. In der Reduce-Operation kann die Hash-Tabelle 126 von jedem Reducer verwendet werden, um die Werte für jeden einzelnen Schlüssel zu aggregieren (z. B. zusammenzuzählen).
-
2 zeigt ein schematisches Beispiel einer Eingabedatenverarbeitung in einem Mapreduce-Framework. In einigen Implementierungen kann ein Prozess 200 unter Verwendung von einer oder mehrerer Funktionen des Systems 100 (1) durchgeführt werden. Zum Beispiel kann ein Prozess 200 in einem Mapreduce-Framework 102 (1) durchgeführt werden.
-
Hier wird angenommen, dass eine Verarbeitungsanfrage bezüglich eines Pools 202 empfangen wurde, wobei es sich um eine Informationssammlung sehr großen Ausmaßes handelt. In einigen Implementierungen beinhaltet der Pool 202 mehrere Trillionen (d. h. 1012) Bytes (auch als Terabytes bezeichnete) oder mehr Daten. Nur als anschauliches Beispiel kann der Pool 202 die in einem oder mehreren Jahren gesammelten Onlinedaten oder eine elektronische Ausgabe der in der US-amerikanischen Kongressbibliothek abgelegten Literatur umfassen. Außerdem legt die Verarbeitungsanfrage fest, dass das Gesuchte die Häufigkeit der Vorkommnisse einiger spezifischer Schlüssel in dieser Masse von Informationen, etwa die Wörter oder sogar jeder separate Buchstabe in den Daten ist.
-
Bevor die Verarbeitung beginnt, kann eine Größeneinordnung durchgeführt werden. Zum Beispiel sollte die Einschätzung, so die Häufigkeitsbestimmung auf Wortniveau erfolgen soll, die gesamte Anzahl erkannter und registrierter Wörter berücksichtigen. Solch eine Zahl kann oder kann nicht mit Bestimmtheit bekannt sein, bevor die tatsächliche Datenverarbeitung erfolgt, aber in einigen Implementierungen kann eine Schätzung erfolgen. In einigen Implementierungen kann, vorausgesetzt dass der Pool 202 Informationen in nur einer einzigen Sprache (z. B. auf Englisch oder Hindi) enthält, eine Annäherung der gesamten Anzahl Wörter in dieser Sprache als grobe Schätzung der maximalen Anzahl Schlüssel verwendet werden. Zum Beispiel betragen einige übliche Schätzungen der Anzahl Wörter in der englischen Sprache die Größenordnung mehrerer hunderttausend, bis über eine Million Wörter. Entsprechend kann angenommen werden, dass eine übliche Schätzung der gesamten Anzahl Schlüssel bei der Zählung englischer Wörter proportional zu zwischen 105 und 106 Wörtern liegt.
-
Als weiteres Beispiel würde die gesamte Anzahl Schlüssel, wenn die Häufigkeit jedes Buchstabens des lateinischen Alphabets im Pool 202 bestimmt werden muss, 26 betragen. Wird die numerische Annahme des vorhergehenden Beispiels fortgesetzt, kann eine allgemeine Schätzung der gesamten Anzahl unterschiedlicher Schlüssel proportional zu 101 sein (also zehn betragen).
-
Die Größeneinordnung kann die Größe des Pools
202 mit der gesamten Anzahl unterschiedlicher Schlüssel vergleichen. Tabelle I zeigt Beispiele solcher Einordnungen und des ermittelten Unterschieds oder des Verhältnisses der Größe. Tabelle I
Beispielseingabedaten | Größe der Eingabedaten | Zählung nach | Gesamte Anzahl unterschiedlicher Schlüssel | Verhältnis |
Zufälliges Datenvolumen | SID | Zufallsschlüssel | Kd | SID/Kd |
Pool 202 | 1012 Bytes | Buchstabe | (Ca.) 10 Bytes | etwa 1011 |
Pool 202 | 1011 Wörter | Wort | (Ca.) 105 bis 106 Wörter | etwa 106 bis 105 |
-
Die Größeneinordnung kann berücksichtigen, ob die zu erreichende Einsparung von Ressourcen und/oder Zeit dem relativ kleinen zusätzlichen Auftrag der Werterhöhung auf der Map-Seite signifikant überwiegt, zum Beispiel durch Verwendung eines generischen Aggregators auf den Map- und Reduce-Seiten und/oder dadurch, dass die Schlüssel/Wert-Paare nicht sortiert werden müssen.
-
In den Beispielen von Tabelle I ist das Verhältnis wenigstens 105, was bedeutet, dass die Größe der Eingabedaten mindestens fünf Größenordnungen höher als die Zahl der in den Daten gesuchten unterschiedlichen Schlüssel ist. In einigen Implementierungen wird eine Größendifferenz von etwa drei oder mehr Größenordnungen als ausreichend betrachtet.
-
Zum Beispiel würde ein Verhältnis von etwa 103 akzeptiert, aber ein Verhältnis von etwa 102 oder weniger würde nicht akzeptiert.
-
In einigen Implementierungen berücksichtigt die Größeneinordnung, ob die Reduce-Operation unter Verwendung des Speicherplatzes einer einzigen der Maschinen im Cluster durchgeführt werden könnte.
-
Im gegenwärtigen Beispiel führt die Größeneinordnung zur Entscheidung, ob ein generischer Aggregator mit einer entsprechenden Eliminierung der Reduce-Seiten-Sortierung eingesetzt wird. Entsprechend wird die Reduce-Operation hier unsortierte Aggregierungen durchführen. Als Kontrast, wäre der generische Aggregatorenansatz hier nicht gewählt worden (etwa weil das Verhältnis zu gering war und/oder aufgrund von Speichergrenzen), dann kann eine herkömmliche Mapreduce-Operation durchgeführt werden. Zum Beispiel wird in solch einer Situation eine Sortierung der intermediären Daten durchgeführt und die Reduce-Operation führt eine sortierte Aggregierung durch.
-
Bevor die Map-Operation durchgeführt wird, kann der Pool 202 in M die Spektralbruchstücke (range shards) 204 aufgeteilt werden 1-204 M- In einigen Implementierungen können die Spektralbruchstücke 204 1–204 M so generiert werden, dass die Größe jedes einzelnen wenigstens ein ausgewähltes Kriterium erfüllt (z. B. dass jedes Bruchstück etwa 16–64 Megabytes beträgt). Zum Beispiel kann diese Aufteilung erfolgen, um die Verteilung der Map-Operation zwischen mehreren Maschinen in einem Cluster zu vereinfachen.
-
Jedes der Spektralbruchstücke 204 besteht aus einer oder mehrerer Sektionen 206 1–206 R, was mit individuellen Aufzeichnungen (z. B. Dokumenten oder Seiten) oder zufällig aufgeteilten Datenmengen entsprechen kann, beispielsweise in der Größenordnung von jeweils 16–64 Megabytes. Die Map-Funktionen beginnen dann die Verarbeitung der Spektralbruchstücke 204.
-
Die Map-Operation 112 verwendet hier den Aggregator 124 und die Hash-Tabelle 126 bis 20 verarbeitet die Eingabedaten. Für jedes ermittelte Wort oder jeden ermittelten Buchstaben im Spektralbruchstücke 204 1, kann ein entsprechender Eintrag in der Hash-Tabelle 126 aktualisiert werden. Zum Beispiel kann die Hash-Tabelle, wenn K unterschiedliche Schlüssel 126 gesucht werden, Einträge K1–KK beinhalten, wobei jeder Eintrag einem entsprechenden Schlüssel entspricht. Darüber hinaus kann die Hash-Tabelle 126 einen oder mehrere Werte für jeden der gesuchten Schlüssel beinhalten. Hier werden die Einträge V1–VK neben einem entsprechenden Schlüssel aufgeführt. Zum Beispiel wird das erste Mal, dass der Schlüssel K1 im Spektralbruchstück 204 1 gefunden wird, der Wert V1 auf einen Initialwert (etwa auf eins) gesetzt. Ebenso wird, das erste Mal, dass der Schlüssel K1 in einem Bruchstück gefunden wird, der Wert V1 in einer entsprechenden Art und Weise aktualisiert (z. B. um eins erhöht). Somit betrüge der Wert V1 nach einer solchen Erhöhung im oben genannten Beispiel zwei, was anzeigt, dass zwei Vorkommnisse des entsprechenden Schlüssels erkannt wurden.
-
In einigen Implementierungen hat jede Map-Funktion ihre eigene Version der Hash-Tabelle 126, wo die durch die Map-Funktion erkannten Schlüssel registriert werden und die entsprechenden Werte entsprechend aktualisiert werden. In einigen Implementierungen wird eine separate Hash-Tabelle 126 für jedes der Spektralbruchstücke 204 verwendet. In einigen Implementierungen wird eine einzige Hash-Tabelle 126 für den gesamten Pool 202 verwendet.
-
Das Ergebnis der Map-Operation ist ein oder mehrere intermediäre Schlüssel/Wert-Paare
210. In einigen Implementierungen generiert jede Maschine in der Map-Operation einen Satz intermediärer Schlüssel/Wert-Paare
210 für jeden abgeschlossenen Map-Auftrag. Die intermediären Schlüssel/Wert-Paare
210 werden generiert, sodass ihre Informationen in der Reduce-Operation aggregiert werden können. Tabelle II zeigt einige Beispiele der Schlüssel/Wert-Paare
210, wenn Vorkommnisse englischer Wörter ermittelt werden: Tabelle II
Schlüssel | Wert |
a | 1,309,708,523 |
Zurück | 23,492 |
Abakus | 47 |
... | ... |
-
Auf gleiche Weise zeigt Tabelle III einige Beispiele von Schlüssel/Wert-Paaren
210, wenn 15 Vorkommnisse von Zeichen des lateinischen Alphabets ermittelt werden: Tabelle III
Schlüssel | Wert |
a | 121,344,706,709 |
b | 22,130,185,189 |
c | 41,289,875,722 |
... | ... |
-
Die Paare in der oben aufgeführten Tabelle II und/oder III können als Wertaggregierung angesehen werden. Zum Beispiel zeigt Tabelle II auf, dass 23.492 Vorkommnisse des Schlüssels „aback” (zurück) ermittelt wurden und dieser Eintrag dient daher anstelle von 23.492 individuellen (aback, 1) Paaren. Auf gleiche Weise tritt der Eintrag für den Schlüssel „b” in Tabelle III, dessen Eintrag in diesem Beispiel ungefähr ein Dutzend Bytes lang ist, an die Stelle von über 22 Billionen individueller (b, 1) Paare und vermeidet in diesem Beispiel im Wesentlichen die Speicherung und Sortierung von Gigabytes an Daten. Die Inhalte der Tabellen II und/oder III können in der spezifischen Aufzeichnung 210A der intermediären Schlüssel/Wert-Paare beinhaltet sein, die Teil der gesamten intermediären Schlüssel/Wert-Paare 210 ist.
-
Die intermediären Schlüssel/Wert-Paare 210 werden an die Reduce-Operation 114 weitergeleitet. Hier verwendet die Reduce-Operation 114 denselben Aggregator (z. B. den Aggregator 124) oder einen gleichartigen Aggregator wie die Map-Operation 112. Auf gleiche Weise verwendet die Reduce-Operation 114 dieselbe Hash-Tabelle (z. B. die Hash-Tabelle 126) oder eine gleichartige Hash-Tabelle wie die Map-Operation 112. In einigen Implementierungen ist die spezifische Aufzeichnung 210A der Schlüssel/Wert-Paare ein reduziertes Bruchstück, das generiert wurde, um das Gesamtvolumen an Reduce-Operationen zwischen einigen oder allen Maschinen des Clusters 116 aufzuteilen (1).
-
Entsprechend kann jedes Reduce-Bruchstück unter den intermediären Schlüssel/Wert-Paaren 210 als ein separater Reduce-Auftrag zugewiesen werden. In solchen Implementierungen können solche der intermediären Schlüssel/Wert-Paare 210, die denselben Schlüssel haben, demselben Reduce-Bruchstück zugewiesen werden. Zum Beispiel können die Zähler für den Schlüssel „aback” von allen Mappers im selben Reduce-Bruchstück gesammelt werden, gleiches gilt für den Schlüssel „b”. In anderen Implementierungen wird nur ein einziges Reduce-Bruchstück für alle Reduce-Operationen verwendet, die auf die intermediären Schlüssel/Wert-Paare 210 angewandt werden.
-
Die Reduce-Operation
114 aggregiert die Werte aus den intermediären Schlüssel/Wert-Paaren
210 je nach einer oder mehrerer Definitionen in einer entsprechenden Reduce-Funktion. In einigen Implementierungen können die Zähler für jeden einzelnen Schlüssel aller Mappers aufsummiert werden. Tabelle IV zeigt beispielhaft eine Addition durch die Reduce-Operation
114: Tabelle IV
Schlüssel | Wert |
b | 2,600,129,299 |
b | 22,130,185,189 |
... | ... |
b | 1,899,338,921 |
Insgesamt | 345,431,889,021 |
-
Eine Aggregierung wie die in Tabelle IV wird für jeden unterschiedlichen Schlüssel 25 ausgeführt, der im Pool 202 ermittelt wurde. Zum Beispiel kann eine Gesamtsumme für die ermittelten Vorkommnisse für jeden Buchstaben im lateinischen Alphabet oder für jedes ermittelte Wort gebildet werden.
-
Das Ergebnis der Reduce-Operation 114 ist mindestens eine Ausgabe 212. In einigen Implementierungen wird die Ausgabe als eine oder mehrere Dateien generiert, die entsprechend der Datenverarbeitungsanfrage, welche die Suche veranlasst hat, organisiert und in einem geeigneten Dateiformat gespeichert werden. Zum Beispiel kann ein Bericht als Antwort auf eine Abfrage erzeugt werden, welche das Computergerät 104 (1) eingereicht hat. In einigen Implementierungen kann ein solcher Bericht (oder eine andere Ausgabe) durch das Anwenderprogramm 108 (1) angezeigt oder anderweitig präsentiert werden.
-
Weitere Formen der Aggregierung können anstelle von oder zusätzlich zur obigen Summierung durchgeführt werden. In einigen Implementierungen können beliebige kommutative und assoziative Aggregierungsfunktionen verwendet werden (durchgeführt, z. B. auf die Ermittlung hin eines jeden Schlüssels in den Eingabedaten). Als spezifische Beispiele können MAX, MIN, COUNT und/oder SUM-Funktionen verwendet werden.
-
3 ist ein Flussdiagramm einer Beispielsmethode 300. Das Verfahren 300 kann von einem oder mehreren Prozessoren durchgeführt werden, die Anweisungen ausführen, welche in einem oder mehreren computerlesbaren Speichergeräten, zum Beispiel im System 100 (1), abgespeichert sind. In einigen Implementierungen können zwei oder mehr der Operationen in Methode 300 in einer anderen Reihenfolge als der hier gezeigten durchgeführt werden. Während hier Beispielschritte für das Verfahren 300 dargestellt werden, können ein oder mehrere Schritte vor, während und/oder nach den gezeigten Schritten durchgeführt werden.
-
In 310 wird eine Datenverarbeitungsanfrage empfangen oder auf anderem Wege ermittelt. In einigen Implementierungen kann das Computergerät 104 (1) eine Datenverarbeitungsanfrage bezüglich einiger oder aller Informationen in den Eingabedaten 110 (1) erzeugen. Zum Beispiel kann die Datenverarbeitungsanfrage die Informationen und Befehle für die Initiierung einer umgekehrten Hyperverlinkungs-Ermittlung oder einer Seitenabrufzählung enthalten.
-
In 320 wird eine Größeneinordnung durchgeführt, zum Beispiel durch die Größeneinordnungsfunktion 122 (1). Als Ergebnis der Größeneinordnung wird bestimmt, ob wenigstens ein Kriterium bezüglich der generischen Aggregierung erfüllt wurde. In einigen Implementierungen bestimmt das Kriterium oder bestimmen Kriterien, ob der generische Aggregator sowohl in den Map- als auch den Reduce-Operationen verwendet werden soll und ob die Reduce-Seiten-Sortierung deaktiviert werden soll. Zum Beispiel kann festgelegt werden, ob eine Reduce-Operation unter Verwendung des Speicherplatzes einer einzelnen Maschine im Cluster durchgeführt werden soll. Als weiteres Beispiel kann bestimmt werden, ob die identifizierte Anzahl Schlüssel mindestens drei oder mehr Größenordnungen kleiner ist als die Größe der Eingabedaten.
-
Bei 330 wird die Map-Operation durchgeführt. Zum Beispiel kann jedes Wort oder Zeichen in den Daten ausgewählt werden und eine Hash-Tabelle kann mit dem entsprechenden Schlüssel inkrementiert werden. Der gegenwärtige Wert für den ermittelten Schlüssel wird um eine zuvor definierte Menge erhöht oder, wenn es sich um das erste Vorkommnis handelt, wird ein Eintrag für den Schlüssel erstellt und mit dem Initialwert verknüpft. Die Hash-Tabelle wird aktualisiert, sobald der nächste Schlüssel gefunden wurde. Kurz gesagt generiert die Map-Operation 330 nicht ein separates Schlüssel/Wert-Paar für jedes Vorkommnis des Schlüssels, sondern aggregiert den Wert pro Schlüssel.
-
Die obigen Operationen generieren ein Zwischenergebnis, wie etwa Schlüssel/Wert-Paare, was die Notwendigkeit vermeidet, auf der Reducer-Seite zu sortieren. Entsprechend kann eine Sortierfunktion in der Reduce-Operation 114 (1, 2) deaktiviert oder abgeschaltet werden.
-
In 340 wird eine Reduce-Operation durchgeführt. Die Reduce-Operation in diesem Beispiel hat die Verzweigungen 340A und 340B. In einigen Implementierungen wird die Verzweigung 340A dann in der Reduce-Operation ausgewählt, wenn die Größeneinordnung bei 320 zur Verwendung eines generischen Aggregators führt. Die Verzweigung 340A beinhaltet wenigstens eine unsortierte Aggregierung der durchmischten Daten, zum Beispiel um die Werte zu addieren, die mit einem gewöhnlichen Schlüssel verknüpft sind.
-
Im Kontrast dazu wird die Verzweigung 340B in der Reduce-Operation dann ausgewählt, wenn die Größeneinordnung bei 320 nicht zur Verwendung eines generischen Aggregators führt. Die Verzweigung 340B beinhaltet wenigstens eine Sortier-Operation und wenigstens eine sortierte Aggregierung. Das Sortieren der aggregierten Schlüssel während der Vermischung kann eine signifikante Menge an Verarbeitungsressourcen benötigen, insbesondere wenn die Charakteristiken der Eingabedaten und der aggregierten Schlüssel solcher Art sind, dass der gesamte Satz Paare nicht in den Speicher einer einzelnen Clustermaschine passt. Die Verzweigung 340A eliminiert die Notwendigkeit der Sortierung und kann daher effizienter, schneller und/oder unter Umständen weniger ressourcenintensiv sein.
-
Bei 350 werden eine oder mehrere Ausgaben des Mapreduce-Prozesses erzeugt. In einigen Implementierungen kann ein Bericht für die Datenverarbeitungsanfrage (310) erstellt werden. Zum Beispiel kann ein Bericht eine Datei eines beliebigen geeigneten Formats beinhalten (z. B. XML, Klartext) mit einer Antwort auf die Anwenderabfrage (z. B. die Adressen aller referenzierten Seiten oder den Zählwert für angefragte Seiten).
-
4 ist das schematische Diagramm eines generischen Computersystems 400. Im Einklang mit einer Implementierung kann das System 400 für die beschriebenen Operationen in Zusammenhang mit jeder der zuvor dargestellten computer-implementierten Methoden eingesetzt werden. Das System 400 beinhaltet einen Prozessor 410, einen Speicher 420, ein Speichergerät 430 und einen oder mehrere Eingabe-/Ausgabegeräte 440.
-
Alle der Komponenten 410, 420, 430 und 440 sind unter Einsatz eines Systembusses 450 miteinander verbunden. Der Prozessor 410 ist fähig, Anweisungen zur Umsetzung innerhalb des Systems 400 zu verarbeiten. Bei einer Implementierung ist der Prozessor 410 ein Single-Thread-Prozessor. Bei einer anderen Implementierung ist der Prozessor 410 ein Multi-Thread-Prozessor. Der Prozessor 410 ist fähig, Anweisungen zu verarbeiten, die in dem Speicher 420 oder im Speichergerät 430 gespeichert sind, um graphische Informationen für eine Benutzeroberfläche auf dem Eingabe-/Ausgabegerät 440 anzuzeigen.
-
Der Speicher 420 speichert Informationen innerhalb des Systems 400. Bei einigen Implementierungen ist der Speicher 420 ein computer-lesbares Medium. Der Speicher 420 ist eine flüchtige Speichereinheit bei einigen Implementierungen und bei anderen Implementierungen eine nicht flüchtige Speichereinheit.
-
Das Speichergerät 430 kann Massenspeicher für das System 400 bereitstellen. Bei einer Implementierung ist das Speichergerät 430 ein computer-lesbares Medium. Bei verschiedenen anderen Implementierungen kann das Speichergerät 430 ein Diskettenlaufwerk, ein Festplattenlaufwerk, ein optisches Laufwerk oder ein Bandgerät sein.
-
Das Eingabe-/Ausgabegerät 440 liefert Eingabe-/Ausgabeoperationen für das System 400. Bei einer Implementierung umfasst das Eingabe-/Ausgabegerät 440 eine Tastatur und/oder ein Zeigegerät. Bei einer anderen Implementierung umfasst das Eingabe-/Ausgabegerät 440 eine Anzeige zur Darstellung graphischer Benutzeroberflächen.
-
Die beschriebenen Funktionen können in eine digitale Elektronikschaltung, Computerhardware, Firmware, Software oder Kombinationen derselben implementiert werden. Der Apparat kann in ein Computerprogrammprodukt implementiert werden, das greifbar ein einem Informationsträger verankert ist, z. B. in einem maschinenlesbaren Speichergerät, zur Umsetzung durch einen programmierbaren Prozessor und es können methodische Schritte von einem programmierbaren Prozessor unternommen werden, der ein Programm von Anweisungen zur Erfüllung von Funktionen der beschriebenen Implementierungen durch die Arbeit an Eingabedaten und die Generierung von Ausgabedaten umsetzt. Die beschriebenen Merkmale können vorteilhaft in einem oder mehreren Computerprogrammen implementiert werden, die auf einem programmierbaren System umsetzbar sind und die mindestens einen für den Empfang von Daten und Informationen von und die Übertragung von Daten und Informationen an einen Datenspeichersystem gekoppelten programmierbaren Prozessor, mindestens ein Eingabegerät und mindestens ein Ausgabegerät aufweisen. Ein Computerprogramm ist ein Satz von Anweisungen, die direkt oder indirekt in einem Computer zur Durchführung einer bestimmten Aktivität oder Herbeiführung eines bestimmten Ergebnisses eingesetzt werden können. Ein Computerprogramm kann in jeder beliebigen Art der Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen und kann in jeder beliebigen Form eingesetzt werden, darunter auch als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine oder andere Einheit, die für den Einsatz in einer Rechnerumgebung geeignet ist.
-
Prozessoren, die für die Durchführung eines Ausbildungsprogramms geeignet sind, schließen beispielsweise sowohl allgemeine als auch Spezialzweck-Mikroprozessoren sowie den einzigen bzw. einen der mehreren Prozessoren einer jeglichen Art von Computer ein. Ganz allgemein nimmt ein Prozessor Befehle und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für die Umsetzung von Anweisungen und ein oder mehrere Speicher für das Speichern von Anweisungen und Daten. Im Allgemeinen wird ein Computer auch eine oder mehrere Massenspeichergeräte zur Speicherung von Datenbeständen umfassen oder mit diesen zu Kommunikationszwecken operativ gekoppelt sein; solche Geräte umfassen Magnetplatten wie etwa interne Festplatten und Wechselplatten, magnetooptische und optische Laufwerke. Speichergeräte, die für die greifbare Verankerung von Computerprogrammanweisungen und Daten geeignet sind, umfassen alle Arten von nicht flüchtigen Speichern, darunter beispielsweise auch Halbleiterspeicher wie EPROM, EEPROM und Flash-Speichergeräte, Magnetplatten wie etwa interne Festplatten und Wechselplatten, magnetooptische Laufwerke sowie CD-ROM- und DVD-ROM-Laufwerke. Der Prozessor und der Speicher können durch ASICs (application-specific integrated circuits, anwendungsspezifische integrierte Schaltkreise) ergänzt oder in diese mit einbezogen werden.
-
Um die Interaktion mit einem Anwender zu ermöglichen, können die in dieser Spezifikation beschriebenen Funktionen auf einem Computer mit einem Anzeigegerät implementiert werden, z. B. einem CRT-(Kathodenstrahlröhren-) oder LCD-(Flüssigkristallanzeigen-)Monitor, mit welchem dem Benutzer Informationen angezeigt werden, sowie einer Tastatur und einem Anzeigegerät, z. B. einer Maus oder einem Trackball, mit denen der Benutzer Eingaben in den Computer vornehmen kann.
-
Die Funktionen können in einem Computersystem implementiert werden, das eine Backend-Komponente, wie etwa einen Datenserver, oder eine Middleware-Komponente, wie etwa einen Applikationsserver oder Internetserver, oder das eine Frontend-Komponente beinhaltet, wie etwa einen Clientcomputer mit einer grafischen Benutzeroberfläche oder einem Internet-Browser, oder einer beliebigen Kombination derselben. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, wie etwa ein Kommunikationsnetzwerk. Beispiele für Kommunikationsnetze umfassen z. B. LAN, WAN und die Computer und Netzwerke, die das Internet bilden.
-
Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen in Entfernung voneinander und interagieren typischerweise über ein Netzwerk wie das beschriebene. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben.
-
Hiermit wurden einige Implementierungen beschrieben. Trotzdem versteht sich, dass verschiedene Modifikationen durchgeführt werden können, ohne vom Geist und Umfang der Erfindung abzuweichen. Dementsprechend liegen andere Implementierungen im Geltungsbereich der folgenden Ansprüche.