DE202012013462U1 - Datenverarbeitung in einem Mapreduce-Framework - Google Patents

Datenverarbeitung in einem Mapreduce-Framework Download PDF

Info

Publication number
DE202012013462U1
DE202012013462U1 DE202012013462.0U DE202012013462U DE202012013462U1 DE 202012013462 U1 DE202012013462 U1 DE 202012013462U1 DE 202012013462 U DE202012013462 U DE 202012013462U DE 202012013462 U1 DE202012013462 U1 DE 202012013462U1
Authority
DE
Germany
Prior art keywords
input data
aggregator
key
value pairs
data processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE202012013462.0U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202012013462U1 publication Critical patent/DE202012013462U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Computerprogrammprodukt, konkret implementiert in ein computerlesbares Speichergerät, das Instruktionen umfasst, die bei Ausführung durch einen Prozessor ein Verfahren zum Verarbeiten von Eingabedaten in einem Mapreduce-Framework durchführen, wobei das Verfahren Folgendes umfasst: 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; die Initialisierung 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.

Description

  • 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 1204 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 1206 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.

Claims (12)

  1. Computerprogrammprodukt, konkret implementiert in ein computerlesbares Speichergerät, das Instruktionen umfasst, die bei Ausführung durch einen Prozessor ein Verfahren zum Verarbeiten von Eingabedaten in einem Mapreduce-Framework durchführen, wobei das Verfahren Folgendes umfasst: 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; die Initialisierung 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.
  2. Computerprogrammprodukt nach Anspruch 1, worin die Datenverarbeitungsanfrage eine Anzahl von Schlüsseln in den Eingabedaten identifiziert und das Verfahren weiterhin die Durchführung einer Größeneinordnung der identifizierten Anzahl Schlüssel mit Bezug auf die Größe der Eingabedaten umfasst, worin die Map- und Reduce-Operationen, die den Aggregator in Anspruch nehmen, basierend auf der Größeneinordnung für die Initialisierung ausgewählt werden.
  3. Computerprogrammprodukt nach Anspruch 2, worin die Mappers und Reducers unter Verwendung eines Maschinenclusters implementiert werden, wobei die Größeneinordnung den Speicherplatz von einer oder mehrerer der Maschinen berücksichtigt.
  4. Computerprogrammprodukt nach Anspruch 2, worin die Größeneinordnung berücksichtigt, ob die Identifkationsnummer der Schlüssel drei Größenordnungen kleiner ist als die Größe der Eingabedaten.
  5. Computerprogrammprodukt nach Anspruch 1, worin der Aggregator in den Map- und Reduce-Operationen eine Hash-Tabelle verwendet.
  6. Computerprogrammprodukt nach Anspruch 1, worin der Aggregator auf einer kommutativen und assoziativen Aggregierungsfunktion basiert.
  7. System, Folgendes umfassend: mindestens einen Prozessor und mindestens ein computerlesbares Speichergerät, das Instruktionen umfasst, die bei Ausführung das Durchführen eines Verfahrens für die Eingabedatenverarbeitung in einem Mapreduce-Framework veranlassen, wobei das Verfahren Folgendes umfasst: 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; die Initialisierung 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.
  8. System nach Anspruch 7, worin die Datenverarbeitungsanfrage eine Anzahl von Schlüsseln in den Eingabedaten identifiziert und das Verfahren weiterhin die Durchführung einer Größeneinordnung der identifizierten Anzahl Schlüssel mit Bezug auf die Größe der Eingabedaten umfasst, worin die Map- und Reduce-Operationen, die den Aggregator in Anspruch nehmen, basierend auf der Größeneinordnung für die Initialisierung ausgewählt werden.
  9. System nach Anspruch 8, worin die Mappers und Reducers unter Verwendung eines Maschinenclusters implementiert werden, wobei die Größeneinordnung den Speicherplatz von einer oder mehreren der Maschinen berücksichtigt.
  10. System nach Anspruch 8, worin die Größeneinordnung berücksichtigt, ob die Identifkationsnummer der Schlüssel drei Größenordnungen kleiner ist als die Größe der Eingabedaten.
  11. System nach Anspruch 7, worin der Aggregator in den Map- und Reduce-Operationen eine Hash-Tabelle verwendet.
  12. System nach Anspruch 7, worin der Aggregator auf einer kommutativen und assoziativen Aggregierungsfunktion basiert.
DE202012013462.0U 2011-04-01 2012-03-28 Datenverarbeitung in einem Mapreduce-Framework Expired - Lifetime DE202012013462U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/078,500 2011-04-01
US13/078,500 US9798831B2 (en) 2011-04-01 2011-04-01 Processing data in a MapReduce framework

Publications (1)

Publication Number Publication Date
DE202012013462U1 true DE202012013462U1 (de) 2017-01-30

Family

ID=45931048

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202012013462.0U Expired - Lifetime DE202012013462U1 (de) 2011-04-01 2012-03-28 Datenverarbeitung in einem Mapreduce-Framework

Country Status (6)

Country Link
US (1) US9798831B2 (de)
EP (1) EP2695087B1 (de)
CN (1) CN103748579B (de)
AU (1) AU2012236577B2 (de)
DE (1) DE202012013462U1 (de)
WO (1) WO2012135319A1 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9805101B2 (en) 2010-02-26 2017-10-31 Ebay Inc. Parallel data stream processing system
US8938416B1 (en) * 2012-01-13 2015-01-20 Amazon Technologies, Inc. Distributed storage of aggregated data
US9201638B2 (en) * 2012-08-07 2015-12-01 Nec Laboratories America, Inc. Compiler-guided software accelerator for iterative HADOOP® jobs
JP5939123B2 (ja) * 2012-10-09 2016-06-22 富士通株式会社 実行制御プログラム、実行制御方法および情報処理装置
US9146830B2 (en) * 2012-10-26 2015-09-29 Jsmapreduce Corporation Hybrid local/remote infrastructure for data processing with lightweight setup, powerful debuggability, controllability, integration, and productivity features
CN103902592B (zh) * 2012-12-27 2018-02-27 深圳市腾讯计算机系统有限公司 基于MapReduce实现分析函数的方法及系统
US9336024B1 (en) 2012-12-27 2016-05-10 Google Inc. Clustering for parallel processing
US9372942B1 (en) 2013-03-15 2016-06-21 Dell Software Inc. System and method for facilitating data visualization via a map-reduce framework
US10592106B2 (en) 2013-03-20 2020-03-17 Amazon Technologies, Inc. Replication target service
KR101480867B1 (ko) * 2013-05-31 2015-01-09 삼성에스디에스 주식회사 맵리듀스 연산 가속 시스템 및 방법
US9448851B2 (en) 2013-06-19 2016-09-20 International Business Machines Corporation Smarter big data processing using collaborative map reduce frameworks
JP6069503B2 (ja) * 2013-07-01 2017-02-01 株式会社日立製作所 系列データ並列分析基盤およびその並列分散処理方法
US9569561B2 (en) * 2013-07-09 2017-02-14 Cisco Technology, Inc. Label masked addressable memory
US10133800B2 (en) 2013-09-11 2018-11-20 Microsoft Technology Licensing, Llc Processing datasets with a DBMS engine
CN104424339B (zh) * 2013-09-11 2019-02-22 腾讯科技(深圳)有限公司 数据分析的方法、装置及系统
US9639544B1 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Table data persistence
US9563697B1 (en) 2014-02-24 2017-02-07 Amazon Technologies, Inc. Calculating differences between datasets having differing numbers of partitions
WO2015167486A1 (en) * 2014-04-30 2015-11-05 Hewlett-Packard Development Company, L.P. Reducing data in a network device
US10148736B1 (en) * 2014-05-19 2018-12-04 Amazon Technologies, Inc. Executing parallel jobs with message passing on compute clusters
US11094015B2 (en) 2014-07-11 2021-08-17 BMLL Technologies, Ltd. Data access and processing system
US10176273B2 (en) * 2014-08-27 2019-01-08 Verizon Patent And Licensing Inc. Big data parser
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US20160103708A1 (en) * 2014-10-09 2016-04-14 Profoundis Labs Pvt Ltd System and method for task execution in data processing
US10185730B2 (en) * 2014-12-31 2019-01-22 Nexenta Systems, Inc. Methods and systems for key-value-tuple-encoded storage
US10033570B2 (en) * 2015-01-15 2018-07-24 International Business Machines Corporation Distributed map reduce network
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
WO2016159883A1 (en) * 2015-03-30 2016-10-06 National University Of Singapore Extracting information from a data set in a distributed computing environment
US10832443B2 (en) 2015-06-10 2020-11-10 Faculdades Católicas, Associação Sem Fins Lucrativos, Mantenedora Da Pontifícia Universidade Católica Method that supports the analysis of digital images in a computer cluster environment
US10102029B2 (en) * 2015-06-30 2018-10-16 International Business Machines Corporation Extending a map-reduce framework to improve efficiency of multi-cycle map-reduce jobs
US20170134159A1 (en) * 2015-11-05 2017-05-11 Sze Yuen Wong Systems and methods for aggregating encrypted data
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US20200111555A2 (en) * 2016-07-26 2020-04-09 Bayer Business Services Gmbh Synchronization of hierarchical data
US11061736B2 (en) 2016-08-18 2021-07-13 International Business Machines Corporation Multiple parallel reducer types in a single map-reduce job
US11119813B1 (en) * 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
CN108415912B (zh) * 2017-02-09 2021-11-09 阿里巴巴集团控股有限公司 基于MapReduce模型的数据处理方法和设备
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) * 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
WO2020222727A1 (en) * 2019-04-29 2020-11-05 Hitachi Vantara Llc Optimizing storage and retrieval of compressed data
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
CN110442433B (zh) * 2019-06-28 2022-04-22 苏州浪潮智能科技有限公司 一种执行sql任务的方法、设备以及存储介质
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765146A (en) 1993-11-04 1998-06-09 International Business Machines Corporation Method of performing a parallel relational database query in a multiprocessor environment
US6609131B1 (en) * 1999-09-27 2003-08-19 Oracle International Corporation Parallel partition-wise joins
US6931390B1 (en) 2001-02-27 2005-08-16 Oracle International Corporation Method and mechanism for database partitioning
US20040139072A1 (en) * 2003-01-13 2004-07-15 Broder Andrei Z. System and method for locating similar records in a database
US7818349B2 (en) 2004-02-21 2010-10-19 Datallegro, Inc. Ultra-shared-nothing parallel database
US7590620B1 (en) * 2004-06-18 2009-09-15 Google Inc. System and method for analyzing data records
US7650331B1 (en) * 2004-06-18 2010-01-19 Google Inc. System and method for efficient large-scale data processing
US7756919B1 (en) 2004-06-18 2010-07-13 Google Inc. Large-scale data processing in a distributed and parallel processing enviornment
US7469241B2 (en) * 2004-11-30 2008-12-23 Oracle International Corporation Efficient data aggregation operations using hash tables
US8126870B2 (en) 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
US8190610B2 (en) * 2006-10-05 2012-05-29 Yahoo! Inc. MapReduce for distributed database processing
US20090055439A1 (en) 2007-08-24 2009-02-26 Ketera Technologies, Inc. Flexible Dimension Approach In A Data Warehouse
CN101183368B (zh) 2007-12-06 2010-05-19 华南理工大学 联机分析处理中分布式计算及查询海量数据的方法和系统
US8726290B2 (en) * 2008-06-12 2014-05-13 Yahoo! Inc. System and/or method for balancing allocation of data among reduce processes by reallocation
US9268815B2 (en) 2009-08-20 2016-02-23 Hewlett Packard Enterprise Development Lp Map-reduce and parallel processing in databases
US8788499B2 (en) * 2009-08-27 2014-07-22 Yahoo! Inc. System and method for finding top N pairs in a map-reduce setup
US8392403B2 (en) 2009-09-18 2013-03-05 Microsoft Corporation Management of data and computation in data centers
CN101692651B (zh) 2009-09-27 2014-12-31 中兴通讯股份有限公司 一种哈希查找表的方法和装置
US8935232B2 (en) 2010-06-04 2015-01-13 Yale University Query execution systems and methods
US9495427B2 (en) * 2010-06-04 2016-11-15 Yale University Processing of data using a database system in communication with a data processing framework
CN101888405B (zh) 2010-06-07 2013-03-06 北京高森明晨信息科技有限公司 一种云计算的文件系统和数据处理方法
CN101957863B (zh) 2010-10-14 2012-05-09 广州从兴电子开发有限公司 数据并行处理方法、装置及系统
US20120110004A1 (en) * 2010-11-03 2012-05-03 Microsoft Corporation Homomorphism lemma for efficiently querying databases
US8499222B2 (en) * 2010-12-14 2013-07-30 Microsoft Corporation Supporting distributed key-based processes
US8990149B2 (en) * 2011-03-15 2015-03-24 International Business Machines Corporation Generating a predictive model from multiple data sources

Also Published As

Publication number Publication date
US9798831B2 (en) 2017-10-24
CN103748579B (zh) 2018-05-29
AU2012236577A1 (en) 2013-10-24
WO2012135319A1 (en) 2012-10-04
EP2695087A1 (de) 2014-02-12
AU2012236577B2 (en) 2017-04-20
US20120254193A1 (en) 2012-10-04
EP2695087B1 (de) 2020-05-06
CN103748579A (zh) 2014-04-23

Similar Documents

Publication Publication Date Title
DE202012013462U1 (de) Datenverarbeitung in einem Mapreduce-Framework
DE112018004946B4 (de) Kognitive datenanonymisierung
DE202012013427U1 (de) Verknüpfung von Tabellen in einem MapReduce-Verfahren
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE60121231T2 (de) Datenverarbeitungsverfahren
DE102013222384B4 (de) Sicherheits-Screening auf Kontextgrundlage für Zugriff auf Daten
DE202016005239U1 (de) Graph-basierte Abfragen
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE102011101791A1 (de) Verfahren, vorrichtungen und herstellungsgegenstände zumbewerten des einflusses von websites
DE102013208930A1 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE202014011539U1 (de) System zum verteilten Verarbeiten in einer Nachrichtenübermittlungsplattform
DE112016005374T5 (de) Identifizieren von Abfragemustern und zugeordneten aggregierten Statistikdaten unter Suchabfragen
DE212017000237U1 (de) Suche und Abruf von strukturierten Informationskarten
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE112013000713T5 (de) Verfolgen von Änderungen in Zusammenhang mit einer Sammlung von Dokumenten
DE112013000966T5 (de) Vorrichtung, Programm und Verfahren zum Clustern einer Vielzahl von Dokumenten
DE112020004651B4 (de) Multi-tenant-etl-ressourcenaufteilung
DE202017105863U1 (de) Einstufen von Suchergebnisdokumenten
DE112018002266T5 (de) Kognitives Datenfiltern für Speicherumgebungen
DE112017006445T5 (de) Verfahren und Geräte zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen
DE202014010885U1 (de) Beschleunigung basierend auf zwischengespeicherte Flüsse
DE102012204167A1 (de) Vorauslaufende genäherte Berechnungen
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE102013204515A1 (de) Schnelle Prädikattabellensuchen unter Verwendung einer Architektur mit einer Einzelanweisung und mehrfachen Daten
DE112021000338T5 (de) Auslagern der statistikerfassung

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right