DE112017007865T5 - Netzgebundener shuffle-datenspeicher - Google Patents

Netzgebundener shuffle-datenspeicher Download PDF

Info

Publication number
DE112017007865T5
DE112017007865T5 DE112017007865.2T DE112017007865T DE112017007865T5 DE 112017007865 T5 DE112017007865 T5 DE 112017007865T5 DE 112017007865 T DE112017007865 T DE 112017007865T DE 112017007865 T5 DE112017007865 T5 DE 112017007865T5
Authority
DE
Germany
Prior art keywords
key
value
data
pairs
remote
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.)
Pending
Application number
DE112017007865.2T
Other languages
English (en)
Inventor
Xiao Hu
Huan Zhou
Sujoy Sen
Anjaneya R. Chagam Reddy
Mohan J. Kumar
Chong Han
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112017007865T5 publication Critical patent/DE112017007865T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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/25Integrating or interfacing systems involving database management systems
    • 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/23Updating
    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Landscapes

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

Abstract

Es sind hier Einrichtungen zum Berechnen offenbart. Eine Einrichtung kann einen Satz von Datenreduktionsmodulen zum Durchführen von Datenreduktionsoperationen an Sätzen von (Schlüssel, Wert)-Datenpaaren zur Verringerung einer Menge von Werten enthalten, die mit einem gemeinsam benutzten Schlüssel verknüpft sind, wobei die (Schlüssel, Wert)-Datenpaare in mehreren Warteschlangen gespeichert sind, die in mehreren Solid-State-Laufwerken fern von der Einrichtung liegen. Die Einrichtung kann ferner ein Speicherzugriffsmodul enthalten, das kommunikationsfähig an den Satz von Datenreduktionsmodulen gekoppelt ist, um direkt einzelne der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren fernen Solid-State-Laufwerken durch fernen Direktzugriff der Solid-State-Laufwerke über ein Netzwerk ohne Verwendung eines Zwischenstufendatenspeichers zu transferieren. Es können andere Ausführungsformen offenbart oder beansprucht sein.

Description

  • Gebiet
  • Verschiedene Ausführungsformen betreffen im Allgemeinen das Gebiet von Massendatenverarbeitung und insbesondere verbesserte Implementierungen des Shuffle-Paradigmas durch fernen Direktzugriff einer Datenspeichervorrichtung über ein Netzwerk, ohne Verwendung eines Zwischenstufendatenspeichers.
  • Allgemeiner Stand der Technik
  • Die hier bereitgestellte Hintergrundbeschreibung dient dem Zweck, den Kontext der Offenbarung allgemein zu präsentieren. Falls hier nicht anderes angegeben ist, sind die Materialien, die in diesem Abschnitt beschrieben sind, nicht Stand der Technik für die Ansprüche in dieser Anmeldung und sind nicht als Stand der Technik durch Einschluss in diesen Abschnitt zulässig.
  • In Massendatenverarbeitung werden häufig ein MapReduce-Programm, das aus einer Map()-Prozedur und einem Reduce()-Verfahren besteht, verwendet, um Filtern und Sortieren (wie zum Beispiel Sortieren von Studenten nach dem Vornamen in Warteschlangen, eine Warteschlange für jeden Namen) und eine Zusammenfassungsoperation (wie zum Beispiel Zählen der Anzahl von Studenten in jeder Warteschlange, wodurch Häufigkeit von Namen erhalten wird) durchzuführen. Das „MapReduce-System“ (auch als „Infrastruktur“ oder „Framework“ bezeichnet) orchestriert die Verarbeitung durch Einweisen verteilter Server, die die verschiedenen Aufgaben parallel laufen lassen, Verwalten aller Kommunikationen und Datentransfers zwischen den verschiedenen Teilen des Systems und Bereitstellen einer Redundanz und Fehlertoleranz.
  • MapReduce ist ein Framework zur Verarbeitung parallelisierbarer Probleme über große Datensätze unter Verwendung einer großen Anzahl von Computern (Knoten), die gemeinsam als ein Cluster bezeichnet werden, wenn alle Knoten auf demselben lokalen Netzwerk liegen und ähnliche Hardware verwenden, oder als ein Gitter, falls die Knoten gemeinsam von geografisch und administrativ verteilten Systemen verwendet werden und heterogenere Hardware verwenden. Verarbeitung kann an Daten auftreten, die entweder in einem Dateisystem (unstrukturiert) oder in einer Datenbank (strukturiert) gespeichert sind. MapReduce kann die Örtlichkeit von Daten nutzen, diese in der Nähe der Datenspeicherstelle verarbeiten, um einen Kommunikationsmehraufwand zu minimieren. MapReduce kann drei Schritte aufweisen. Erstens einen „Map“-Schritt, wo jeder Mapper-Knoten die „map()“-Funktion an den lokalen Daten anwendet und den Ausgang in einen temporären Datenspeicher schreibt. Ein Master-Knoten stellt sicher, dass nur eine Kopie redundanter Eingangsdaten verarbeitet wird. Zweitens einen „Shuffle“-Schritt, wo Worker-Knoten Daten basierend auf den Ausgangsschlüsseln (produziert durch die „map()“-Funktion) umverteilen, sodass alle Daten, die zu einem Schlüssel gehören auf demselben Worker-Knoten liegen. Schließlich kann es einen „Reduce“-Schritt geben, wo Reduktionsknoten jede Gruppe von Ausgangsdaten pro Schlüssel parallel verarbeiten.
  • MapReduce erlaubt eine verteilte Verarbeitung der Map- und Reduktionsoperationen. Vorausgesetzt, dass jede Mapping-Operation von den anderen unabhängig ist, können alle Maps parallel durchgeführt werden - obwohl in der Praxis dies durch die Anzahl unabhängiger Datenquellen und/oder die Anzahl von CPUs nahe jeder Quelle begrenzt ist. Ebenso kann ein Satz von „Reduzierern“ die Reduktionsphase durchführen, vorausgesetzt, dass alle Ausgänge der Map-Operation, die sich denselben Schlüssel teilen, demselben Reduzierer zum selben Zeitpunkt präsentiert werden.
  • Heute kann MapReduce nicht vollständig zum Durchbruch verholfen werden, insbesondere in Bezug auf einen effizienten Transfer von Daten zwischen einem Mapper-Modul und einem Reduktionsmodul.
  • Figurenliste
  • Ausführungsformen werden aus der folgenden ausführlichen Beschreibung in Verbindung mit den beiliegenden Zeichnungen verständlich. Zur Erleichterung dieser Beschreibung bezeichnen gleiche Bezugszeichen gleiche Strukturelemente. Ausführungsformen sind als Beispiel und nicht zur Einschränkung in den Figuren der beiliegenden Zeichnungen veranschaulicht.
    • 1 veranschaulicht ein beispielhaftes System gemäß verschiedenen Ausführungsformen.
    • 2A veranschaulicht einen direkten Shuffle gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
    • 2B veranschaulicht eine beispielhafte Implementierung eines Shuffle, der einen Zwischenstufendatenspeicher verwendet.
    • 3A veranschaulicht eine beispielhafte Implementierung eines direkten Shuffle gemäß verschiedenen Ausführungsformen.
    • 3B veranschaulicht eine Instanziierung des direkten Shuffle von 3A gemäß einer Ausführungsform.
    • 4 veranschaulicht Erstellung eines Schlüssel-Arrays in einem Speicher eines Mapping-Moduls und eines Wert-Arrays in einem Festkörperspeicher, der an das Mapping-Modul gekoppelt ist, gemäß verschiedenen Ausführungsformen.
    • 5A veranschaulicht einen Überblick über den Operationsablauf eines Prozesses zum Generieren von Sätzen von in Warteschlange gereihten Zwischen- (Schlüssel, Wert)-Datenpaaren aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren unter Verwendung eines Mapping-Moduls und Schreiben der Warteschlangen von Zwischen-(Schlüssel, Wert)-Datenpaaren in einen Festkörperspeicher durch fernen Direktzugriff des Festkörperspeichers über ein Netzwerk unter Verwendung eines Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Protokolls gemäß verschiedenen Ausführungsformen.
    • 5B veranschaulicht einen Überblick des Operationsablaufs eines Prozesses zum Transferieren einzelner von Sätzen von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von mehreren Festkörperspeichern durch wahlfreien Transfer unter Verwendung eines Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Protokolls gemäß verschiedenen Ausführungsformen.
    • 6 veranschaulicht einen Überblick des Operationsablaufs eines Prozesses zum Durchführen einer Mapping-Operation an einem Satz lokaler Daten, Generieren und Transferieren eines sequenziellen Wert-Arrays und Generieren und Bewahren eines sequenziellen Schlüssel-Arrays, gemäß verschiedenen Ausführungsformen.
    • 7 veranschaulicht ein Blockdiagramm einer Computervorrichtung, die zum Umsetzen der vorliegenden Offenbarung in die Praxis geeignet ist, gemäß verschiedenen Ausführungsformen.
    • 8 veranschaulicht ein beispielhaftes computerlesbares Datenspeichermedium mit Anweisungen, die konfiguriert sind, Aspekte der Prozesse von 5A, 5B und 6 in die Praxis umzusetzen, gemäß verschiedenen Ausführungsformen.
  • Ausführliche Beschreibung
  • Cloud-Computing (Rechnerwolke) ist eine relativ neue Form einer Internet-basierten Berechnung, die gemeinsam Computerverarbeitungsressourcen und Daten für Computer und andere Vorrichtungen nach Bedarf bereitstellt. Es ist ein Modell, das allgegenwärtigen Zugriff nach Bedarf auf einen gemeinsamen Pool konfigurierbarer Rechenressourcen (z.B. Computernetzwerke, Server, Datenspeicher, Anwendungen und Dienste) ermöglicht, die mit minimalem Verwaltungsaufwand rasch vorgesehen und freigegeben werden können. Im Prinzip erlaubt Cloud-Computing den Benutzern und Unternehmen mit unterschiedlichen Kapazitäten ihre Daten entweder in einer privat besessenen Cloud oder auf einem Drittpartei-Server zu speichern und zu verarbeiten, um Datenzugriffsmechanismen viel leichter und zuverlässiger zu machen. Es kann auf Datenzentren, die weit vom Benutzer entfernt gelegen sein können - mit einer Distanz, die von einer über eine Stadt bis zu weltweit reicht -zugegriffen werden. Cloud-Computing beruht auf einer gemeinsamen Benutzung von Ressourcen, um Kohärenz und Größenvorteile zu erreichen, ähnlich einer Nutzenfunktion (wie dem Elektrizitätsnetz) über ein Stromnetz.
  • Es wird jedoch festgehalten, dass für viele Massendaten- und Cloud-Computing-Anwendungen herkömmliche Datenspeicher und Datenspeicherzentren nicht mit dem intensiven Fern-Wahlfrei-I/O-Anforderungen Schritt halten können, denen sie unterliegen. Ein Beispiel einer Massendatenanwendung ist das Hadoop® MapReduce Progammierungs-Framework. Hadoop® ist ein Open-Source-, Java-basiertes Programmierungs-Framework, das die Verarbeitung und verteilten Datenspeicher sehr großer Datensätze unterstützt. Im Gegensatz zur Verwendung eines großen Computers zum Verarbeiten und Speichern von Daten erlaubt Hardoop® einer Clustering Standardhardware, gemeinsam massive Datensätze parallel zu analysieren.
  • MapReduce erlaubt massive Skalierbarkeit über hunderte oder tausende von Servern in einem Hadoop®-Cluster. Der Begriff MapReduce bezieht sich tatsächlich auf zwei separate und eigenständige Aufgaben, die Hadoop®-Programme durchführen. Die erste ist der Map-Job, der einen Satz von Daten nimmt und ihn in einen anderen Satz von Daten umwandelt, wo einzelne Elemente in Tupel (<Schlüssel, Wert>-Paare) aufgebrochen werden. Der Reduktionsjob nimmt den Ausgang von einer Map als seinen Eingang und kombiniert diese Datentupel in kleinere Tupelsätze. Wie die Abfolge des Namens MapReduce schließen lässt, wird der Reduktionsjob immer nach dem Map-Job durchgeführt. Hadoop® MapReduce verarbeitet Arbeitslasten unter Verwendung von Frameworks, die Jobs in kleinere Arbeitseinheiten aufbrechen, die über Knoten in Cloud-Computing-Clustern verteilt werden können. Überdies können Benutzer durch Speichern von Daten in einem fernen Datenzentrum ihre Rechenschicht von ihrer Datenspeicherschicht entkoppeln und müssen keine zusätzlichen Knoten in ihrer Rechenschicht haben, um einen Datenspeicher auf dem Cluster zu maximieren.
  • Wie ausführlicher in der Folge beschrieben ist, ruft ein MapReduce-Prozess theoretisch intensiven Fern-Wahlfrei-I/O an den Map-Ausgängen auf, wenn mehrere Reduces gleichzeitig versuchen, die erforderlichen <Schlüssel, Wert>-Paare, eines nach dem anderen, von jeder der Maps abzurufen. Aus diesem Grund wurde im Allgemeinen der theoretisch ideale MapReduce-Prozess nicht unter Verwendung herkömmlicher Infrastruktur implementiert, die langsame Datenspeichermedien (z.B. Festplatten), langsame Datenspeicherschnittstelle/Protokolle (z.B. Serial AT Attachment (SATA)) und herkömmliche Netzwerkstapel wie Hypertext Transfer Protocol (HTTP) over Transport Connect Protocol/Internet Protocol (TCP/IP) enthält. Somit, wie in der Folge beschrieben, mussten herkömmliche, enthaltend jene nach dem Stand der Technik, Implementierungen Kompromisse finden, was zu einem weniger als effizienten MapReduce-Prozess führte, der sein volles Potential und somit das volle Potential einer Massendatenverarbeitung, die ihn benutzt, nicht ausschöpft.
  • In Ausführungsformen kann eine Lösung dieses Problems in Festplattenlaufwerken und den Netzwerkprotokollen, die für einen Zugriff auf diese verwendet werden können, liegen. In Ausführungsformen können zum Beispiel Hochleistungs-Solid-State-Laufwerke, die Byte-adressierbaren nicht flüchtigen Direktzugriffsspeicher enthalten, verwendet werden (z.B. 3D- Crosspoint-Speicher). In Ausführungsformen kann auf diese Solid-State-Laufwerke unter Verwendung hochentwickelter Spezifikationen zugegriffen werden, wie zum Beispiel der Nonvolatile Memory Express (NVMe) Over Fabrics-Spezifikation, die eine Technologiespezifikation ist, die gestaltet ist, NVMe-nachrichtenbasierten Befehlen zu ermöglichen, Daten zwischen einem Host Computer und einer Ziel-Solid-State-Datenspeichervorrichtung oder einem System unter Verwendung eines Netzwerkprotokolls wie Ethernet, Fibre Channel und InfiniBand zu transferieren.
  • 1 veranschaulicht ein beispielhaftes System 100, das in Ausführungsformen für einen Zugriff auf NVMe-Solid-State-Laufwerke unter Verwendung der NVMe-über-Fabric-Spezifikation verwendet werden kann. Unter Bezugnahme auf 1 kann ein Satz von Servern, Server 1 151 bis Server N 157, in einem oder mehreren Server-Racks 150 vorhanden sein. Die Server in Server-Racks 150 können Verarbeitung von Daten durchführen, wie eines oder beide von einem Hadoop® MapReduce-Prozess. Die verschiedenen Ausgänge eines Map-Prozesses, die die Eingänge zu einem entsprechenden Reduce-Prozess sind, können zum Beispiel in Datenspeicher-Racks 170 gespeichert werden, auf die über Netzwerk-Fabric 160 durch Kommunikationsverbindungen 161 zugegriffen wird. In Ausführungsformen kann Netzwerk-Fabric 160 einem Standard entsprechen, der von NVM Express angegeben ist, wie NVMe over Fabrics 1.0 Gold (dieser Standard ist unter www. nvmexpress.org erhältlich). Es können zusätzlich Kommunikationen zwischen Server-Rack 150 und Datenspeicher-Racks 170 über Netzwerkzwischenverbindung 163 vorliegen, die eines oder mehrere von Inifiniband (IB), Fibre Channel (FC), Ethernet, Remote Direct Memory Access (RDMA) oder O-miniPath® sein können.
  • Mit anhaltender Bezugnahme auf 1 können Datenspeicher-Racks 170 mehrere netzwerkgebundene Computerdatenspeicher-Server, NAS-Heads 171 bis 177 enthalten, die über Fabric 181 mit mehreren entsprechenden Solid-State-Datenspeichermodulen 175 bis 177 verbunden sein können. Es können auch Kommunikationen zwischen NAS-Heads 171 bis 177 und entsprechenden Solid-State-Datenspeichermodulen 175 bis 177 über Netzwerkzwischenverbindung 191 vorliegen. Fabric 181 kann auch NVMe-über-Fabric-konform sein, und kann, wie dargestellt, innerhalb eines gegebenen Datenzentrums sein oder kann in der Cloud bereitgestellt sein. Solid-State-Datenspeichermodule 175 bis 177 können jeweils ein feldprogrammierbares Gate-Array, FPGA 182, 183 und mehrere Solid-State-Laufwerke enthalten, hier zum Beispiel NVMe-Laufwerke 185, 187. In Ausführungsformen können NVMe-Laufwerke 185, 187 Hochleistungsdatenspeichermedien enthalten, wie zum Beispiel 3D- Cross-Point.
  • In Ausführungsformen kann eine Einrichtung zum Berechnen einen Satz von Datenreduktionsmodulen zur Durchführen von Datenreduktionsoperationen an Sätzen von (Schlüssel, Wert)-Datenpaaren enthalten, um eine Menge von Werten zu verringern, die mit einem gemeinsam benutzten Schlüssel verknüpft sind, wobei die (Schlüssel, Wert)-Datenpaare in mehreren Warteschlangen gespeichert sind, die in mehreren Festkörperspeichern fern von der Einrichtung liegen. Die Einrichtung kann ferner ein Speicherzugriffsmodul enthalten, das kommunikationsfähig an den Satz von Datenreduktionsmodulen gekoppelt ist, um wahlfrei einzelne der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren fernen Festkörperspeichern durch fernen Direktzugriff des Festkörperspeichers, über ein Netzwerk unter Verwendung eines Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Protokolls, ohne Verwendung eines Zwischenstufendatenspeichers zu transferieren.
  • Die folgende ausführliche Beschreibung bezieht sich auf die beiliegenden Zeichnungen. Dieselben Bezugszeichen können in verschiedenen Zeichnungen verwendet werden, um dieselben oder ähnliche Elemente zu identifizieren. In der folgenden Beschreibung werden zu Erklärungszwecken und nicht zur Einschränkung spezifische Details angeführt, wie besondere Strukturen, Architekturen, Schnittstellen, Techniken usw., um ein umfassendes Verständnis der verschiedenen Aspekte von verschiedenen Ausführungsformen zu ermöglichen. Fachleuten auf dem Gebiet wird mit Hilfe der vorliegenden Offenbarung klar sein, dass die verschiedenen Aspekte der verschiedenen Ausführungsformen in anderen Beispielen in die Praxis umgesetzt werden können, die von diesen spezifischen Details abweichen. In gewissen Fällen fehlen Beschreibungen allgemein bekannter Vorrichtungen, Schaltungen und Verfahren, um die Beschreibung der verschiedenen Ausführungsformen nicht mit unnötigem Detail zu verschleiern.
  • Verschiedene Operationen können wiederum als mehrere einzelne Aktionen oder Operationen in einer Weise beschrieben sein, die für ein Verständnis des beanspruchten Gegenstands am hilfreichsten ist. Die Reihenfolge der Beschreibung sollte jedoch nicht in der Bedeutung ausgelegt werden, dass diese Operationen unbedingt von einer Reihenfolge abhängig sind. Insbesondere können diese Operationen nicht in der Reihenfolge der Darstellung durchgeführt werden. Beschriebene Operationen können in einer anderen Reihenfolge als der beschriebenen Ausführungsform durchgeführt werden. In zusätzlichen Ausführungsformen können verschiedene zusätzliche Operationen durchgeführt oder beschriebene Operationen unterlassen werden.
  • Wie hier, einschließlich in den Ansprüchen, verwendet, kann sich der Begriff „Schaltkreis“ auf eine Application Specific Integrated Circuit (ASIC, anwendungsspezifische integrierte Schaltung), eine elektronische Schaltung, einen Prozessor (gemeinsam benutzt, dediziert oder Gruppe) und/oder Speicher (gemeinsam benutzt, dediziert oder Gruppe), die eine oder mehrere Software- oder Firmware- Programme durchführen, eine kombinatorische Logikschaltung und/oder andere geeignete Hardware-Komponenten, die die beschriebene Funktionalität bereitstellen, beziehen, Teil davon sein oder diese(n) enthalten. In einigen Ausführungsformen kann der Schaltkreis in einem oder mehreren Software- oder Firmware-Modulen implementiert sein oder Funktionen, die mit dem Schaltkreis verknüpft sind, können durch diese implementiert sein. In einigen Ausführungsformen kann der Schaltkreis Logik enthalten, die zumindest teilweise in Hardware betreibbar ist.
  • In der folgenden Beschreibung wird auf die beiliegenden Zeichnungen Bezug genommen, die einen Teil hiervon bilden, wobei gleiche Bezugszeichen durchgehend gleiche Teile bezeichnen und in welchen zur Veranschaulichung Ausführungsformen dargestellt sind, die in die Praxis umgesetzt werden können. Es ist klar, dass andere Ausführungsformen verwendet und strukturelle oder logische Änderungen vorgenommen werden können, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Daher ist die folgende ausführliche Beschreibung nicht in einem einschränkenden Sinn zu verstehen und der Umfang von Ausführungsformen ist durch die beiliegenden Ansprüche und ihre Äquivalente definiert.
  • Operationen verschiedener Verfahren können als mehrere eigenständige Aktionen oder wiederum Operationen in einer Weise beschrieben sein, die für ein Verständnis des beanspruchten Gegenstands am hilfreichsten ist. Die Reihenfolge der Beschreibung sollte jedoch nicht in der Bedeutung ausgelegt werden, dass diese Operationen unbedingt von einer Reihenfolge abhängig sind. Insbesondere können diese Operationen nicht in der Reihenfolge der Darstellung durchgeführt werden. Beschriebene Operationen können in einer anderen Reihenfolge als der beschriebenen Ausführungsform durchgeführt werden. In zusätzlichen Ausführungsformen können verschiedene zusätzliche Operationen durchgeführt oder beschriebene Operationen unterlassen, geteilt oder kombiniert werden.
  • Für den Zweck der vorliegenden Offenbarung bedeutet die Phrase „A und/oder B“ (A), (B) oder (A und B). Für den Zweck der vorliegenden Offenbarung bedeutet die Phrase „A, B, und/oder C“ (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
  • Die Beschreibung kann die Phrasen „in einer Ausführungsform“ oder „in Ausführungsformen“ verwenden, die sich jeweils auf eine oder mehrere derselben oder verschiedener Ausführungsformen beziehen können. Ferner sind die Begriffe „aufweisend“, „enthaltend“ „mit“ und dergleichen, wie in Bezug auf Ausführungsformen der vorliegenden Offenbarung verwendet, synonym.
  • Ebenso wird festgehalten, dass Ausführungsformen als ein Prozess beschrieben sein können, der als ein Ablaufdiagramm, ein Flussdiagramm, ein Datenflussdiagramm, ein Strukturdiagramm oder ein Blockdiagramm dargestellt sein kann. Obwohl ein Ablaufdiagramm die Operationen als einen sequenziellen Prozess beschreiben kann, können viele der Operationen parallel, zeitgleich oder simultan durchgeführt werden. Zusätzlich kann die Reihenfolge der Operationen neu geordnet werden. Ein Prozess kann beendet werden, wenn seine Operationen vollendet sind, kann aber auch zusätzliche Schritte aufweisen, die in der (den) Figur(en) nicht enthalten sind. Ein Prozess kann einem Verfahren, einer Funktion, einer Prozedur, einer Subroutine, einem Unterprogramm und dergleichen entsprechen. Wenn ein Prozess einer Funktion entspricht, kann seine Beendigung einer Rückkehr der Funktion zur anrufenden Funktion und/oder der Hauptfunktion entsprechen. Ferner kann ein Prozess durch Hardware, Software, Firmware, Middleware, Mikrocode, Hardware-Beschreibungssprachen oder eine beliebige Kombination davon implementiert sein. Wenn in Software, Firmware, Middleware oder Mikrocode implementiert, können der Programmcode oder die Codesegmente zum Durchführen der notwendigen Aufgaben in einem maschinen- oder computerlesbaren Medium gespeichert sein. Ein Codesegment kann eine Prozedur, eine Funktion, ein Teilprogramm, ein Programm, eine Routine, eine Subroutine, ein Modul, Programmcode ein Software-Package, eine Klasse oder eine beliebige Kombination von Anweisungen, Datenstrukturen, Programmstatements und dergleichen darstellen.
  • Wie hier in der Folge, einschließlich der Ansprüche, verwendet, kann sich der Begriff „Schaltkreis“ auf eine Application Specific Integrated Circuit (ASIC), eine elektronische Schaltung, einen Prozessor (gemeinsam benutzt, dediziert oder Gruppe, enthaltend ein oder mehrere "Verarbeitungselemente (PEs) einer Datenflussmaschine) und/oder Speicher (gemeinsam benutzt, dediziert oder Gruppe), die eine oder mehrere Software- oder Firmware-Programme durchführen, eine kombinatorische Logikschaltung (z.B. feldprogrammierbare Gate-Arrays (FPPGA)) und/oder andere geeignete Hardware-Komponenten, die die beschriebene Funktionalität bereitstellen, beziehen, Teil davon sein oder diese(n) enthalten. In einigen Ausführungsformen kann der Schaltkreis in einem oder mehreren Software- oder Firmware-Modulen implementiert sein oder Funktionen, die mit dem Schaltkreis verknüpft sind, können durch diese implementiert sein.
  • Wie hier in der Folge, einschließlich der Ansprüche, verwendet, kann der Begriff „Speicher“ eine oder mehrere Hardware-Vorrichtungen zum Speichern von Daten darstellen, enthaltend Direktzugriffsspeicher (RAM), magnetischen RAM, Kernspeicher, Nur-LeseSpeicher (ROM), Magnetplattendatenspeichermedien, optische Datenspeichermedien, nicht flüchtigen Speicher, nicht flüchtige Solid-State-Laufwerke (z.B. NVMe-Solid-State-Laufwerke (SSD)), Flash-Speichervorrichtungen und/oder andere maschinenlesbare Medien zum Speichern von Daten. Der Begriff „computerlesbares Medium“ kann Speicher, tragbare oder feststehende Datenspeichervorrichtungen, optische Datenspeichervorrichtungen, drahtlose Kanäle und verschiedene andere Medien enthalten, ohne aber darauf beschränkt zu sein, die imstande sind, Anweisung(en) und/oder Daten zu speichern, aufzunehmen oder zu tragen.
  • Wie hier in der Folge, einschließlich der Ansprüche, verwendet, können die Begriffe „mappen“, „Map“ und „Map-Prozedur“ untereinander austauschbar verwendet werden, um sich auf eine Mapping-Operation in einem Map-Reduce-Framework zu beziehen. Ebenso können die Begriffe „reduzieren“, „Reduce“ und „Reduce-Verfahren“ untereinander austauschbar verwendet werden, um sich auf eine Reduktionsoperation in einem Map-Reduce-Framework zu beziehen.
  • In Ausführungsformen kann ein direktes Shuffle durchgeführt werden, wie in der Folge ausführlich beschrieben ist. Um zu verstehen, was unter einem „direkten Shuffle“ verstanden wird, veranschaulicht 2A ein verallgemeinertes System 100 zur Durchführung eines (theoretischen) direkten Shuffle, das der effizienteste Prozess zur Durchführung einer MapReduce-Operation ist. Direktes Shuffle ist manchmal als „theoretisch“ bekannt, da es die effizienteste Methode verwendet. Wie jedoch oben festgehalten wurde und wie in der Folge ausführlich unter Bezugnahme auf 2B beschrieben ist, waren herkömmliche Systeme - anders als verschiedene hier offenbarte Ausführungsformen - aufgrund verschiedener Eingangs-/Ausgangs- (I/O)-Flaschenhälse nicht imstande, das System von 2A zu implementieren.
  • Unter Bezugnahme auf 2A, beginnend ganz links in der Figur, kann ein Satz von Map-Modulen, Map 1 201, Map 2 203, Map 3 205 und Map 4 207, vorliegen. Jedes Map-Modul 201-207 kann jeweils einen Satz lokaler Daten zu diesem Map-Modul bearbeiten und kann entsprechende Map-Ausgänge 211-217 generieren, die jeweils eine oder mehrere Warteschlangen von <Schlüssel, Wert>-Paare haben (Achtung: jede Reihe innerhalb eines Map-Ausgangs 211-217 ist eine Warteschlange). Jede Warteschlange kann in einer lokalen Reihenfolge sortiert sein. Somit, unter Bezugnahme auf 2A, sind Beispiele von vier Maps dargestellt, Map 1 201, Map 2, 203, Map 3 205 und Map 4 207. Jede Map gibt Sätze von <Schlüssel, Wert>-Paaren, organisiert durch den Schlüssel, in einen entsprechenden Map-Ausgang aus, der ein Speicher sein kann. Ein Map-Ausgang kann an die Map gekoppelt sein oder kann zum Beispiel von der Map getrennt sein. Map-Ausgang 211 empfängt die Daten von Map 1 201, Map-Ausgang 213 empfängt die Daten von Map 2 203, Map-Ausgang 215 empfängt die Daten von Map 3 205 und Map-Ausgang 217 empfängt die Daten von Map 4207.
  • Bei Betrachtung von Map-Ausgang 211, wie angegeben, enthält dieser mehrere Warteschlangen von <Schlüssel, Wert>-Paaren, die von Map 1 201 ausgegeben werden. Die obere Warteschlange in Map-Ausgang 211 beinhaltet <Schlüssel, Wert>-Paare aufweisend Schlüssel K1, K2 und K3. Wie erkennbar ist, hat Map-Ausgang 213, in seiner obersten Warteschlange einen anderen Satz von <Schlüssel, Wert>-Paaren als einer von Map-Ausgang 211 oder Map-Ausgängen 215 und 217 in ihrer entsprechenden obersten Warteschlange haben, auch wenn jede oberste Warteschlange Daten nur von Schlüsseln K1, K2 und K3 hält. Der Grund ist, dass jede Map ihre eigenen lokalen Daten bearbeitet. Wie jedoch oben festgehalten wurde, muss ein Reduce-Modul, um eine Reduktionsoperation durchzuführen, alle <Schlüssel, Wert>-Paare sammeln, die von allen Map-Modulen ausgegeben werden, verknüpft mit einem gegebenen Schlüssel, beispielsweise K1. Hier setzt Shuffle ein. Während Shuffle ruft im Idealfall jedes Reduktionsmodul fern von allen Map-Ausgängen die entsprechenden <Schlüssel, Wert>-Paare einzeln in einer globalen Reihenfolge ab.
    Zur Veranschaulichung dessen, sind unter anhaltender Bezugnahme auf 2A, drei Reduktionsmodule dargestellt, von welchen jedes kommunikationsfähig an alle vier der Map-Ausgänge 211, 213, 215 und 217 gekoppelt ist. Diese Reduktionsmodule enthalten Reduce 1 231, Reduce 2 233 und Reduce 3 235. Wie zur einfachen Veranschaulichung dargestellt, bearbeitet Reduce 1 231 <Schlüssel, Wert>-Paare mit Schlüsseln K1, K2 und K3, Reduce 2 233 bearbeitet <Schlüssel, Wert>-Paare mit Schlüsseln K4, K5 und K6, und Reduce 3 235 bearbeitet <Schlüssel, Wert>-Paare mit Schlüsseln K7, K8 und K9. Wenn Reduce 1 231 als Beispiel genommen wird, greift Reduce 1 231, um die Reduktionsoperation durchzuführen, auf die oberste Warteschlange von <Schlüssel, Wert>-Paaren von jedem von Map-Ausgängen 211, 213, 215 und 217 in einer globalen Reihenfolge für jeden Schlüssel zu. Dies ist durch Pfeile 221, 223, 225, und 227 dargestellt, die Speichertransfers von den jeweiligen Map-Ausgängen 211, 213, 215 und 217, alle zu Reduce 1 231, angeben. Auf die <Schlüssel, Wert>-Paare wird in globaler Reihenfolge zugegriffen, was bedeutet, dass auf alle der <Schlüssel, Wert>-Paare, aufweisend Schlüssel K1, der Reihe nach von jedem Map-Ausgang zugegriffen wird, bevor Reduce 1 mit einem Zugriff auf die <Schlüssel, Wert>-Paare beginnt, die durch Schlüssel K2 indiziert sind, und so weiter für Schlüssel K2 und K3. Jedes von Reduce 2 233 und Reduce 3 235 führt denselben Zugriff auf <Schlüssel, Wert>-Paare von allen Map-Ausgängen in globaler Reihenfolge durch. Da Daten von mehreren einzelnen Map-Ausgängen zu jedem von mehreren Reduktionsmodulen transferiert werden, wird behauptet, dass die <Schlüssel, Wert>-Paardaten „geshuffelt“ sind.
  • Wie aus der vorangehenden Beschreibung klar erkennbar ist, ist es bei einer Implementierung eines theoretischen Shuffle nicht effizient - oder erforderlich -, dass ein Reduktionsmodul zuerst eine global sortierte <Schlüssel, Wert>-Sequenz irgendwo speichert, um alle der relevanten <Schlüssel, Wert>-Paare sequenzialisiert zu haben, und dann anschließend die Reduktionsoperation durchführt. Vielmehr kann das System so gestaltet sein, dass jedes Reduktionsmodul die <Schlüssel, Wert>-Paare, die es benötigt, einzeln in einer globalen Reihenfolge, direkt von den Ausgängen aller Maps abruft, während es eine Reduktionsoperation durchführt. Wie offensichtlich ist, ruft der theoretische Shuffle Prozess intensiven Fern-Wahlfrei-I/O an den Map-Ausgängen auf, wenn mehrere Reduces gleichzeitig versuchen, die erforderlichen <Schlüssel, Wert>-Paare einzeln aus jeder der Maps abzurufen. Aus diesem Grund, wie oben beschrieben, wurde im Allgemeinen theoretisches Shuffle nicht unter Verwendung herkömmlicher Infrastruktur implementiert, die langsamere Datenspeichermedien aufweist (z.B. Festplatten oder herkömmliche Festkörpervorrichtungen (SSDs)), langsamere Datenspeicherschnittstelle/Protokolle (z.B. Serial AT Attachment (SATA)), und herkömmliche Netzwerkstapel (z.B. Hypertext Transfer Protocol (HTTP) over Transport Connect Protocol/Internet Protocol (TCP/IP) usw.). Somit mussten herkömmliche, enthaltend jene nach dem Stand der Technik, Implementierungen Kompromisse finden, was zu einem weniger als effizienten Shuffle führte.
  • Es ist offensichtlich, dass unter Verwendung des Systems von 1, oder eines ähnlichen, ein theoretisches Shuffle implementiert werden kann, wo jedes der Map- und der Reduce-Module in einem Server-Rack wie Server-Rack 150 bereitgestellt ist, und wo der Ausgang der Maps in Datenspeicher-Racks 170 gespeichert ist. Unter Verwendung von Hochleistungs-Solid-State-Laufwerken, die Byte-adressierbaren, nicht flüchtigen Direktzugriffsspeicher verwenden, und Ausführen von wahlfreien Lese-/Schreibvorgängen in und aus diesen unter Verwendung hochentwickelter Spezifikationen, wie zum Beispiel der Nonvolatile Memory Express (NVMe)-über-Fabric-Spezifikation, wie oben beschrieben, kann das theoretische Shuffle erzielt werden und die volle Leistung einer MapReduce-Programmierung realisiert werden. 3A und 3B, die in der Folge beschrieben sind, veranschaulichen ähnliche Systeme wie jenes von 1A, sind aber zur Optimierung einer MapReduce-Verarbeitung angepasst.
  • Bevor mit den Systemen von 3A und 3B fortgefahren wird, wird zum besseren Verständnis herkömmlicher Implementierungen von MapReduce und deren Einschränkungen anschließend ein typisches Beispiel eines weniger als effizienten Shuffle, das in einem Hadoop® (MapReduce) Framework implementiert ist, unter Bezugnahme auf 2B beschrieben.
  • In solchen beeinträchtigten Implementierungen ruft jedes Reduktionsmodul (z.B. Hadoop® Reduce), anstelle <Schlüssel, Wert>-Paare einzeln in einer globalen Reihenfolge, wie oben beschrieben, abzurufen, tatsächlich die gesamte entsprechende <Schlüssel, Wert>-Paar-Warteschlange zu einem Zeitpunkt von jeder spezifischen Map ab. Der Grund ist, die wahlfreien Lese-I/Os an der Seite der Map zu sequenziellen Lese-I/Os zu ändern, sodass eine herkömmliche Infrastruktur den I/O handhaben kann.
  • Infolgedessen wurde ein zusätzlicher Zwischenstufendatenspeicherschritt erstellt, bekannt als Vereinen und Sortieren (z.B. ein Hadoop® Vereinen-Sortieren), wo auf alle der verschiedenen Map-Ausgangswarteschlangen zuerst zugegriffen wird, auf einer Basis von Warteschlange für Warteschlange, die dann gespeichert und zu einer einzelnen Warteschlange an der Reduce-Seite sortiert werden, um alle der <Schlüssel, Wert>-Paare, die für eine Reduce-Operation erforderlich sind, in eine globale Reihenfolge zu sortieren. Üblicherweise kann ein solches Vereinen-Sortieren nicht im Hauptspeicher beinhaltet sein, sondern die Daten müssen als Dateien zu einem Datenspeicher überlaufen, auf den die Reduktionsmodule zugreifen können.
  • 2B veranschaulicht den Vereinen- und Sortieren-Schritt. Unter Bezugnahme darauf veranschaulicht 2B eine Map-Seite 250, aufweisend Maps 1-4 201, 203, 205, 207 und Ausgänge von Maps 211, 213, 215 und 217, wie oben in Verbindung mit 2A beschrieben. Die <Schlüssel, Wert>-Datenpaare, die in jedem der Map-Ausgänge gespeichert sind, werden nicht einzeln, in einer globalen Reihenfolge über alle Map-Ausgänge 211, 213, 215 und 217 transferiert, sondern vielmehr wird zuerst jede Warteschlange, von jedem Map-Ausgang, entsprechend einer einzelnen Map, zu einem Vereinen-Sortieren-Zwischendatenspeicher 230 transferiert. Im Vereinen-Sortieren-Zwischendatenspeicher 230 werden volle Warteschlangen empfangen und dann in eine global korrekte Reihenfolge sortiert. Daher werden, unter Bezugnahme auf 2B, zum Beispiel die obersten Warteschlangen von jedem von Map-Ausgängen 211, 213, 215, und 217 (beinhaltend Datenpaare, die Schlüssel K1, K2 und K3 aufweisen) zum Vereinen-Sortieren-Zwischendatenspeichermodul 231 transferiert, wobei die Transfers durch Pfeile 221, 223, 225 bzw. 227 dargestellt sind. Die Warteschlangen werden dann, wie bei 236 gezeigt, im Vereinen-Sortieren-Zwischendatenspeichermodul 231 gespeichert. Anschließend werden die jeweiligen Warteschlangen kombiniert. Somit werden, unter Bezugnahme auf 2B, die oberen Warteschlangen von Map-Ausgängen 211 und 212 zur kombinierten Warteschlange 237 kombiniert. Kombinierte Warteschlange 237 wird dann mit dem Map-Ausgang 215 von Map 205 kombiniert, um kombinierte Warteschlange 238 zu erhalten, und schließlich wird dann kombinierte Warteschlange 238 mit dem Map-Ausgang 217 von Map 207 kombiniert, um kombinierte Warteschlange 239 zu erhalten. Schließlich wird kombinierte Warteschlange 239 in Reduce 1 241 eingegeben. Ein vollständig analoger Prozess erfolgt in jedem von Vereinen-Sortieren-Zwischendatenspeichermodulen 233 (für Datenpaare, die Schlüssel K4, K5 und K6 aufweisen) und 235 (für Datenpaare, die Schlüssel K7, K8 und K9 aufweisen) und wird nicht im Detail beschrieben.
  • Es wird festgehalten, dass der Vereinen- und Sortieren-Kompromiss drei Nachteile aufweist, die nicht vorliegen, wenn ein direktes Shuffle durchgeführt wird. Erstens erfordert er zusätzliche Zeit zum Ausführen von Vereinen-Sortieren an der Reduce-Seite. Noch schlimmer, da sehr häufig mehrere übergelaufene Dateien (aus Vereinen-Sortieren-Zwischendatenspeichermodulen und in langfristigen Speicher, der an die Reduktionsmodule gekoppelt ist, da die Dateien zu groß sind, um im kurzfristigen Speicher gespeichert zu werden) auftreten. Die übergelaufenen Dateien treten auf, da es ferner notwendig ist, viele kleine Dateien in eine nicht zu große Anzahl von großen Dateien zu vereinen-sortieren. Andernfalls, wenn die abschließende Reduce-Phase auf viele kleine Dateien zugreifen müsste, würde sie starke Wahlfrei-Lokal-I/O an der Reduce-Seite aufrufen, was wiederum auf der herkömmlichen Datenspeicherinfrastruktur nicht funktionieren würde. Ein Vermeiden eines starken Wahlfrei-I/O, zur Erinnerung, war an erster Stelle der eigentliche Grund zur einer Vereinen- und Sortieroperation. Daher dauert es sogar noch länger, um auf die kombinierten Warteschlangen zuzugreifen, die durch den Vereinen- und Sortierschritt generiert werden, da die Reduktionsmodule auf die Datenspeichervorrichtungen und nicht den Hauptspeicher zugreifen müssen, um die kombinierten Warteschlangen einzugeben.
  • Es wird hier ferner festgehalten, dass Implementierungen nach dem Stand der Technik weiterhin schwere Netzwerkstapel (z.B. HTTP über TCP/IP usw.) zum Transport der Warteschlangen von Maps zu Reduces verwenden, was nicht effektiv ist.
  • Zusätzlich zu der zusätzlichen erforderlichen Zeit muss der Vereinen- und Sortierkompromiss auch die übergelaufenen Dateien an der Reduce-Seite speichern. In Anbetracht dessen, dass Menschen üblicherweise bei der Suche nach einer besseren Leistung teure Flash-Medien (z.B. SSD) verwenden, um Shuffle-Daten zu speichern, ist ein solcher Doppeldatenspeicher - sowohl an der Map- als auch der Reduce-Seite - für Benutzer nicht kosteneffektiv.
  • Zum Vermeiden eines Dateiüberlaufs neigen Benutzer dazu, jedem Reduce-Modul einen größeren Speicherraum zuzuordnen, was ein noch höheres Investment in Server-Speicher erfordert. Alternativ, da verfügbarer Speicherraum nicht ausreichend ist, um alle der Daten zu halten, können Benutzer die Zahl von Reduce-Operationen erhöhen und die Datenmenge senken, die jedes Reduce handhaben muss, wobei Reduces chargenweise gestartet werden. Obwohl dies effektiv einen Dateiüberlauf vermeiden kann, senkt es Leistung, da sich die Reduce-Phase auf mehrere Chargen erstreckt. Ferner verursacht dies in der Praxis auch häufig nicht trivialen Mehraufwand, aufgrund eines chargenweisen Speicherraumsäuberns, das bei den beliebten Java-basierten Big Data Software Implementierungen der Fall ist (enthaltend Spark, Hadoop® und dergleichen), die an Leistung-Penalties aufgrund von Abfallsammelaktivitäten leiden. Ferner kann diese Methode auch eine Auswirkung an der Map-Seite haben, die nun mehr Zeit für ein Identifizieren aufwenden muss, welchem Reduce eine gegebene <Schlüssel, Wert>-Warteschlange entspricht.
  • Schließlich, da der Shuffle-Datenspeicher üblicherweise auf Flash-Medien beruht (z.B. SSDs), verringert dieser Kompromiss die Lebensdauer der Flash-Medien, da ein Überlaufen zu Dateien an der Reduce-Seite Schreiboperationen zu den Flash-Medien beinhaltet und es diese wiederholten Schreiboperationen sind, die einen Verschleiß von Flash-Medien verursachen.
  • Daher können in Ausführungsformen Einrichtungen und Verfahren zum Implementieren eines direkten Shuffle bereitgestellt sein. In Ausführungsformen können solche Einrichtungen Solid-State-Laufwerke zum Speichern aller Map-Modul-Ausgangsergebnisse, fernen Direktzugriff der Solid-State-Laufwerke durch ein Netzwerk, Verwendung einer Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation, ohne Verwendung eines Zwischenstufendatenspeichers verwenden. Beispielhafte Einrichtungen und zugehörige Verfahren sind in 3A und 3B veranschaulicht, die als nächste beschrieben werden.
  • 3A und 3B veranschaulichen beispielhafte Systeme mit einer ähnlichen Struktur wie das verallgemeinerte direkte Shuffle, das in 2A dargestellt und oben beschrieben ist. Unter Bezugnahme auf 3A, beginnend ganz links in der Figur, kann ein Satz von Map-Modulen, Map 1 301, Map 2 303, Map 3 305 und Map 4 307 vorliegen. In Ausführungsformen kann jedes Map-Modul jeweils einen Satz von lokalen Daten zu diesem Map-Modul bearbeiten und kann entsprechende Map-Ausgänge 311-317 generieren, die jeweils eine oder mehrere Warteschlangen von <Schlüssel, Wert>-Paaren haben. In Ausführungsformen kann jede Warteschlange von <Schlüssel, Wert>-Paaren in einer lokalen Reihenfolge sortiert und dann zu einem von Map-Ausgängen 310 geschrieben werden, die in einem Solid-State-Laufwerk 340 installiert sein können. In Ausführungsformen können die Schreiboperationen zum Speicher durch fernen Direktzugriff von Solid-State-Laufwerken 340, über Netzwerk 350, erfolgen, wie in 3A dargestellt, falls Solid-State-Laufwerk 340 fern von den Maps 1-4, 301, 303, 305, 307 ist, wie dargestellt. Falls dies zutrifft, kann der ferne Direktzugriff des Solid-State-Laufwerks eine Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation, wie die NVMe-over-Fabrics-1.0-Gold-Spezifikation, verwenden, wie durch die NVMeoF-Schriebe von jeder von Maps 1-4 zu jedem von Map-Ausgängen 311, 313, 315 bzw. 317 dargestellt. Alternativ kann jedes Map-Modul einen integrierten Festkörperspeicher haben (dieser Fall ist in 3A nicht dargestellt).
  • Bei Betrachtung von Map-Ausgang 311 beinhaltet er zum Beispiel mehrere Warteschlangen von <Schlüssel, Wert>-Paaren, die durch Map 1 301 ausgegeben werden. Die obere Warteschlange in Map-Ausgang 311 beinhaltet <Schlüssel, Wert>-Paare, die Schlüssel K1, K2 und K3 aufweisen. Wie erkennbar ist, hat Map-Ausgang 313 in seiner obersten Warteschlange einen anderen Satz von <Schlüssel, Wert>-Paaren als Map-Ausgang 311 oder Map-Ausgänge 315 und 317 in ihrer jeweiligen obersten Warteschlange haben, auch wenn jede oberste Warteschlange Daten nur von Schlüsseln K1, K2 und K3 hält. Der Grund ist, dass jede Map ihre eigenen lokalen Daten bearbeitet. Wie jedoch oben festgehalten wurde, um eine Reduktionsoperation durchzuführen, muss ein Reduce-Modul alle der <Schlüssel, Wert>-Paare sammeln, die von allen Map-Modulen ausgegeben werden, die mit einem gegebenen Schlüssel, zum Beispiel K1, verknüpft sind. Wie festgehalten wurde, ist dies das direkte Shuffle, wo jedes Reduktionsmodul von allen Map-Ausgängen die entsprechenden <Schlüssel, Wert>-Paare zur Reduktionsoperation, die es dann einzeln in einer globalen Reihenfolge durchführt, fern abruft.
  • Dies wird unter anhaltender Bezugnahme auf 3A veranschaulicht, in der drei Reduktionsmodule dargestellt sind, von welchen jedes kommunikationsfähig an alle vier Map-Ausgänge 311, 313, 315 und 317 gekoppelt ist. Diese Reduktionsmodule enthalten Reduce 1 331, Reduce 2 333 und Reduce 3 335. Wie dargestellt, bearbeitet, für eine bessere Veranschaulichung Reduce 1 331 <Schlüssel, Wert>-Paare mit Schlüsseln K1, K2 und K3, Reduce 2 333 bearbeitet <Schlüssel, Wert>-Paare mit Schlüsseln K4, K5 und K6, und Reduce 3 335 bearbeitet <Schlüssel, Wert>-Paare mit Schlüsseln K7, K8 und K9. Mit Reduce 1 331 als Beispiel greift Reduce 1 331 zum Durchführen seiner Reduktionsoperation auf die oberste Warteschlange von <Schlüssel, Wert>-Paaren von jedem von Map-Ausgängen 311, 313, 315 und 317 in einer globalen Reihenfolge für jeden Schlüssel zu. Dies ist durch Pfeile 321, 323, 325, und 327 dargestellt, die Speichertransfers von den jeweiligen Map-Ausgängen 311, 313, 315 und 317, alle zu Reduce 1 331, angeben. In Ausführungsformen wird auf die <Schlüssel, Wert>-Paare in globaler Reihenfolge zugegriffen, was bedeutet, dass auf alle <Schlüssel, Wert>-Paare, die Schlüssel K1 aufweisen, der Reihe nach von jedem Map-Ausgang zugegriffen wird, bevor Reduce 1 mit dem Zugriff auf die <Schlüssel, Wert>-Paare beginnt, die durch Schlüssel K2 indiziert sind, und so weiter für Schlüssel K2 und K3. Jedes von Reduce 2 333 und Reduce 3 335 führt denselben Zugriff von <Schlüssel, Wert>-Paaren von allen Map-Ausgängen in globaler Reihenfolge aus. In Ausführungsformen ist dies möglich, da, wie dargestellt, jede Map ihre lokal sortierten Warteschlangen fern in einen gemeinsam benutzten und Hochleistungsdatenspeicher, Solid-State-Laufwerke 340, schreiben kann. Dann, da dieser Datenspeicher extrem hohen Fern-Wahlfrei-I/O bieten kann, kann jedes Reduce fern jedes <Schlüssel, Wert>-Paar einzeln in einer globalen Reihenfolge aus diesem Datenspeicher abrufen, ohne Zwischenstufendatenspeicher verwenden zu müssen, wie oben in Verbindung mit 2B beschrieben.
  • Somit können in Ausführungsformen Maps 1 bis 4, 301 bis 307 in mehreren physischen Servern bereitgestellt sein (ohne NVMe-Festkörpervorrichtungen) und Solid-State-Laufwerke 340 können einen einzelnen Server mit vielen NVMe-Solid-State-Laufwerken aufweisen. Solid-State-Laufwerke 340 können zum Beispiel in einem Datenzentrum oder in mehreren verteilten Datenzentren bereitgestellt sein, die mit einem Fabric verbunden sind. Zusätzlich können Reduce-Module Reduce 1 bis Reduce 3, 331 - 335 in mehreren physischen Servern bereitgestellt sein, auch ohne NVMe-Solid-State-Laufwerke. Die verschiedenen Map-Server und die verschiedenen Reduce-Server können alle über Ethernet verbunden sein oder alternativ können die Map-Server und die Reduce-Server an denselben physischen Maschinen bereitgestellt sein.
  • 3B veranschaulicht eine Instanziierung 300B des beispielhaften Systems von 3A, wo die Maps und die Reduces mit einem NVMe-über-Fabric-Ziel 340 verbunden sind, die mehrere NVMe-SSDs enthalten können. In Ausführungsformen können die SSDs 3D- Xpoint-Datenspeichermedien enthalten. Die Maps und die Reduces sind mit dem NVMe-über-Fabric-Ziel 340 durch RDMA-Netzwerke 360 verbunden. In jeder anderen Hinsicht ist 3B 3A äquivalent und wird nicht näher beschrieben. Wie im Fall von 3A speichern die Maps ihre jeweiligen Ausgänge im NVMe-über-Fabric-Ziel 340 über zahlreiche NVMeoF-Schriebe und die Reduces führen intensive Fern-Wahlfrei-Lesungen über NVMeoF aus. In Ausführungsformen können eine oder beide von Maps 301 bis 307 und Reduces 331 bis 335 in einem Datenzentrum gemeinsam mit NVMe-über-Fabric-Ziel 340 bereitgestellt sein, wo das RDMA-Netzwerk Module innerhalb des Datenzentrums verbindet. Alternativ kann, in Ausführungsformen das beispielhafte System von 3B über mehrere Datenzentren verteilt sein.
  • Es wird festgehalten, dass in Versuchen, die durch die Erfinder durchgeführt wurden, eine NVMe-über-Fabric-Lösung, die aus einem NVMe-über-Fabric-konformen Speicherzugriffsprotokoll 40Gb RDMA über Ethernet und Hochleistungs-NVMe-Laufwerken bestand, fernen Direktzugriff des Festkörperspeichers bereitstellte, der jenem der ähnlich war, den NVMe-Laufwerke lokal bieten können, nämlich Hunderttausende Eingangs-/Ausgangsoperationen pro Sekunde (IOPS). Dieselben Versuche zeigten, dass die beispielhaften Systeme von 3A und 3B mehrere Leistungsvorteile bieten. Implementierungen von Map- und Reduce-Operationen unter Verwendung von Hadoop®- und Spark-Systemen nach dem Stand der Technik, selbst mit Hochleistungs-NVMe-Laufwerken, die für lokalen Shuffle-Datenspeicher verwendet werden, liefen langsamer als eine direkte Shuffle-Implementierung, wie in 3A und 3B dargestellt.
  • Es wird angenommen, dass es dafür mehrere Gründe gibt. Erstens wurden alle zeitaufwendigen Vereinen- und Sortier-Operationen an der Reduce-Seite wie auch ferne Wahlfrei-I/O-Flaschenhälse an der Map-Seite eliminiert. Zweitens wurden leichtgewichtige RDMA-Netzwerke verwendet. Obwohl die erfindungsgemäßen Implementierungen von 3A und 3B zwei Netzwerktransporte von den Maps zum Festkörperspeicher und dann vom Festkörperspeicher zu den Reduces, verwendeten, war daher erkennbar, dass dies noch immer effektiver war als herkömmliche Netzwerklösungen.
  • Schließlich wird festgehalten, dass im Sinne von Kosten und Lebensdauer, da Ausführungsformen keine Zwischenstufe (Vereinen und Sortieren) an der Reduce-Seite benötigen und somit jeglichen Überlauf zu Dateien eliminieren, dies Datenspeicherraum für die Shuffle-Phase sparte und, wie festgehalten, auch die Lebensdauer von Flash-Medien verbesserte.
  • Es wird festgehalten, dass gemäß der Definition einer Shuffle-Phase, wenn jede Map <Schlüssel, Wert>-Paare in ihren eigenen Datenspeicherraum schreibt, keine anderen Map-Operationen oder Reduktionsoperationen vorhanden sein sollten, die auf diesen Raum gleichzeitig zugreifen müssen. Mit anderen Worten, Synchronisation erfolgt durch Obere-Schicht-Anwendungen (z.B. MapReduce, Spark-Engine oder dergleichen). Basierend darauf kann in Ausführungsformen eine spezifische Bibliothek, zwischen Obere-Schicht-Anwendungen und einem NVMe-Datenspeicherlaufwerk, bereitgestellt sein, wodurch APIs für die Anwendungen freigegeben werden, um auf die NVMe-konformen Datenspeichervorrichtungen (oder, exakter, die fernen NVMe-konformen Datenspeichervorrichtungen, emuliert über NVMeoF) zuzugreifen.
  • In Ausführungsformen kann diese Bibliothek drei Arten von Application Programming Interfaces (APIs, Anwendungsprogrammierungsschnittstellen) wie folgt bereitstellen. Erstens Zuordnung und Freigabe von APIs für jedes Mapping-Modul, um einen dedizierten Datenspeicherraum von oder zurück von den entsprechenden Datenspeichervorrichtungen zuzuordnen. Zweitens Schreib-APIs für jede Map, um eine Nutzlast in einen Datenspeicherraum zu schreiben. Schließlich drittens, Lese-APIs für jedes Reduktionsmodul, um eine Nutzlast aus einem Datenspeicherraum zu lesen.
  • In Ausführungsformen, wenn eine solche Bibliothek gegeben ist, kann ein Mechanismus bereitgestellt sein, um die <Schlüssel, Wert>-Paare auf dem Datenspeicherraum zu organisieren, zum Beispiel ein NVMe-SSD oder ein anderer Festkörperspeicher, wie in 3A und 3B dargestellt, sodass das Verhalten von Maps (Schriebe) und Reduces (Lesungen) mit den Eigenschaften der darunterliegenden Datenspeicherinfrastruktur (z.B. Flash-basierte Medien) übereinstimmt. Ein solcher Mechanismus ist anschließend unter Bezugnahme auf 4 beschrieben.
  • 4 veranschaulicht, wie in Ausführungsformen eine Map ihre <Schlüssel, Wert>-Paare in den zugeordneten Datenspeicherraum schreiben kann. In Ausführungsformen kann jede Map ein sequenzielles Array, das als ein V-Array 430 bezeichnet, im Festkörperspeicher oder NVMe-Datenspeicherraum in 4 bewahren. Jedes Element von V-Array 430 kann zwei Felder aufweisen: den Index eines anderen Elements, der den <Wert> eines vorherigen <Schlüssel, Wert>-Paares, Vpriorindex, speichert, und den <Wert> eines aktuellen <Schlüssel, Wert>-Paares. Gleichzeitig kann auch jede Map ein anderes sequenzielles Array, das als ein K-Array 410 bezeichnet wird, in ihrem zugehörigen (lokalen) Speicher bewahren, in welcher jedes Element auch aus zwei Feldern besteht: jedem einzigartigen <Schlüssel> und einem Index zu dem Element im V-Array 430, Vindex, das den <Wert> des letzten <Schlüssel, Wert>-Paares mit diesem spezifischen <Schlüssel> speichert. Wenn in Ausführungsformen auf diese Weise das K-Array eines Mapping-Moduls erreicht wird, wäre es ihm durch Navigieren aller der Indizes möglich, alle <Werte> abzurufen, die durch dieses Mapping-Modul erzeugt worden sind.
  • Zum Beispiel könnten in 4, beginnend vom ersten Element des K-Arrays 410 alle der <Werte>, z.B. V13, V12, und V11, entsprechend dem <K1> Schlüssel, wie folgt abgerufen werden. Wenn das erste Element des K-Arrays 410, <K1, Vindex>, genommen wird, zeigt Vindex zu dem Element des V-Arrays 430, das im fernen Solid-State-Laufwerk gespeichert ist, das als letztes <Wert> für Schlüssel K1 eingegeben hat, nämlich V13 (Stelle 450). Dies ist durch Pfeil 421 dargestellt, der den Vindex des ersten (obersten) Elements des K-Arrays 410 angibt, der zur Stelle 450 im V-Array 430 zeigt. Sobald auf diese Stelle 450 des V-Arrays 430 zugegriffen wird, ist das erste Feld an Stelle 450 Vpriorindex. Vpriorindex zeigt zu Stelle 451, die den vorletzten eingegebenen Wert für Schlüssel K1 beinhaltet, hier V12. Durch Bewegen zu Stelle 451 in V-Array, veranschaulicht durch gekrümmten Pfeil 441, wird der Vindex dort vorgefunden, der zu Stelle 453 zeigt, die den ersten eingegebenen Wert für Schlüssel K1 hat, hier V11. Bewegen zu Stelle 453 ist durch gekrümmten Pfeil 442 dargestellt. An Stelle 453 ist der Wert von Vpriorindex NULL, da V11 der erste Eintrag für Schlüssel K1 ist und es keine frühere Stelle gibt, auf die gezeigt werden kann.
  • Ein analoges Verhältnis zwischen Elementen des K-Array 410 und V-Arrays 430 besteht für jeden der Werte für Schlüssel K3, K5, K7 usw. Somit kann ein Reduktionsmodul sofort alle der <Schlüssel, Wert>-Paare für Schlüssel K1 finden und gleichzeitig kann ein Mapping-Modul sequenzielle Speicherschriebe der Sequenz von <Schlüssel, Wert>-Paaren 401 ausführen, wie in 4 dargestellt.
  • In Ausführungsformen, sobald die Map fertig wird, kann sie das K-Array auch zu dem Datenspeicherraum schreiben, um es für alle der Reduce-Module verfügbar zu machen, und dann einen Anwendungsmaster (z.B. einen MapReduce-Jobverfolger oder ein Spark-Laufwerk) über die Beendigung benachrichtigen, indem sie die Stelleninformationen ihrem K-Array und V-Array bereitstellt. Danach kann der Anwendungsmaster diese Stelleninformationen allen der Reduktionsmodule bereitstellen. Schließlich, sobald alle der Maps fertig sind, können alle der Reduktionsmodule beginnen, gleichzeitig den entsprechenden <Wert> von allen Datenspeicherräumen der Maps abzurufen.
  • In Ausführungsformen ist ein Schlüsselvorteil dieses Mechanismus, dass das I/O-Verhalten die Leistungseigenschaft der darunterliegenden Datenspeicherinfrastruktur abstimmen kann: die Operationen an der Map-Seite sind kleine und sequenzielle Schriebe, während jene an der Reduce-Seite kleine und wahlfreie Lesungen sind. Beide stimmen mit dem überein, worin Flash-basierte Medien gut sind. Dies betrifft die Lebensdauer von NAND-Flash-Datenspeichern. NAND-Flash hat eine größere Lebensdauer für sequenzielle Schriebe als für wahlfreie. Somit ist es günstig, dass ein Mapping-Modul seinen Ausgang so sequenziell wie möglich schreibt. Andererseits gibt es für Speicherlesungen keine Bedenken bezüglich Lebensdauer. Daher können Reduktionsmodule den fernen Festkörperspeicher wahlfrei lesen.
  • Unter Bezugnahme nun auf 5A ist ein Überblick eines Operationsablaufs für einen Prozess zum Generieren von Sätzen von in Warteschlange gereihten Zwischen-(Schlüssel, Wert)-Datenpaaren aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren und Schreiben der Warteschlangen von Zwischen-(Schlüssel, Wert)-Datenpaaren zu einem Solid-State-Laufwerk durch fernen Direktzugriff des Solid-State-Laufwerks über ein Netzwerk unter Verwendung einer Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation gemäß verschiedenen Ausführungsformen veranschaulicht. Der Prozess von 5A kann durch ein Mapping-Modul durchgeführt werden, wie eine von Maps 1-4 von 3A und 3B, das als Computervorrichtung 700 implementiert werden kann, dargestellt in 7.
  • Wie veranschaulicht, kann Prozess 500A Operationen enthalten, die bei Blöcken 510-520 durchgeführt werden. Prozess 500A kann bei Block 510 beginnen. Bei Block 510 können Sätze von in Warteschlange gereihten Zwischen-(Schlüssel, Wert)-Datenpaaren aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren unter Verwendung z.B. eines Mapping-Moduls generiert werden. Von Block 510 kann Prozess 500A mit Block 520 fortfahren, wo die Warteschlangen von Zwischen-(Schlüssel, Wert)-Datenpaaren zu einem Solid-State-Laufwerk durch fernen Direktzugriff des Solid-State-Laufwerks über ein Netzwerk unter Verwendung einer Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation geschrieben werden können. Bei Block 520 kann Prozess 500A enden.
  • Unter Bezugnahme nun auf 5B ist ein Überblick eines Operationsablaufs für einen Prozess zum Transferieren einzelner Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von mehreren Solid-State-Laufwerken durch direkten Transfer unter Verwendung einer Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation gemäß verschiedenen Ausführungsformen veranschaulicht. Der Prozess von 5B kann durch ein Reduktionsmodul durchgeführt werden, wie eines von Reduce 1-3, 331, 333, 335, von 3A und 3B, die als Computervorrichtung 700, dargestellt in 7, implementiert sein können.
  • Wie veranschaulicht, kann Prozess 500B Operationen enthalten, die bei Blöcken 550-560 durchgeführt werden. Prozess 500B kann bei Block 550 beginnen. Bei Block 550 können einzelne von Sätzen von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von mehreren fernen Solid-State-Laufwerken durch direkten Transfer durch fernen Direktzugriff der Solid-State-Laufwerke über ein Netzwerk unter Verwendung einer Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation, ohne Verwendung eines Zwischendatenspeichers durchgeführt werden. Von Block 550 fährt Prozess 500B mit Block 560 fort, wo die einzelnen Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren an einem Satz von Datenreduktionsmodulen bereitgestellt werden. Bei Block 560 kann Prozess 500B enden.
  • Unter Bezugnahme nun auf 6 ist ein Überblick eines Operationsablaufs für einen Prozess zur Durchführung einer Mapping-Operation an einem Satz von lokalen Daten, Generieren und Transferieren eines sequenziellen Wert-Arrays und Generieren und Bewahren eines sequenziellen Schlüssel-Arrays, gemäß verschiedenen Ausführungsformen veranschaulicht.
  • Wie veranschaulicht, kann Prozess 600 Operationen enthalten, die bei Blöcken 610-640 durchgeführt werden. Die Operationen bei Blöcken 610-640 können z.B. durch einen Mapper oder ein Mapping-Modul durchgeführt werden, der oder das als eine Recheneinrichtung implementiert sein kann, wie in 7 gezeigt.
  • Prozess 600 kann bei Block 610 beginnen. Bei Block 610 kann das Mapping-Modul eine Mapping-Operation an einem Satz von lokalen Daten durchführen und einen Satz von (Schlüssel, Wert)-Paaren generieren. Von Block 610 fährt Prozess 600 mit Block 620 fort, wo er zumindest ein sequenzielles Wert-Array generieren und zu einem fernen Solid-State-Laufwerk transferieren kann, wobei das Wert-Array einen Satz von (V, Vpriorindex)-Paaren aufweist, wo V der Wert eines aktuellen <Schlüssel, Wert>-Paares ist und Vpriorindex ein Index eines früheren Elements des sequenziellen Wert-Arrays ist, das den Wert eines vorherigen (Schlüssel, Wert)-Paares für denselben Schlüssel speichert. Von Block 620 fährt Prozess 600 mit Block 630 fort, wo Prozess 600 in einem Speicher zumindest ein sequenzielles Schlüssel-Array generieren und bewahren kann, wobei das Schlüssel-Array einen Satz von (K, Vindex)-Paaren enthält, wo K ein einzigartiger Schlüssel ist und Vindex ein Index eines Elements im Wert-Array ist, das den Wert des letzten (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  • Von Block 630 fährt Prozess 600 mit Block 640 fort, wo Prozess 600 nach Beendigung der Mapping-Operation an dem Satz von lokalen Daten das sequenzielle Schlüssel-Array zu einem fernen Solid-State-Laufwerk schreiben kann. Bei Block 640 kann Prozess 600 dann enden.
  • Unter Bezugnahme nun auf 7, wobei ein Blockdiagramm einer Computervorrichtung gemäß verschiedenen Ausführungsformen veranschaulicht ist, die zum Umsetzen der vorliegenden Offenbarung in die Praxis geeignet ist. Wie dargestellt, kann Computervorrichtung 700 einen oder mehrere Prozessoren 702, Speichersteuerung 703 und Systemspeicher 704 enthalten. Jeder Prozessor 702 kann einen oder mehrere Prozessorkerne und/oder Hardwarebeschleuniger 705 enthalten. Ein Beispiel für Hardwarebeschleuniger 705 kann programmierte feldprogrammierbare Gate-Arrays (FPGA) enthalten. Speichersteuerung 703 kann eine von einer Reihe von Speichersteuerungen sein, die in der Technik bekannt sind. Systemspeicher 704 kann einen beliebigen bekannten flüchtigen oder nicht flüchtigen Speicher enthalten.
  • Zusätzlich kann Computervorrichtung 700 Massendatenspeichervorrichtung(en) 706 (wie Solid-State-Laufwerke), Eingabe-/Ausgabevorrichtungsschnittstelle 708 (als Schnittstelle mit verschiedenen Eingabe-/Ausgabevorrichtungen, wie Maus, Cursorsteuerung, Anzeigevorrichtung (enthaltend berührungsempfindlichen Bildschirm) und so weiter) und Kommunikationsschnittstellen 710 (wie Netzwerkschnittstellenkarten, Modems und so weiter) enthalten. In Ausführungsformen können Kommunikationsschnittstellen 710 Sendeempfänger 752 enthalten, der verdrahtete oder drahtlose Kommunikation unterstützt, enthaltend Nahfeldkommunikation. Die Elemente können über einen Systembus 712 aneinander gekoppelt sein, der einen oder mehrere Busse darstellen kann. Im Fall von mehreren Bussen können sie durch eine oder mehrere Busbrücken überbrückt sein (nicht dargestellt).
  • Jedes dieser Elemente kann seine herkömmlichen Funktionen durchführen, die in der Technik bekannt sind. Insbesondere können Systemspeicher 704 und Massendatenspeichervorrichtung(en) 706 zum Speichern einer Arbeitskopie und einer permanenten Kopie des ausführbaren Codes der Programmierungsanweisungen eines Betriebssystems, einer oder mehrerer Anwendungen eines Mapping-Moduls wie Map 1-4, 301, 303, 305 oder 307 oder eines Reduktionsmoduls wie Reduce 1-3, 331, 333 und 335, gemeinsam als Rechenlogik 722 bezeichnet, verwendet werden. Map 1-4, 301, 303, 305 oder 307 kann konfiguriert sein, (Aspekte von) Prozesse(n) 500A und 600 von 5A bzw. 6 in die Praxis umzusetzen. Reduce 1-3, 331, 333 und 335 kann konfiguriert sein, (Aspekte von) Prozess 500B von 5B in die Praxis umzusetzen. Die Programmierungsanweisungen können Assembler-Anweisungen, die durch Prozessor(en) 702 unterstützt werden, oder hochwertige Sprachen, wie zum Beispiel C, die in solchen Anweisungen kompiliert sind, enthalten. In Ausführungsformen kann etwas von Rechenlogik im Hardwarebeschleuniger 705 implementiert sein.
  • Die permanente Kopie des ausführbaren Codes der Programmierungsanweisungen oder die Bitstreams zum Konfigurieren des Hardwarebeschleunigers 705 können in permanenter (permanenten) Massendatenspeichervorrichtung(en) 706 in der Fabrik oder vor Ort platziert werden, zum Beispiel durch ein Verteilungsmedium (nicht dargestellt), wie eine Compact Disc (CD) oder durch eine Kommunikationsschnittstelle 710 (von einem Verteiler-Server (nicht dargestellt)).
  • Die Anzahl, Fähigkeit und/oder Kapazität dieser Elemente 710-712 kann abhängig von der geplanten Verwendung der beispielhaften Computervorrichtung 700 variieren, z.B. ob die beispielhafte Computervorrichtung 700 ein Smartphone, Tablet, Ultrabook, ein Laptop, ein Server, eine Set-Top-Box, eine Spielekonsole, eine Kamera und so weiter ist. Der Aufbau dieser Elemente 710-712 ist sonst bekannt und wird daher nicht näher beschrieben.
  • 8 veranschaulicht ein beispielhaftes computerlesbares Datenspeichermedium mit Anweisungen, die konfiguriert sind, alles (oder einen Teil) eines Mapping-Moduls wie Map 1-4, 301, 303, 305 oder 307 oder eines Reduktionsmoduls wie Reduce 1-3, 331, 333 und 335 gemäß verschiedenen Ausführungsformen zu implementieren und/oder (Aspekte von) Prozesse(n) in die Praxis umzusetzen, die durch 500A, 500B und 600 von 5A, 5B bzw. 6, die zuvor beschrieben wurden, durchgeführt werden. Wie veranschaulicht, kann das computerlesbare Datenspeichermedium 802 den ausführbaren Code einer Anzahl von Programmierungsanweisungen oder Bitstreams 804 enthalten. Ausführbarer Code von Programmierungsanweisungen (oder Bitstreams) 804 kann konfiguriert sein, einer Vorrichtung, z.B. Computervorrichtung 700, in Antwort auf Ausführung der ausführbaren Code/Programmierungsanweisungen (oder Betrieb eines an codierten Hardwarebeschleunigers 705) (Aspekte von) Prozesse(n) 500A, 500B und 600 von 5A, 5B bzw. 6 durchzuführen. In anderen Ausführungsformen können ausführbare Code/Programmierungsanweisungen/Bitstreams 804 stattdessen auf mehreren nicht transitorischen computerlesbaren Datenspeichermedien 802 angeordnet sein. In Ausführungsformen kann das computerlesbare Datenspeichermedium 802 nicht transitorisch sein. In weiteren Ausführungsformen können ausführbare Code/Programmierungsanweisungen 804 in transitorischem computerlesbaren Medium, wie Signalen, codiert sein.
  • Unter erneuter Bezugnahme auf 7 kann für eine Ausführungsform zumindest einer von Prozessoren 702 gemeinsam mit einem computerlesbaren Datenspeichermedium mit einem Teil der oder der gesamten Rechenlogik 722 gepackt sein (anstelle einer Speicherung im Systemspeicher 704 und/oder in der Massendatenspeichervorrichtung 706), die konfiguriert ist, alle oder ausgewählte der Operationen, die zuvor unter Bezugnahme auf 5A, 5B und 6 beschrieben wurden, in die Praxis umzusetzen. Für eine Ausführungsform kann zumindest einer von Prozessoren 702 gemeinsam mit einem computerlesbaren Datenspeichermedium mit einem Teil der oder der gesamten Rechenlogik 722 verpackt sein, um ein System-in-Package (SiP) zu bilden. Für eine Ausführungsform kann zumindest einer von Prozessoren 702 auf demselben Die mit einem computerlesbaren Datenspeichermedium mit einem Teil der oder der gesamten Rechenlogik 722 integriert sein. Für eine Ausführungsform kann zumindest einer von Prozessoren 702 gemeinsam mit einem computerlesbaren Datenspeichermedium mit einem Teil der oder der gesamten Rechenlogik 722 verpackt sein, um ein System-auf-Chip (SoC) zu bilden. Für zumindest eine Ausführungsform kann das SoC in z.B. einem hybriden Rechentablet/Laptop verwendet werden, ohne aber darauf beschränkt zu sein.
  • Veranschaulichende Beispiele der hier offenbarten Technologien sind in der Folge bereitgestellt. Eine Ausführungsform der Technologien kann eines oder mehrere und jede Kombination der unten beschriebenen Beispiele enthalten.
  • Beispiel 1 kann eine Einrichtung zum Berechnen enthalten, aufweisend: einen Satz von Datenreduktionsmodulen zum Durchführen von Datenreduktionsoperationen an Sätzen von (Schlüssel, Wert)-Datenpaaren zur Verringerung einer Menge von Werten, die mit einem gemeinsam benutzten Schlüssel verknüpft sind, wobei die (Schlüssel, Wert)-Datenpaare in mehreren Warteschlangen gespeichert sind, die in mehreren Solid-State-Laufwerken fern von der Einrichtung liegen; und ein Speicherzugriffsmodul, das kommunikationsfähig an den Satz von Datenreduktionsmodulen gekoppelt ist, um direkt einzelne der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren fernen Solid-State-Laufwerken durch fernen Direktzugriff der Solid-State-Laufwerke über ein Netzwerk ohne Verwendung eines Zwischenstufendatenspeichers zu transferieren.
  • Beispiel 2 kann die Einrichtung von Beispiel 1 und/oder anderen Beispielen hierin enthalten, wobei die Einrichtung ferner ein Programmierungs-Framework aufweist, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt, und die Datenreduktionsoperationen Teil einer Reduce-Operation unter dem Framework sind.
  • Beispiel 3 kann die Einrichtung von Beispiel 1 und/oder anderen Beispielen hierin enthalten, wobei die Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren Zwischen-(Schlüssel, Wert)-Datenpaare sind, die aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren durch einen Mapper auf einem Computersystem fern von der Einrichtung generiert werden, das kommunikationsfähig an die fernen Solid-State-Laufwerke gekoppelt ist.
  • Beispiel 4 kann die Einrichtung von Beispiel 3 und/oder anderen Beispielen hierin enthalten, wobei der Mapper Teil eines Map-Moduls unter einem Programmierungs-Framework ist, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt.
  • Beispiel 5 kann die Einrichtung von Beispiel 1 und/oder anderen Beispielen hierin enthalten, wobei die (Schlüssel, Wert)-Datenpaare, die in den mehreren Warteschlangen gespeichert sind, in einer lokalen Reihenfolge gespeichert sind, die durch die Schlüssel indiziert ist.
  • Beispiel 6 kann die Einrichtung von einem der Beispiele 1-5 und/oder anderen Beispielen hierin enthalten, wobei die fernen Solid-State-Laufwerke nicht flüchtigen Speicher mit Byte-adressierbarem Direktzugriff enthalten.
  • Beispiel 7 kann die Einrichtung von Beispiel 1 und/oder anderen Beispielen hierin enthalten, wobei das Speicherzugriffsmodul ferner für jedes Datenreduktionsmodul dient zum: Transferieren, aus ausgewählten der mehreren Warteschlangen, die in den mehreren fernen Solid-State-Laufwerken liegen, von (Schlüssel, Wert)-Datenpaaren in einer globalen Reihenfolge.
  • Beispiel 8 kann die Einrichtung von Beispiel 6 und/oder anderen Beispielen hierin enthalten, wobei der Transfer in einer globalen Reihenfolge einen Transfer aller (Schlüssel, Wert)-Paare entsprechend einem Schlüssel Kn aus den ausgewählten der mehreren Warteschlangen enthält, vor einem Transfer von (Schlüssel, Wert)-Paaren, deren Schlüsselwert größer ist als Kn.
  • Beispiel 9 kann die Einrichtung von Beispiel 1 und/oder anderen Beispielen hierin enthalten, wobei das Speicherzugriffsmodul die einzelnen der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren fernen Solid-State-Laufwerken unter Verwendung unsynchronisierter Rohblockvorrichtungszugriffe gemäß einer Nichtflüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation transferiert.
  • Beispiel 10 kann die Einrichtung von Beispiel 1 und/oder anderen Beispielen hierin enthalten, wobei jedes des Satzes von Datenreduktionsmodulen eine einzelne spezifische Reduce-Operation zu einem Zeitpunkt durchführt.
  • Beispiel 11 kann ein Verfahren enthalten, das durch einen Computer durchzuführen ist, aufweisend Transferieren, durch ein Speicherzugriffsmodul, einzelner von Sätzen von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von mehreren Solid-State-Laufwerken fern von dem Computer, in dem die (Schlüssel, Wert)-Datenpaare in mehreren Warteschlangen gespeichert sind, durch direkten Transfer durch fernen Direktzugriff der Solid-State-Laufwerke über ein Netzwerk ohne Verwendung eines Zwischenstufendatenspeichers; und Bereitstellen der einzelnen von Sätzen von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren an einem Satz von Datenreduktionsmodulen, die kommunikationsfähig mit dem Speicherzugriffsmodul verbunden sind.
  • Beispiel 12 kann das Verfahren von Beispiel 11 und/oder anderen Beispielen hierin enthalten, wobei das Speicherzugriffsmodul die einzelnen der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren fernen Solid-State-Laufwerken unter Verwendung unsynchronisierter Rohblockvorrichtungszugriffe gemäß einer Nichtflüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation transferiert.
  • Beispiel 13 kann das Verfahren von Beispiel 11 und/oder anderen Beispielen hierin enthalten, wobei die Datenreduktionsmodule Datenreduktionsoperationen an Sätzen von (Schlüssel, Wert)-Datenpaaren zur Verringerung einer Menge von Werten durchführen, die mit einem gemeinsam benutzten Schlüssel verknüpft sind.
  • Beispiel 14 kann das Verfahren von Beispiel 13 und/oder anderen Beispielen hierin enthalten, wobei der Computer ferner ein Programmierungs-Framework aufweist, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt, und die Datenreduktionsmodule sind Teil einer Reduce-Operation unter dem Framework.
  • Beispiel 15 kann das Verfahren von Beispiel 11 und/oder anderen Beispielen hierin enthalten, wobei die Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren Zwischen-(Schlüssel, Wert)-Datenpaare sind, die aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren durch einen Mapper auf einem Computersystem fern von dem Computer generiert werden, der an die fernen Solid-State-Laufwerke gekoppelt ist.
  • Beispiel 16 kann das Verfahren von Beispiel 14 und/oder anderen Beispielen hierin enthalten, wobei der Mapper eine Map-Operation unter dem Framework implementiert.
  • Beispiel 17 kann das Verfahren von Beispiel 11 und/oder anderen Beispielen hierin enthalten, wobei die fernen Solid-State-Laufwerke nicht flüchtigen Speicher mit Byte-adressierbarem Direktzugriff enthalten.
  • Beispiel 18 kann das Verfahren von Beispiel 11 und/oder anderen Beispielen hierin enthalten, wobei die in Warteschlange gereihten (Schlüssel, Wert)-Datenpaare, die in den mehreren Solid-State-Laufwerken gespeichert sind, in einer lokalen Reihenfolge gespeichert sind, die durch die Schlüssel indiziert ist.
  • Beispiel 19 kann das Verfahren von einem von Beispielen 11-18 und/oder anderen Beispielen hierin enthalten, wobei das Transferieren enthält: Transferieren, von ausgewählten der mehreren Warteschlangen, die in den mehreren fernen Solid-State-Laufwerken liegen, eines Satzes von (Schlüssel, Wert)-Paaren in einer globalen Reihenfolge, und wobei das Transferieren in einer globalen Reihenfolge Transferieren aller (Schlüssel, Wert)-Paare entsprechend einem Schlüssel Kn aus den ausgewählten der mehreren Warteschlangen enthält, vor Transferieren von (Schlüssel, Wert)-Paaren, deren Schlüsselwert größer ist als Kn.
  • Beispiel 20 kann eine Einrichtung zum Berechnen enthalten, aufweisend: ein Mapper-Modul zum Durchführen von Mapping-Operationen an Sätzen von (Schlüssel, Wert)-Paaren, um eine Menge von Werten auf einen gemeinsam benutzten Schlüssel zu mappen, um einen Satz von (Schlüssel, Wert)-Paaren zu generieren; ein Speicherschreibmodul, das kommunikationsfähig mit dem Mapper-Modul verbunden ist, um Daten über ein Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Protokoll vom Mapper-Modul zu einem fernen Solid-State-Laufwerk durch fernen Direktzugriff zu transferieren; und einen Speicher. Die Einrichtung kann ferner ein Speichermanagementmodul enthalten, das kommunikationsfähig an den Speicher und das Speicherschreibmodul gekoppelt ist, um zu generieren und in das ferne Solid-State-Laufwerk zu schreiben: zumindest ein sequenzielles Wert-Array, das Wert-Array aufweisend einen Satz von (V, Vpriorindex)-Paaren, wobei: V der Wert eines aktuellen (Schlüssel, Wert)-Paares und Vpriorindex ein Index eines früheren Elements des sequenziellen Wert-Arrays ist, das den Wert eines vorherigen (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  • Beispiel 21 kann die Einrichtung von Beispiel 20 und/oder anderen Beispielen hierin enthalten, wobei das Speichermanagementmodul ferner generiert und in den Speicher schreibt: zumindest ein sequenzielles Schlüssel-Array, das Schlüssel-Array enthaltend einen Satz von (K, Vindex)-Paaren, wobei: K ein einzigartiger Schlüssel ist und Vindex ein Index eines Elements im Wert-Array ist, das den Wert des letzten (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  • Beispiel 22 kann die Einrichtung von Beispiel 20 und/oder anderen Beispielen hierin enthalten, wobei das Speichermanagementmodul ferner, nachdem das Mapper-Modul eine Mapping-Operation an einem Satz von Eingangsdaten beendet hat, zum Schreiben des sequenziellen Schlüssel-Arrays in den Festkörperspeicher dient.
  • Beispiel 23 kann die Einrichtung von einem von Beispielen 20-22 und/oder anderen Beispielen hierin enthalten, wobei der Wert von Vpriorindex für das erste (V, Vpriorindex)-Paar für jeden Schlüssel im sequenziellen Wert-Array null ist.
  • Beispiel 24 kann einen oder mehrere nicht transitorische computerlesbares Datenspeichermedien enthalten, aufweisend mehrere Anweisungen, die, in Antwort auf ihre Ausführung, eine Rechenvorrichtung veranlassen zum: Durchführen einer Mapping-Operation an einem Satz von lokalen Daten und Generieren eines Satzes von (Schlüssel, Wert)-Paaren; Transferieren von Daten von dem Mapper-Modul zu einem fernen Solid-State-Laufwerk durch fernen Direktzugriff; und Generieren und Transferieren zu dem fernen Solid-State-Laufwerk: zumindest eines sequenziellen Wert-Arrays, das Wert-Array aufweisend einen Satz von (V, Vpriorindex)-Paaren, wobei: V der Wert eines aktuellen (Schlüssel, Wert)-Paares ist und Vpriorindex ein Index eines früheren Elements des sequenziellen Wert-Arrays ist, das den Wert eines vorherigen (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  • Beispiel 25 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von Beispiel 24 und/oder anderen Beispielen hierin enthalten, wobei die mehreren Anweisungen, in Antwort auf ihre Ausführung, ferner die Rechenvorrichtung veranlassen zum: Generieren und Bewahren in einem Speicher der Rechenvorrichtung: zumindest eines sequenziellen Schlüssel-Arrays, das Schlüssel-Array enthaltend einen Satz von (K, Vindex)-Paaren, wobei: K ein einzigartiger Schlüssel ist und Vindex ein Index eines Elements im Wert-Array ist, das den Wert des letzten (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  • Beispiel 26 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von Beispiel 25 und/oder anderen Beispielen hierin enthalten, wobei die mehreren Anweisungen, in Antwort auf ihre Ausführung, ferner die Rechenvorrichtung veranlassen zum: nach Beendigung der Mapping-Operation an dem Satz von lokalen Daten, Schreiben des sequenziellen Schlüssel-Arrays zum fernen Solid-State-Laufwerk.
  • Beispiel 27 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von einem von Beispielen 24-26 und/oder anderen Beispielen hierin enthalten, wobei der Wert von Vpriorindex für das erste (V, Vpriorindex)-Paar für jeden Schlüssel im sequenziellen Wert-Array null ist.
  • Beispiel 28 kann ein oder mehrere nicht transitorische computerlesbare Datenspeichermedien enthalten, aufweisend mehrere Anweisungen, die, in Antwort auf ihre Ausführung, eine Rechenvorrichtung veranlassen zum: Transferieren, durch ein Speicherzugriffsmodul, einzelner von Sätzen von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von mehreren Solid-State-Laufwerken fern von dem Computer, in dem die (Schlüssel, Wert)-Datenpaare in mehreren Warteschlangen gespeichert sind, durch direkten Transfer durch fernen Direktzugriff der Solid-State-Laufwerke über ein Netzwerk ohne Verwendung eines Zwischenstufendatenspeichers; und Bereitstellen der einzelnen von Sätzen von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren an einem Satz von Datenreduktionsmodulen, die kommunikationsfähig mit dem Speicherzugriffsmodul verbunden sind.
  • Beispiel 29 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von Beispiel 28 und/oder anderen Beispielen hierin enthalten, wobei das Speicherzugriffsmodul die einzelnen der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren fernen Solid-State-Laufwerken unter Verwendung unsynchronisierter Rohblockvorrichtungszugriffe gemäß einer Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation transferiert.
  • Beispiel 30 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von Beispiel 28 und/oder anderen Beispielen hierin enthalten, wobei die Datenreduktionsmodule Datenreduktionsoperationen an Sätzen von (Schlüssel, Wert)-Datenpaaren zur Verringerung einer Menge von Werten durchführen, die mit einem gemeinsam benutzten Schlüssel verknüpft sind.
  • Beispiel 31 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von Beispiel 30 und/oder anderen Beispielen hierin enthalten, wobei die Rechenvorrichtung ferner ein Programmierungs-Framework aufweist, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt, und die Datenreduktionsoperationen Teil einer Reduce-Operation unter dem Framework sind.
  • Beispiel 32 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von Beispiel 28 und/oder anderen Beispielen hierin enthalten, wobei die Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren Zwischen-(Schlüssel, Wert)-Datenpaare sind, die aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren durch einen Mapper auf einer Rechenvorrichtung fern von der Rechenvorrichtung generiert werden, die an die fernen Solid-State-Laufwerke gekoppelt ist.
  • Beispiel 33 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von Beispiel 31 und/oder anderen Beispielen hierin enthalten, wobei der Mapper Teil eines Map-Moduls unter einem Programmierungs-Framework ist, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt.
  • Beispiel 34 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von Beispiel 29 und/oder anderen Beispielen hierin enthalten, wobei die fernen Solid-State-Laufwerke nicht flüchtigen Speicher mit Byte-adressierbarem Direktzugriff enthalten.
  • Beispiel 35 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von Beispiel 28 und/oder anderen Beispielen hierin enthalten, wobei die in Warteschlange gereihten (Schlüssel, Wert)-Datenpaare, die in den mehreren Solid-State-Laufwerken gespeichert sind, in einer lokalen Reihenfolge gespeichert sind, die durch die Schlüssel indiziert ist.
  • Beispiel 36 kann das eine oder die mehreren nicht transitorischen computerlesbaren Datenspeichermedien von einem von Beispielen 28-35 und/oder anderen Beispielen hierin enthalten, wobei der Transfer enthält: einen Transfer aus ausgewählten der mehreren Warteschlangen, die in den mehreren fernen Festkörperspeichern liegen, eines Satzes von (Schlüssel, Wert)-Paaren in einer globalen Reihenfolge, und wobei der Transfer in einer globalen Reihenfolge einen Transfer aller (Schlüssel, Wert)-Paare entsprechend einem Schlüssel Kn aus den ausgewählten der mehreren Warteschlangen enthält, vor einem Transfer von (Schlüssel, Wert)-Paaren, deren Schlüsselwert größer ist als Kn.
  • Beispiel 37 kann eine Einrichtung zum Berechnen enthalten, aufweisend: Mittel zum Transferieren, durch ein Speicherzugriffsmodul, einzelner von Sätzen von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von mehreren Solid-State-Laufwerken fern von dem Computer, in dem die (Schlüssel, Wert)-Datenpaare in mehreren Warteschlangen gespeichert sind, durch direkten Transfer durch fernen Direktzugriff des Festkörperspeichers über ein Netzwerk ohne Verwendung eines Zwischenstufendatenspeichers; und Mittel zum Bereitstellen der einzelnen von Sätzen von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren an einem Satz von Datenreduktionsmodulen, die kommunikationsfähig mit dem Speicherzugriffsmodul verbunden sind.
  • Beispiel 38 kann die Einrichtung zum Berechnen nach Anspruch 37 und/oder anderen Beispielen hierin enthalten, wobei das Mittel zum Transferieren die einzelnen der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren fernen Solid-State-Laufwerken unter Verwendung unsynchronisierter Rohblockvorrichtungszugriffe gemäß einer Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation transferiert.
  • Beispiel 39 kann die Einrichtung zum Berechnen von Beispiel 37 und/oder anderen Beispielen hierin enthalten, wobei die Datenreduktionsmodule Datenreduktionsoperationen an Sätzen von (Schlüssel, Wert)-Datenpaaren zur Verringerung einer Menge von Werten durchführen, die mit einem gemeinsam benutzten Schlüssel verknüpft sind.
  • Beispiel 40 kann die Einrichtung zum Berechnen von Beispiel 39 und/oder anderen Beispielen hierin enthalten, wobei die Einrichtung zum Berechnen ferner ein Programmierungs-Framework aufweist, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt, und die Datenreduktionsmodule Teil einer Reduce-Operation unter dem Framework sind.
  • Beispiel 41 kann die Einrichtung zum Berechnen von Beispiel 37 und/oder anderen Beispielen hierin enthalten, wobei die Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren Zwischen-(Schlüssel, Wert)-Datenpaare sind, die aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren durch einen Mapper an einer Einrichtung für ein Berechnungssystem fern von der Einrichtung zum Berechnen generiert werden, die an den fernen Festkörperspeicher gekoppelt ist.
  • Beispiel 42 kann die Einrichtung zum Berechnen von Beispiel 40 und/oder anderen Beispielen hierin enthalten, wobei der Mapper Teil eines Map-Moduls unter dem Framework ist.
  • Beispiel 43 kann die Einrichtung zum Berechnen von Beispiel 37 und/oder anderen Beispielen hierin enthalten, wobei die fernen Solid-State-Laufwerke nicht flüchtigen Speicher mit Byte-adressierbarem Direktzugriff enthalten.
  • Beispiel 44 kann die Einrichtung zum Berechnen von Beispiel 37 und/oder anderen Beispielen hierin enthalten, wobei die in Warteschlange gereihten (Schlüssel, Wert)-Datenpaare, die in den mehreren Solid-State-Laufwerken gespeichert sind, in einer lokalen Reihenfolge gespeichert sind, die durch die Schlüssel indiziert ist.
  • Beispiel 45 kann die Einrichtung zum Berechnen von einem von Beispielen 37-44 und/oder anderen Beispielen hierin enthalten, wobei das Mittel zum Transferieren Mittel zum Transferieren von ausgewählten der mehreren Warteschlangen, die in den mehreren fernen Solid-State-Laufwerken liegen, eines Satzes von (Schlüssel, Wert)-Paaren in einer globalen Reihenfolge, enthält und wobei das Transferieren in einer globalen Reihenfolge Transferieren aller (Schlüssel, Wert)-Paare entsprechend einem Schlüssel Kn aus den ausgewählten der mehreren Warteschlangen enthält, vor Transferieren von (Schlüssel, Wert)-Paaren, deren Schlüsselwert größer ist als Kn.
  • Beispiel 45 kann ein Verfahren enthalten, das durch einen Computer durchzuführen ist, aufweisend: Durchführen einer Mapping-Operation an einem Satz von lokalen Daten und Generieren eines Satzes von (Schlüssel, Wert)-Paaren; Transferieren von Daten über eine Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation vom Mapper-Modul zu einem fernen Solid-State-Laufwerk durch fernen Direktzugriff; und
    Generieren und Transferieren zum fernen Solid-State-Laufwerk:
    • zumindest eines sequenziellen Wert-Arrays, das Wert-Array aufweisend einen Satz von (V, Vpriorindex)-Paaren, wobei: V der Wert eines aktuellen (Schlüssel, Wert)-Paares ist und Vpriorindex ein Index eines früheren Elements des sequenziellen Wert-Arrays ist, das den Wert eines vorherigen (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  • Beispiel 47 kann das Verfahren von Beispiel 46 und/oder anderen Beispielen hierin enthalten, ferner aufweisend: Generieren und Bewahren in einem Speicher des Computers: zumindest eines sequenziellen Schlüssel-Arrays, das Schlüssel-Array enthaltend einen Satz von (K, Vindex)-Paaren, wobei: K ein einzigartiger Schlüssel ist und Vindex ein Index eines Elements im Wert-Array ist, das den Wert des letzten (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  • Beispiel 48 kann das Verfahren von Beispiel 47 und/oder anderen Beispielen hierin enthalten, ferner aufweisend: nach Beendigung der Mapping-Operation an dem Satz von lokalen Daten, Schreiben des sequenziellen Schlüssel-Arrays zum fernen Solid-State-Laufwerk.
  • Beispiel 49 kann das Verfahren von einem von Beispielen 46-48 und/oder anderen Beispielen hierin enthalten, wobei der Wert von Vpriorindex für das erste (V, Vpriorindex)-Paar für jeden Schlüssel im sequenziellen Wert-Array null ist.
  • Beispiel 50 kann eine Einrichtung zum Berechnen enthalten, aufweisend: Mittel zum Durchführen einer Mapping-Operation an einem Satz von lokalen Daten und Generieren eines Satzes von (Schlüssel, Wert)-Paaren; Mittel zum Transferieren von Daten über eine Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation vom Mapper-Modul zu einem fernen Solid-State-Laufwerk durch fernen Direktzugriff; und Mittel zum Generieren und Transferieren zum fernen Solid-State-Laufwerk: zumindest eines sequenziellen Wert-Arrays, das Wert-Array aufweisend einen Satz von (V, Vpriorindex)-Paaren, wobei: V der Wert eines aktuellen (Schlüssel, Wert)-Paares ist und Vpriorindex ein Index eines früheren Elements des sequenziellen Wert-Arrays ist, das den Wert eines vorherigen (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  • Beispiel 51 kann die Einrichtung zum Berechnen von Beispiel 50 und/oder anderen Beispielen hierin enthalten, ferner aufweisend: Mittel zum Generieren und Bewahren in einem Speicher des Computers: zumindest eines sequenziellen Schlüssel-Arrays, das Schlüssel-Array enthaltend einen Satz von (K, Vindex)-Paaren, wobei: K ein einzigartiger Schlüssel ist und Vindex ein Index eines Elements im Wert-Array ist, das den Wert des letzten (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  • Beispiel 52 kann die Einrichtung zum Berechnen von Beispiel 51 und/oder anderen Beispielen hierin enthalten, ferner aufweisend: Mittel zum Schreiben des sequenziellen Schlüssel-Arrays zum fernen Solid-State-Laufwerk nach Beendigung, durch die Mittel für ein Mapping, der Mapping-Operation an dem Satz von lokalen Daten.
  • Beispiel 53 kann die Einrichtung zum Berechnen von einem von Beispielen 46-48 und/oder anderen Beispielen hierin enthalten, wobei der Wert von Vpriorindex für das erste (V, Vpriorindex)-Paar für jeden Schlüssel im sequenziellen Wert-Array null ist.
  • Beispiel 54 kann ein System enthalten, aufweisend mehrere Solid-State-Laufwerke, in welchen Sätze von (Schlüssel, Wert)-Datenpaaren in mehreren Warteschlangen gespeichert sind; einen Satz von Datenreduktionsmodulen zum Durchführen von Datenreduktionsoperationen an den Sätzen von (Schlüssel, Wert)-Datenpaaren zur Verringerung einer Menge von Werten, die mit einem gemeinsam benutzten Schlüssel verknüpft sind; und ein Speicherzugriffsmodul, das kommunikationsfähig an den Satz von Datenreduktionsmodulen gekoppelt ist, um direkt einzelne der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren Solid-State-Laufwerken durch fernen Direktzugriff der Solid-State-Laufwerke über ein Netzwerk ohne Verwendung eines Zwischenstufendatenspeichers zu transferieren.
  • Beispiel 55 kann das System von Beispiel 54 und/oder anderen Beispielen hierin enthalten, ferner aufweisend ein Programmierungs-Framework, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt, und die Datenreduktionsoperationen sind Teil einer Reduce-Operation unter dem Framework.
  • Beispiel 56 kann das System von Beispiel 54 und/oder anderen Beispielen hierin enthalten, wobei die Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren Zwischen-(Schlüssel, Wert)-Datenpaare sind, die aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren durch einen Mapper auf einem Computersystem fern von dem System generiert werden, das kommunikationsfähig an die mehreren Solid-State-Laufwerke gekoppelt ist.
  • Beispiel 57 kann das System von Beispiel 54 und/oder anderen Beispielen hierin enthalten, wobei die mehreren Solid-State-Laufwerke 3D-Xpoint-Datenspeichermedien aufweisen.
  • Beispiel 58 kann das System von Beispiel 54 und/oder anderen Beispielen hierin enthalten, wobei das System in einem Datenzentrum angeordnet ist.
  • Beispiel 59 kann das System von einem von Beispielen 54-58 und/oder anderen Beispielen hierin enthalten, wobei Direktzugriff der Solid-State-Laufwerke gemäß einer Nichtflüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation erfolgt.
  • Die vorangehende Beschreibung einer oder mehrerer Implementierungen stellt Veranschaulichung und Beschreibung bereit, soll aber nicht erschöpfend sein oder den Umfang von Ausführungsformen auf die präzise offenbarte Form begrenzen. Modifizierungen und Variationen sind angesichts der oben stehenden Lehren möglich oder können sich aus der praktischen Umsetzung von verschiedenen Ausführungsformen ergeben.

Claims (31)

  1. Einrichtung zum Berechnen, aufweisend: einen Satz von Datenreduktionsmodulen zum Durchführen von Datenreduktionsoperationen an Sätzen von (Schlüssel, Wert)-Datenpaaren zur Verringerung einer Menge von Werten, die mit einem gemeinsam benutzten Schlüssel verknüpft sind, wobei die (Schlüssel, Wert)-Datenpaare in mehreren Warteschlangen gespeichert sind, die in mehreren Solid-State-Laufwerken fern von der Einrichtung liegen; und ein Speicherzugriffsmodul, das kommunikationsfähig an den Satz von Datenreduktionsmodulen gekoppelt ist, um direkt einzelne der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren fernen Solid-State-Laufwerken durch fernen Direktzugriff der Solid-State-Laufwerke über ein Netzwerk ohne Verwendung eines Zwischenstufendatenspeichers zu transferieren.
  2. Einrichtung nach Anspruch 1, wobei die Einrichtung ferner ein Programmierungs-Framework aufweist, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt, und die Datenreduktionsoperationen Teil einer Reduce-Operation unter dem Framework sind.
  3. Einrichtung nach Anspruch 1, wobei die Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren Zwischen-(Schlüssel, Wert)-Datenpaare sind, die aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren durch einen Mapper auf einem Computersystem fern von der Einrichtung generiert werden, die kommunikationsfähig an die fernen Solid-State-Laufwerke gekoppelt ist.
  4. Einrichtung nach Anspruch 3, wobei der Mapper Teil eines Map-Moduls unter einem Programmierungs-Framework ist, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt.
  5. Einrichtung nach Anspruch 1, wobei die (Schlüssel, Wert)-Datenpaare, die in den mehreren Warteschlangen gespeichert sind, in einer lokalen Reihenfolge gespeichert sind, die durch die Schlüssel indiziert ist.
  6. Einrichtung nach einem der Ansprüche 1-5, wobei die fernen Solid-State-Laufwerke nicht flüchtigen Speicher mit Byte-adressierbarem Direktzugriff enthalten.
  7. Einrichtung nach Anspruch 1, wobei das Speicherzugriffsmodul ferner für jedes Datenreduktionsmodul dient zum: Transferieren, aus ausgewählten der mehreren Warteschlangen, die in den mehreren fernen Solid-State-Laufwerken liegen, von (Schlüssel, Wert)-Datenpaaren in einer globalen Reihenfolge.
  8. Einrichtung nach Anspruch 6, wobei der Transfer in einer globalen Reihenfolge einen Transfer aller (Schlüssel, Wert)-Paare entsprechend einem Schlüssel Kn aus den ausgewählten der mehreren Warteschlangen enthält, vor einem Transfer von (Schlüssel, Wert)-Paaren, deren Schlüsselwert größer ist als Kn.
  9. Einrichtung nach Anspruch 1, wobei das Speicherzugriffsmodul die einzelnen der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren fernen Solid-State-Laufwerken unter Verwendung unsynchronisierter Rohblockvorrichtungszugriffe gemäß einer Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation transferiert.
  10. Einrichtung nach Anspruch 1, wobei jedes des Satzes von Datenreduktionsmodulen eine einzelne spezifische Reduce-Operation zu einem Zeitpunkt durchführt.
  11. Verfahren, das durch einen Computer durchzuführen ist, aufweisend: Transferieren, durch ein Speicherzugriffsmodul, einzelner von Sätzen von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von mehreren Solid-State-Laufwerken fern von dem Computer, in dem die (Schlüssel, Wert)-Datenpaare in mehreren Warteschlangen gespeichert sind, durch direkten Transfer durch fernen Direktzugriff der Solid-State-Laufwerke über ein Netzwerk ohne Verwendung eines Zwischenstufendatenspeichers; und Bereitstellen der einzelnen von Sätzen von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren an einen Satz von Datenreduktionsmodulen, die kommunikationsfähig mit dem Speicherzugriffsmodul verbunden sind.
  12. Verfahren nach Anspruch 11, wobei das Speicherzugriffsmodul die einzelnen der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren fernen Solid-State-Laufwerken unter Verwendung unsynchronisierter Rohblockvorrichtungszugriffe gemäß einer Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation transferiert.
  13. Verfahren nach Anspruch 11, wobei die Datenreduktionsmodule Datenreduktionsoperationen an Sätzen von (Schlüssel, Wert)-Datenpaaren zur Verringerung einer Menge von Werten durchführen, die mit einem gemeinsam benutzten Schlüssel verknüpft sind.
  14. Verfahren nach Anspruch 13, wobei der Computer ferner ein Programmierungs-Framework aufweist, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt, und die Datenreduktionsmodule eine Reduce-Operation unter dem Framework implementieren.
  15. Verfahren nach Anspruch 11, wobei die Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren Zwischen-(Schlüssel, Wert)-Datenpaare sind, die aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren durch einen Mapper auf einem Computersystem fern von dem Computer generiert werden, der an den fernen Festkörperspeicher gekoppelt ist.
  16. Verfahren nach Anspruch 14, wobei der Mapper eine Map-Operation unter dem Framework implementiert.
  17. Verfahren nach Anspruch 11, wobei die fernen Solid-State-Laufwerke nicht flüchtigen Speicher mit Byte-adressierbarem Direktzugriff enthalten.
  18. Verfahren nach Anspruch 11, wobei die in Warteschlange gereihten (Schlüssel, Wert)-Datenpaare, die in den mehreren fernen Festkörperspeichern gespeichert sind, in einer lokalen Reihenfolge gespeichert sind, die durch die Schlüssel indiziert ist.
  19. Verfahren nach einem der Ansprüche 11-18, wobei das Transferieren enthält: Transferieren, von ausgewählten der mehreren Warteschlangen, die in den mehreren Solid-State-Laufwerken liegen, eines Satzes von (Schlüssel, Wert)-Paaren in einer globalen Reihenfolge, und wobei das Transferieren in einer globalen Reihenfolge Transferieren aller (Schlüssel, Wert)-Paare entsprechend einem Schlüssel Kn aus den ausgewählten der mehreren Warteschlangen enthält, vor Transferieren von (Schlüssel, Wert)-Paaren, deren Schlüsselwert größer ist als Kn.
  20. Einrichtung zum Berechnen, aufweisend: ein Mapper-Modul zum Durchführen von Mapping-Operationen an Sätzen von (Schlüssel, Wert)-Paaren, um eine Menge von Werten auf einen gemeinsam benutzten Schlüssel zu mappen, um einen Satz von (Schlüssel, Wert)-Paaren zu generieren; ein Speicherschreibmodul, das kommunikationsfähig mit dem Mapper-Modul verbunden ist, um Daten über eine Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation vom Mapper-Modul zu einem fernen Solid-State-Laufwerk durch fernen Direktzugriff zu transferieren; einen Speicher; und ein Speichermanagementmodul, das kommunikationsfähig an den Speicher und das Speicherschreibmodul gekoppelt ist, um zu generieren und in das ferne Solid-State-Laufwerk zu schreiben: zumindest ein sequenzielles Wert-Array, das Wert-Array aufweisend einen Satz von (V, Vpriorindex)-Paaren, wobei: V der Wert eines aktuellen (Schlüssel, Wert)-Paares ist und Vpriorindex ein Index eines früheren Elements des sequenziellen Wert-Arrays ist, das den Wert eines vorherigen (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  21. Einrichtung nach Anspruch 20, wobei das Speichermanagementmodul ferner zum Generieren und Schreiben in den Speicher dient: zumindest eines sequenziellen Schlüssel-Arrays, das Schlüssel-Array enthaltend einen Satz von (K, Vindex)-Paaren, wobei: K ein einzigartiger Schlüssel ist und Vindex ein Index eines Elements im Wert-Array ist, das den Wert des letzten (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  22. Einrichtung nach einem der Ansprüche 20 oder 21, wobei das Speichermanagementmodul ferner, nachdem das Mapper-Modul eine Mapping-Operation an einem Satz von Eingangsdaten beendet hat, zum Schreiben des sequenziellen Schlüssel-Arrays zum Solid-State-Laufwerk dient.
  23. Nicht transitorisches computerlesbares Datenspeichermedium oder nicht transitorische computerlesbare Datenspeichermedien, aufweisend mehrere Anweisungen, die, in Antwort auf ihre Ausführung, eine Rechenvorrichtung veranlassen zum: Durchführen einer Mapping-Operation an einem Satz von lokalen Daten und Generieren eines Satzes von (Schlüssel, Wert)-Paaren; Transferieren von Daten über eine Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation vom Mapper-Modul zu einem fernen Solid-State-Laufwerk durch fernen Direktzugriff; und Generieren und Transferieren zu dem fernen Solid-State-Laufwerk: zumindest eines sequenziellen Wert-Arrays, das Wert-Array aufweisend einen Satz von (V, Vpriorindex)-Paaren, wobei: V der Wert eines aktuellen (Schlüssel, Wert)-Paares ist und Vpriorindex ein Index eines früheren Elements des sequenziellen Wert-Arrays ist, das den Wert eines vorherigen (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  24. Nicht transitorisches computerlesbares Datenspeichermedium oder nicht transitorische computerlesbare Datenspeichermedien nach Anspruch 23, wobei die mehreren Anweisungen, in Antwort auf ihre Ausführung, ferner die Rechenvorrichtung veranlassen zum: Generieren und Bewahren in einem Speicher der Rechenvorrichtung: zumindest eines sequenziellen Schlüssel-Arrays, das Schlüssel-Array enthaltend einen Satz von (K, Vindex)-Paaren, wobei: K ein einzigartiger Schlüssel ist und Vindex ein Index eines Elements im Wert-Array ist, das den Wert des letzten (Schlüssel, Wert)-Paares für denselben Schlüssel speichert.
  25. Nicht transitorisches computerlesbares Datenspeichermedium oder nicht transitorische computerlesbare Datenspeichermedien nach Anspruch 24, wobei die mehreren Anweisungen, in Antwort auf ihre Ausführung, ferner die Rechenvorrichtung veranlassen zum: nach Beendigung der Mapping-Operation an dem Satz von lokalen Daten, Schreiben des sequenziellen Schlüssel-Arrays zum fernen Solid-State-Laufwerk.
  26. System, aufweisend mehrere Solid-State-Laufwerke, in welchen Sätze von (Schlüssel, Wert)-Datenpaaren in mehreren Warteschlangen gespeichert sind; einen Satz von Datenreduktionsmodulen zum Durchführen von Datenreduktionsoperationen an den Sätzen von (Schlüssel, Wert)-Datenpaaren zur Verringerung einer Menge von Werten, die mit einem gemeinsam benutzten Schlüssel verknüpft sind; und ein Speicherzugriffsmodul, das kommunikationsfähig an den Satz von Datenreduktionsmodulen gekoppelt ist, um direkt einzelne der Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren von den mehreren Solid-State-Laufwerken durch fernen Direktzugriff der Solid-State-Laufwerke über ein Netzwerk ohne Verwendung eines Zwischenstufendatenspeichers zu transferieren.
  27. System nach Anspruch 26, ferner aufweisend ein Programmierungs-Framework, das die Verarbeitung und verteilte Datenspeicherung sehr großer Datensätze unterstützt, wobei die Datenreduktionsoperationen Teil einer Reduce-Operation unter dem Framework sind.
  28. System nach Anspruch 26, wobei die Sätze von in Warteschlange gereihten (Schlüssel, Wert)-Datenpaaren Zwischen-(Schlüssel, Wert)-Datenpaare sind, die aus mehreren Quellen von (Schlüssel, Wert)-Datenpaaren durch einen Mapper auf einem Computersystem fern von dem System generiert werden, das kommunikationsfähig an die mehreren Solid-State-Laufwerke gekoppelt ist.
  29. System nach Anspruch 26, wobei die mehreren Solid-State-Laufwerke 3D-Xpoint-Datenspeichermedien aufweisen.
  30. System nach Anspruch 26, wobei das System in einem Datenzentrum angeordnet ist.
  31. System nach einem der Ansprüche 26-29, wobei Direktzugriff der Solid-State-Laufwerke gemäß einer Nicht-flüchtiger-Speicherzugriff-über-Netzwerk-Spezifikation erfolgt.
DE112017007865.2T 2017-08-16 2017-08-16 Netzgebundener shuffle-datenspeicher Pending DE112017007865T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/097632 WO2019033292A1 (en) 2017-08-16 2017-08-16 NETWORK REDISTRIBUTE STORAGE

Publications (1)

Publication Number Publication Date
DE112017007865T5 true DE112017007865T5 (de) 2020-05-14

Family

ID=65361725

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017007865.2T Pending DE112017007865T5 (de) 2017-08-16 2017-08-16 Netzgebundener shuffle-datenspeicher

Country Status (3)

Country Link
US (1) US11194522B2 (de)
DE (1) DE112017007865T5 (de)
WO (1) WO2019033292A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11922026B2 (en) 2022-02-16 2024-03-05 T-Mobile Usa, Inc. Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11580162B2 (en) * 2019-04-18 2023-02-14 Samsung Electronics Co., Ltd. Key value append
WO2021236171A1 (en) * 2020-05-18 2021-11-25 Futurewei Technologies, Inc. Partial sort phase to reduce i/o overhead
CN111641622B (zh) * 2020-05-21 2022-01-07 中国人民解放军国防科技大学 一种融合网络接口卡、报文编码方法及其报文传输方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9424274B2 (en) 2013-06-03 2016-08-23 Zettaset, Inc. Management of intermediate data spills during the shuffle phase of a map-reduce job
US8819335B1 (en) * 2013-08-30 2014-08-26 NXGN Data, Inc. System and method for executing map-reduce tasks in a storage device
US20160103845A1 (en) 2014-10-09 2016-04-14 Robin Systems, Inc. Enhanced Handling Of Intermediate Data Generated During Distributed, Parallel Processing
US10606478B2 (en) * 2014-10-22 2020-03-31 Qubole, Inc. High performance hadoop with new generation instances
WO2017044047A1 (en) * 2015-09-08 2017-03-16 Agency For Science, Technology And Research Highly scalable computational active ssd storage device
KR101686346B1 (ko) * 2015-09-11 2016-12-29 성균관대학교산학협력단 하이브리드 ssd 기반 하둡 분산파일 시스템의 콜드 데이터 축출방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11922026B2 (en) 2022-02-16 2024-03-05 T-Mobile Usa, Inc. Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network

Also Published As

Publication number Publication date
US11194522B2 (en) 2021-12-07
WO2019033292A1 (en) 2019-02-21
US20200210114A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
DE112013000752B4 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE112016003120B4 (de) Umleiten einer Kopie beim Schreiben
DE102012216568B4 (de) Scheduling und Managen von Rechentasks mit unterschiedlichen Ausführungsprioritätsstufen
DE102013207049B4 (de) Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung
DE112017007865T5 (de) Netzgebundener shuffle-datenspeicher
DE102020127705A1 (de) Techniken für einen effizienten fabric-attached-speicher
DE102010044531B4 (de) Autonome Speicherarchitektur
DE102013016871A1 (de) Technik zur Steigerung der Effizienz in mehrsträngigen Verarbeitungseinrichtngen
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE112010004931T5 (de) Mehrphasige Wiederherstellung von Dateisystemen mit SelektiverBedarfsweiser Verfügbarkeit von Daten(
DE112020003066T5 (de) Transponierungsoperationen mit verarbeitungselementarray
DE112012000282B4 (de) Anwendungswiederherstellung in einem Dateisystem
DE102012216029A1 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE112013007300T5 (de) Speichersysteme mit adaptiver Löschcode-Generierung
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE102013013137A1 (de) Mehrstufige registerumbenennung durch entfernen von abhängigkeiten
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE112018004247T5 (de) Datenverarbeitungsauslagerung unter verwendung einer speicherinternen codeausführung
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE102013215008A1 (de) Datenmobilität auf Rastergrundlage
DE102017120486A1 (de) Abfrageneustartfähigkeit

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000