DE112013000752T5 - Verwalten von Verarbeitungselementen in einem Streaming-Datensystem - Google Patents

Verwalten von Verarbeitungselementen in einem Streaming-Datensystem Download PDF

Info

Publication number
DE112013000752T5
DE112013000752T5 DE112013000752.5T DE112013000752T DE112013000752T5 DE 112013000752 T5 DE112013000752 T5 DE 112013000752T5 DE 112013000752 T DE112013000752 T DE 112013000752T DE 112013000752 T5 DE112013000752 T5 DE 112013000752T5
Authority
DE
Germany
Prior art keywords
processing element
processing
cloned
operators
data
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.)
Granted
Application number
DE112013000752.5T
Other languages
English (en)
Other versions
DE112013000752B4 (de
Inventor
c/o IBM Corporation Santosuosso John
c/o IBM Corporation Schulz Brandon
c/o IBM Corporation Cradick Ryan Kirk
c/o IBM Corporation Branson Michael
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013000752T5 publication Critical patent/DE112013000752T5/de
Application granted granted Critical
Publication of DE112013000752B4 publication Critical patent/DE112013000752B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/502Proximity

Abstract

Datenstromanwendungen können die Hardware-Ressourcen unwirksam nutzen, die die Verarbeitungselemente des Datenstroms ausführen. Ein Rechenknoten kann zum Beispiel vier Verarbeitungselemente beherbergen und jedes jeweils unter Verwenden einer CPU ausführen. Andere CPUs auf dem Rechenknoten können jedoch inaktiv sein. Um diese verfügbaren Hardware-Ressourcen zu nutzen, kann ein Datenstromprogrammierer ein oder mehrere Verarbeitungselemente identifizieren, die geklont sein können. Die geklonten Verarbeitungselemente können verwendet werden, um einen anderen Ausführungspfad zu erzeugen, der parallel zu dem Ausführungspfad besteht, der die ursprünglichen Verarbeitungselemente enthält. Da die geklonten Verarbeitungselemente dieselben Operatoren enthalten wie die ursprünglichen Verarbeitungselemente, kann der Datenstrom, der zuvor nur durch das ursprüngliche Verarbeitungselement geflossen ist, geteilt und sowohl durch die ursprünglichen als auch die geklonten Verarbeitungselemente gesendet werden. Auf diese Weise kann der parallele Ausführungspfad nicht voll ausgelastete Hardware-Ressourcen verwenden, um den Durchsatz des Datenstroms zu verbessern.

Description

  • Hintergrund
  • Gebiet der Erfindung
  • Ausführungsformen der vorliegenden Erfindung beziehen sich allgemein auf Anwendungen der Datenstromverarbeitung. Die offenbarten Ausführungsformen offenbaren insbesondere ein Verteilen von Verarbeitungselementen oder Operatoren, um nicht voll ausgelastete Hardware-Ressourcen in einer Umgebung einer Datenstromverarbeitung zu nutzen.
  • Beschreibung des Standes der Technik
  • Mit den in hohem Maße entwickelten Computerdatenbanken sind auch die Datenverarbeitungsanforderungen rasch gestiegen, die an Datenbanksysteme gestellt werden. Datenbanksysteme sind üblicherweise so konfiguriert, dass der Vorgang zum Speichern von Daten von dem Zugreifen auf Daten, die in der Datenbank gespeichert sind, ihrem Bearbeiten oder Verwenden getrennt ist. Datenbanken verwenden insbesondere ein Modell, bei dem Daten zuerst gespeichert, dann indexiert und schließlich abgefragt werden. Dieses Modell kann jedoch die Leistungsanforderungen einiger Echtzeitanwendungen nicht erfüllen. Die Geschwindigkeit, mit der ein Datenbanksystem zum Beispiel eingehende Daten empfangen und speichern kann, begrenzt die Menge der Daten, die verarbeitet oder anderweitig bewertet werden kann. Dies kann im Gegenzug die Fähigkeit von Datenbankanwendungen einschränken, große Datenmengen in Echtzeit zu verarbeiten.
  • KURZDARSTELLUNG
  • Ausführungsformen der Erfindung stellen ein Verfahren, ein System und ein Computerprogrammprodukt zum Verarbeiten von Daten bereit. Das Verfahren, das System und das Computerprogramm empfangen Streaming-Daten, die von einer Vielzahl von Verarbeitungselementen verarbeitet werden sollen, welche einen oder mehrere Operatoren aufweisen. Die Operatoren verarbeiten mindestens einen Teil der empfangenen Daten durch den Betrieb eines oder mehrerer Computerprozessoren. Das Verfahren, das System und das Computerprogramm erstellen einen Operatorgraphen aus der Vielzahl von Operatoren. Der Operatorgraph definiert mindestens einen Ausführungspfad, bei dem ein erster Operator aus der Vielzahl von Operatoren so konfiguriert ist, dass er Datentupel von mindestens einem vorgelagerten Operator empfängt und Datentupel an mindestens einen nachgelagerten Operator übermittelt. Das Verfahren, das System und das Computerprogramm identifizieren mit Bezug auf vordefinierte Kriterien eine nicht voll ausgelastete Hardware-Ressource in einem Datenverarbeitungssystem, das die Operatoren ausführt. Das Verfahren, das System und das Computerprogramm klonen ein erstes Verarbeitungselement aus der Vielzahl von Verarbeitungselementen, so dass das geklonte Verarbeitungselement denselben oder mehrere Operatoren wie das erste Verarbeitungselement aufweist. Das Verfahren, das System und das Computerprogramm verarbeiten die empfangenen Streaming-Daten in einem ersten Ausführungspfad, der das geklonte Verarbeitungselement enthält, wobei der erste Ausführungspfad parallel zu einem zweiten Ausführungspfad ausgeführt wird, der das erste Verarbeitungselement enthält. Das geklonte Verarbeitungselement verarbeitet darüber hinaus die empfangenen Streaming-Daten unter Verwendung der nicht voll ausgelasteten Hardware-Ressource.
  • Bei einer anderen Ausführungsform weist ein Verfahren, das Streaming-Daten empfängt, die von einer Vielzahl von Verarbeitungselementen verarbeitet werden sollen, einen oder mehrere Operatoren auf. Die Operatoren verarbeiten mindestens einen Teil der empfangenen Daten durch den Betrieb eines oder mehrerer Computerprozessoren. Das Verfahren erstellt einen Operatorgraphen aus der Vielzahl von Operatoren. Der Operatorgraph definiert mindestens einen Ausführungspfad, bei dem ein erster Operator aus der Vielzahl von Operatoren so konfiguriert ist, dass er Datentupel von mindestens einem vorgelagerten Operator empfängt und Datentupel an mindestens einen nachgelagerten Operator übermittelt. Das Verfahren identifiziert mit Bezug auf vordefinierte Kriterien eine nicht voll ausgelastete Hardware-Ressource in einem Datenverarbeitungssystem, das die Operatoren ausführt. Das Verfahren trennt ferner einen ersten Operator von einem ersten Verarbeitungselement aus der Vielzahl von Verarbeitungselementen, wobei das erste Verarbeitungselement eine Vielzahl von Operatoren aufweist. Das Verfahren fügt den ersten Operator mit einem zweiten Verarbeitungselement aus der Vielzahl von Verarbeitungselementen zusammen. Nach dem Zusammenfügen des ersten Operators verarbeitet das Verfahren mindestens einen Teil der empfangenen Streaming-Daten unter Verwendung des ersten Operators, wobei der erste Operator den Teil der empfangenen Streaming-Daten unter Verwendung der nicht voll ausgelasteten Hardware-Ressource verarbeitet.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Um die Art und Weise, wie die oben aufgeführten Aspekte erreicht werden, genau verstehen zu können, kann eine genauere Beschreibung der Ausführungsformen der oben kurz zusammengefassten Erfindung durch Bezugnahme auf die beigefügten Zeichnungen erhalten werden.
  • Es ist jedoch anzumerken, dass die beigefügten Zeichnungen lediglich typische Ausführungsformen dieser Erfindung zeigen und daher nicht als deren Umfang einschränkend betrachtet werden dürfen, da die Erfindung andere gleich wirksame Ausführungsformen zulassen kann.
  • Die 1A und 1B veranschaulichen eine Datenverarbeitungsinfrastruktur, die so konfiguriert ist, dass sie eine Datenstromverarbeitungsanwendung gemäß Ausführungsformen der Erfindung ausführt.
  • 2 ist eine genauere Ansicht des Rechenknotens der 1A und 1B gemäß einer Ausführungsform der Erfindung.
  • 3 ist eine genauere Ansicht des Server-Verwaltungssystems der 1A und 1B gemäß einer Ausführungsform der Erfindung.
  • 4 ist ein Ablaufplan, der eine Technik zum Klonen eines Verarbeitungselements in einem Operatorgraphen gemäß einer Ausführungsform der Erfindung veranschaulicht.
  • Die 5A bis 5C veranschaulichen ein Klonen eines Verarbeitungselements, um gemäß Ausführungsformen der Erfindung einen parallelen Ausführungspfad zu erzeugen.
  • Die 6A und 6B veranschaulichen ein Verteilen von geklonten Verarbeitungselementen an CPUs auf einem oder mehreren Computerknoten gemäß Ausführungsformen der Erfindung.
  • Die 7A und 7B veranschaulichen ein Klonen einer Vielzahl von Verarbeitungselementen auf einem einzelnen Ausführungspfad, um gemäß Ausführungsformen der Erfindung einen oder mehrere parallele Ausführungspfade zu erzeugen.
  • Die 8A bis 8D veranschaulichen ein Trennen und Verteilen von Operatoren eines Verarbeitungselements auf eine Vielzahl von CPUs gemäß Ausführungsformen der Erfindung.
  • Um das Verständnis zu erleichtern, wurden nach Möglichkeit identische Bezugszeichen verwendet, um identische Elemente, die den Figuren gemeinsam sind, zu bezeichnen. Es ist vorgesehen, dass Elemente, die bei einer Ausführungsform offenbart wurden, bei anderen Ausführungsformen vorteilhaft verwendet werden können, ohne dass dies ausdrücklich erwähnt wird.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die auf Datenströmen beruhende Datenverarbeitung und die auf Datenströmen beruhende Datenbankverarbeitung stellen eine sich entwickelnde Technologie für Datenbanksysteme dar. Es sind Produkte erhältlich, mit deren Hilfe Benutzer Anwendungen erstellen können, die Streaming-Daten verarbeiten und abfragen, bevor diese in eine Datenbankdatei gelangen. Mit dieser sich entwickelnden Technologie können Benutzer eine Verarbeitungslogik spezifizieren, die während des laufenden Betriebs auf eingehende Datensätze angewendet wird, wobei die Ergebnisse in sehr kurzer Zeit, oftmals innerhalb von Millisekunden, zur Verfügung stehen. Das Schaffen einer Anwendung unter Verwendung dieser Art von Verarbeitung hat zu einem neuen Programmierparadigma geführt, das die Entwicklung einer großen Vielfalt von innovativen Anwendungen, Systemen und Prozessen ermöglicht und neue Herausforderungen für Anwendungsprogrammierer und Datenbankentwickler mit sich bringt.
  • Bei einer Datenstromverarbeitungsanwendung sind Operatoren so untereinander verbunden, dass Daten von einem Operator zum nächsten fließen (z. B. über ein TCP/IP-Socket). Eine Skalierbarkeit wird erreicht, indem eine Anwendung durch Erstellen ausführbarer Dateien (d. h. Verarbeitungselemente) auf Rechenknoten verteilt wird, sowie dadurch, dass Verarbeitungselemente auf mehreren Knoten repliziert werden und ein Lastausgleich zwischen ihnen durchgeführt wird. Operatoren in einer Datenstromverarbeitungsanwendung können zusammengefügt werden, um ein ausführbares Verarbeitungselement zu bilden. Dadurch können die Verarbeitungselemente einen gemeinsamen Prozessraum gemeinsam nutzen, was zu einem viel schnelleren Datenaustausch zwischen Operatoren führt als beim Verwenden von Interprozess-Datenübertragungstechniken (z. B. unter Verwendung eines TCP/IP-Socket). Verarbeitungselemente können des Weiteren in einen Operatorgraphen, der den Datenfluss durch die Datenstromverarbeitungsanwendung darstellt, dynamisch eingefügt oder dynamisch aus diesem entfernt werden.
  • Datenstromanwendungen können ferner die Hardware-Ressourcen unwirksam nutzen, die die Verarbeitungselemente des Datenstroms ausführen. Ein Rechenknoten kann zum Beispiel vier Verarbeitungselemente beherbergen und jedes jeweils unter Verwenden einer CPU ausführen. Andere CPUs auf dem Rechenknoten können jedoch inaktiv sein. Um diese verfügbaren Hardware-Ressourcen zu nutzen, kann ein Datenstromprogrammierer oder -entwickler ein oder mehrere Verarbeitungselemente identifizieren, die geklont sein können. Die geklonten Verarbeitungselemente können verwendet werden, um einen anderen Ausführungspfad zu erzeugen, der parallel zu dem Ausführungspfad besteht, der die ursprünglichen Verarbeitungselemente enthält. Da die geklonten Verarbeitungselemente dieselben Operatoren enthalten wie die ursprünglichen Verarbeitungselemente, kann der Datenstrom, der zuvor nur durch das ursprüngliche Verarbeitungselement geflossen ist, geteilt und sowohl durch die ursprünglichen als auch die geklonten Verarbeitungselemente gesendet werden. Auf diese Weise kann der parallele Ausführungspfad nicht voll ausgelastete Hardware-Ressourcen verwenden, um den Durchsatz des Datenstroms zu verbessern.
  • Bei einer anderen Ausführungsform können die Operatoren eines Verarbeitungselements verteilt werden, um die verfügbare Computer-Hardware zu nutzen. Nach einem Erkennen einer inaktiven CPU zum Beispiel kann die Streaming-Anwendung die Operatoren in dem Verarbeitungselement aufteilen und sie in mehreren Verarbeitungselementen unterbringen, wobei eines oder mehrere der Verarbeitungselemente der inaktiven CPU zugeordnet ist bzw. sind.
  • Im Folgenden wird Bezug auf Ausführungsformen der Erfindung genommen. Es versteht sich jedoch, dass die Erfindung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen ist eine beliebige Kombination der folgenden Merkmale und Elemente unabhängig davon, ob sie mit unterschiedlichen Ausführungsformen im Zusammenhang steht, denkbar, um die Erfindung auszuführen und in die Praxis umzusetzen. Eine bestimmte Ausführungsform schränkt die Erfindung unabhängig davon nicht ein, ob ein bestimmter Vorteil durch eine bestimmte Ausführungsform erzielt wird, obwohl Ausführungsformen der Erfindung Vorteile gegenüber anderen möglichen Lösungen und/oder gegenüber dem Stand der Technik erzielen können. Daher sind die folgenden Aspekte, Merkmale, Ausführungsformen und Vorteile lediglich veranschaulichend und sind nicht als Elemente oder Einschränkungen der beigefügten Ansprüche gedacht, ausgenommen in Fällen, in denen dies in einem Anspruch bzw. in Ansprüchen ausdrücklich angegeben ist. Ebenso ist der Bezug auf ”die Erfindung” nicht als Verallgemeinerung eines hierin offenbarten Erfindungsgegenstands auszulegen und nicht als Element oder Einschränkung der beigefügten Ansprüche anzusehen, ausgenommen in Fällen, in denen dies in einem Anspruch bzw. in Ansprüchen ausdrücklich angegeben ist.
  • Für den Fachmann ist ersichtlich, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Aspekte der vorliegenden Erfindung können daher die Form einer kompletten Hardware-Ausführung, einer kompletten Software-Ausführung (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform haben, bei der Hardware- und Software-Aspekte kombiniert sind, die allgemein hierin als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Aspekte der vorliegenden Erfindung können des Weiteren die Form eines Computerprogrammprodukts haben, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, die über einen darin enthaltenen computerlesbaren Programmcode verfügen.
  • Es können beliebige Kombinationen von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine solche Vorrichtung oder Einheit oder eine geeignete Kombination davon handeln, ohne darauf beschränkt zu sein. Zu genauen Beispielen (einer nicht vollständigen Liste) für das computerlesbare Speichermedium gehören wie folgt: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computer-Diskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination davon. Im Zusammenhang mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges physisches Medium handeln, das ein Programm enthalten oder speichern kann, welches von oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Befehlen verwendet wird.
  • Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit darin enthaltenem computerlesbarem Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches sich ausbreitendes Signal kann eine Vielfalt von Formen haben, darunter elektromagnetische, optische Formen oder eine geeignete Kombination davon, ohne darauf beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Befehlen übertragen, weitergeben oder transportieren kann.
  • In einem computerlesbaren Medium enthaltener Programmcode kann unter Verwendung eines geeigneten Mediums übermittelt werden, das drahtlos, drahtgebunden, ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination davon sein kann, ohne darauf beschränkt zu sein.
  • Computerprogrammcode zum Ausführen von Operationen in Verbindung mit Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben werden, zu denen eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache ”C” oder ähnliche Programmiersprachen gehören. Der Programmcode kann ganz auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder ganz auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über ein beliebiges Netzwerk mit dem Computer des Benutzers verbunden sein, zum Beispiel über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder es kann die Verbindung zu einem externen Computer hergestellt werden (beispielsweise über das Internet durch einen Internetdienstanbieter).
  • Nachstehend werden Aspekte der vorliegenden Erfindung unter Bezugnahme auf Ablaufplandarstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufplandarstellungen und/oder der Blockschaltbilder sowie Kombinationen von Blöcken in den Ablaufplandarstellungen und/oder in den Blockschaltbildern durch Computerprogrammbefehle umgesetzt werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalrechners, eines Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass die Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegten Funktionen/Maßnahmen umzusetzen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten steuern kann, um auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsartikel einschließlich der Befehle erzeugen, die die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegte Funktion/Maßnahme umsetzen.
  • Die Computerprogrammbefehle können ferner in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von Funktionsschritten auszulösen, die auf dem Computer, in der anderen programmierbaren Vorrichtung oder den anderen Einheiten durchgeführt werden, um einen auf einem Computer implementierten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder in der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse bereitstellen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegten Funktionen/Maßnahmen umzusetzen.
  • Ausführungsformen der Erfindung können Endbenutzern über eine Cloud-Datenverarbeitungsinfrastruktur bereitgestellt werden. Der Begriff Cloud-Datenverarbeitung (cloud computing) bezeichnet allgemein das Bereitstellen skalierbarer Datenverarbeitungsressourcen als Dienst über ein Netzwerk. Genauer ausgedrückt kann Cloud-Computing als Datenverarbeitungsfähigkeit definiert werden, die eine Abstraktion zwischen der Datenverarbeitungsressource und der ihr zugrunde liegenden technischen Architektur (z. B. Server, Speicher, Netzwerke) bereitstellt, die einen benutzerfreundlichen, bedarfsorientierten Netzwerkzugriff auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen ermöglicht, die mit minimalem Verwaltungsaufwand oder Interaktion mit dem Dienstanbieter schnell bereitgestellt und freigegeben werden können. Daher ermöglicht das Cloud-Computing einem Benutzer unabhängig von den zugrunde liegenden physischen Systemen (oder den Standorten dieser Systeme), die zum Bereitstellen der Datenverarbeitungsressourcen verwendet werden, auf virtuelle Datenverarbeitungsressourcen (z. B. Speicher, Daten, Anwendungen und selbst vollständige virtualisierte Datenverarbeitungssysteme) in der ”Cloud” zuzugreifen.
  • In der Regel werden Cloud-Computing-Ressourcen einem Benutzer auf der Grundlage der Kosten pro Nutzung (pay-per-use) bereitgestellt, bei der Benutzer nur Kosten für die tatsächlich genutzten Datenverarbeitungsressourcen (z. B. eine Größe des von einem Benutzer verwendeten Speicherplatzes oder eine Anzahl virtualisierter Systeme, die der Benutzer instanziiert hat) in Rechnung gestellt werden. Ein Benutzer kann über das Internet jederzeit und von überall auf beliebige der Ressourcen zugreifen, die sich in der Cloud befinden. Im Zusammenhang mit der vorliegenden Erfindung kann ein Benutzer auf Anwendungen und zugehörige Daten zugreifen, die in der Cloud zur Verfügung stehen. Bei den Knoten zum Beispiel, die zum Erzeugen einer Datenstromverarbeitungsanwendung verwendet werden, kann es sich um virtuelle Maschinen handeln, die von einem Cloud-Dienstanbieter bereitgehalten werden. Dies ermöglicht einem Benutzer, von einem beliebigen Datenverarbeitungssystem, das an ein mit der Cloud verbundenes Netzwerk (z. B. das Internet) angeschlossen ist, auf Daten zuzugreifen.
  • Die 1A und 1B veranschaulichen eine Datenverarbeitungsinfrastruktur, die so konfiguriert ist, dass sie eine Datenstromverarbeitungsanwendung gemäß einer Ausführungsform der Erfindung ausführt. Wie dargestellt, beinhaltet die Datenverarbeitungsinfrastruktur 100 ein Verwaltungssystem 105 und eine Vielzahl von Rechenknoten 130 1bis4 – d. h. Hosts –, die unter Verwendung einer oder mehrerer Datenübertragungseinheiten 120 miteinander verbunden sind. Bei den Datenübertragungseinheiten 120 kann es sich um einen Server, ein Netzwerk oder eine Datenbank handeln, die ein bestimmtes Datenübertragungsprotokoll verwenden können, um Daten zwischen den Rechenknoten 130 1bis4 zu übermitteln. Obgleich dies nicht dargestellt ist, können die Rechenknoten 130 1bis4 interne Datenübertragungseinheiten zum Übermitteln von Daten zwischen Verarbeitungselementen (VE) aufweisen, die sich auf demselben Rechenknoten 130 befinden.
  • Das Verwaltungssystem 105 enthält einen Operatorgraphen 132 und einen Datenstrommanager 134. Wie nachfolgend ausführlicher beschrieben, stellt der Operatorgraph 132 eine Datenstromanwendung dar, die bei einem oder mehreren Quellenoperatoren beginnt und bis zu einem oder mehreren Senkenoperatoren reicht. Dieser Strom von der Quelle zur Senke wird hierin allgemein als Ausführungspfad bezeichnet. Obgleich 1B abstrahiert ist, um verbundene VE darzustellen, kann der Operatorgraph 132 Datenflüsse zwischen Operatoren im selben VE oder unterschiedlichen VE aufweisen. In der Regel empfangen Verarbeitungselemente ein n-Tupel von Datenattributen aus dem Datenstrom und geben ein n-Tupel von Datenattributen an den Datenstrom aus (ausgenommen bei einem Senkenoperator, bei dem der Datenstrom endet, oder einem Quellenoperator, bei dem der Datenstrom beginnt).
  • Selbstverständlich muss das von einem Verarbeitungselement empfangene n-Tupel nicht dasselbe n-Tupel sein, das an ein nachgeordnetes Element gesendet wird. Darüber hinaus können die VE so konfiguriert sein, dass sie Tupel in anderen Formaten empfangen oder ausgeben (z. B. könnten die VE oder Operatoren Daten austauschen, die als XML-Dokumente gekennzeichnet sind). Des Weiteren kann jeder Operator in einem VE so konfiguriert sein, dass er an dem empfangenen Tupel eine beliebige Form von Datenverarbeitungsfunktionen ausführt, darunter zum Beispiel das Schreiben in Datenbanktabellen oder das Durchführen anderer Datenbankoperationen wie beispielsweise Datenverknüpfungen, Datenaufteilungen, Lesevorgänge usw. sowie das Durchführen anderer Datenanalysefunktionen oder Operationen.
  • Der Datenstrommanager 134 kann so konfiguriert sein, dass er eine Datenstromverarbeitungsanwendung überwacht, die auf den Rechenknoten 130 1bis4 ausgeführt wird, und die Bereitstellung des Operatorgraphen 132 ändert. Der Datenstrommanager 134 kann VE von einem Rechenknoten 130 zu einem anderen verschieben, um zum Beispiel die Verarbeitungslasten der Rechenknoten 130 in der Datenverarbeitungsinfrastruktur 100 zu verwalten. Der Datenstrommanager 134 kann weiterhin die Datenstromverarbeitungsanwendung steuern, indem die Verarbeitungselemente und Operatoren (oder die Datentupel, die zu den Verarbeitungselementen fließen), die auf den Rechenknoten 130 1bis4 ausgeführt werden, eingefügt, entfernt, zusammengefügt, getrennt oder auf sonstige Weise geändert werden. Ein Beispiel für eine Datenstromverarbeitungsanwendung ist InfoSphere® Streams von IBM® (es sei darauf hingewiesen, dass InfoSphere® ein Warenzeichen der International Business Machines Corporation ist, das in vielen Rechtsordnungen weltweit eingetragen ist).
  • 1B veranschaulicht einen beispielhaften Operatorgraphen 132, der zehn (mit VE1 bis VE10 gekennzeichnete) Verarbeitungselemente aufweist, die auf den Rechenknoten 130 1bis4 ausgeführt werden. Ein Verarbeitungselement ist aus einem oder mehreren Operatoren zusammengesetzt, die zu einem eigenständig ausgeführten Prozess mit einer eigenen Prozesskennung (process ID, PID) und einem eigenen Speicherbereich zusammengefügt wurden. In Fällen, in denen zwei (oder mehrere) Verarbeitungselemente eigenständig ausgeführt werden, kann eine Interprozess-Datenübertragung unter Verwendung eines ”Transportmittels” (z. B. ein Netzwerk-Socket, TCP/IP-Socket oder ein gemeinsam genutzter Speicher) auftreten. Wenn Operatoren jedoch zusammengefügt werden, können die zusammengefügten Operatoren schnellere Datenübertragungstechniken verwenden, um Tupel zwischen Operatoren in jedem Verarbeitungselement weiterzugeben.
  • Wie gezeigt, beginnt der Operatorgraph 132 bei einer Quelle 135 (die in das mit VE1 gekennzeichnete Verarbeitungselement gelangt) und endet bei der Senke 140 1bis2 (die von den mit VE6 und VE10 gekennzeichneten Verarbeitungselementen kommt). Der Rechenknoten 130, enthält die Verarbeitungselemente VE1, VE2 und VE3. Die Quelle 135 gelangt in das Verarbeitungselement VE1, das wiederum Tupel ausgibt, die von VE2 und VE3 empfangen werden. VE1 kann zum Beispiel in einem Tupel empfangene Datenattribute aufteilen und einige Datenattribute an VE2 weitergeben, während andere Datenattribute an VE3 weitergegeben werden. Daten, die zu VE2 gelangen, werden von den in VE2 enthaltenen Operatoren verarbeitet, und die entstandenen Tupel werden anschließend an VE4 in dem Rechenknoten 130 2 ausgegeben. Desgleichen gelangen die Datentupel, die von VE4 ausgegeben wurden, zu der Senke VE6 140 1. Ebenso erreichen Datentupel, die von VE3 zu VE5 gelangen, auch die Senke VE6 140 1. VE6 könnte daher außer, dass es als Senke für diesen beispielhaften Operatorgraphen dient, so konfiguriert werden, dass es eine Verbindungsoperation durchführt, bei der von VE4 und VE5 empfangene Tupel kombiniert werden. Dieser beispielhafte Operatorgraph zeigt außerdem Datentupel, die von VE3 zu VE7 an dem Rechenknoten 130 3 gelangen, der seinerseits Datentupel zeigt, die zu VE8 und zurück zu VE7 gelangen. Von VE8 ausgegebene Datentupel gelangen zu VE9 an dem Rechenknoten 130 4, der wiederum Tupel ausgibt, die von der Senke VE10 140 2 verarbeitet werden sollen.
  • Da ein Verarbeitungselement eine Sammlung von zusammengefügten Operatoren darstellt, ist es auch richtig, den Operatorgraphen als Ausführungspfade zwischen spezifischen Operatoren zu beschreiben, die Ausführungspfade zu verschiedenen Operatoren im selben Verarbeitungselement enthalten können. Zum besseren Verständnis veranschaulicht 1B Ausführungspfade zwischen Verarbeitungselementen.
  • Obgleich Ausführungsformen der vorliegenden Erfindung im Zusammenhang einer Datenstromverarbeitungsanwendung beschrieben werden, stellt dies darüber hinaus nicht den einzigen Zusammenhang dar, der für die vorliegende Offenbarung von Bedeutung ist. Eine solche Beschreibung weist stattdessen keine Beschränkungen auf und dient lediglich zur Veranschaulichung. Ein Fachmann wird selbstverständlich erkennen, dass Ausführungsformen der vorliegenden Erfindung so konfiguriert werden können, dass sie mit einem beliebigen Computersystem oder einer beliebigen Anwendung arbeiten, das/die in der Lage ist, die hierin beschriebenen Funktionen durchzuführen. Ausführungsformen der Erfindung können zum Beispiel so konfiguriert sein, dass sie in einer Cluster-Umgebung mit einer herkömmlichen Datenbankverarbeitungsanwendung arbeiten.
  • 2 ist eine genauere Ansicht des Rechenknotens 130 der 1A und 1B gemäß einer Ausführungsform der Erfindung. Wie gezeigt, beinhaltet der Rechenknoten 130 mindestens eine CPU 205, eine Netzwerkschnittstelle 215, eine Verbindung 220, einen Speicher 225 und einen Speicher 230, ohne darauf beschränkt zu sein. Der Rechenknoten 130 kann außerdem eine E/A-Einheitenschnittstelle 210 enthalten, die zum Anschluss von E/A-Einheiten 212 (z. B. Tastatur-, Anzeige- und Mauseinheiten) an den Rechenknoten 130 verwendet wird.
  • Jede CPU 205 ruft in dem Speicher 225 gespeicherte Programmieranweisungen ab und führt diese aus. Ebenso ruft die CPU 205 in dem Speicher 225 befindliche Anwendungsdaten ab und speichert diese. Die Verbindung 220 wird verwendet, um Programmieranweisungen und Anwendungsdaten zwischen jeder CPU 205, der E/A-Einheitenschnittstelle 210, dem Speicher 230, der Netzwerkschnittstelle 215 und dem Speicher 225 zu übermitteln. Die CPU 205 ist stellvertretend für eine einzelne CPU, mehrere CPUs, eine einzelne CPU mit mehreren Verarbeitungskernen und Ähnlichem enthalten. Bei einer Ausführungsform wird ein VE 235 für ein Ausführen durch nur eine CPU 205 zugewiesen, obwohl die Operatoren 240 eines VE 235 bei anderen Ausführungsformen einen oder mehrere Threads aufweisen können, die auf einer Vielzahl von CPUs 205 ausgeführt werden. Der Speicher 225 steht allgemein stellvertretend für einen Direktzugriffsspeicher (z. B. DRAM oder Flash). Der Speicher 230 wie zum Beispiel ein Festplattenlaufwerk, eine Halbleiterlaufwerk (SSD) oder ein Flash-Speicherlaufwerk können nichtflüchtige Daten speichern.
  • Bei diesem Beispiel enthält der Speicher 225 eine Vielzahl von Verarbeitungselementen 235. Jedes VE 235 enthält eine Sammlung von Operatoren 240, die zusammengefügt sind. Wie oben erwähnt, kann jeder Operator 240 einen kleinen Block mit Code bereitstellen, der so konfiguriert ist, dass er Prozessdaten, die in ein Verarbeitungselement (z. B. VE 235) gelangen, verarbeitet und Daten an andere Operatoren 240 in diesem VE 235 oder an andere VE in der Datenstromverarbeitungsanwendung ausgibt. Solche Verarbeitungselemente können sich auf demselben Rechenknoten 130 oder auf anderen Rechenknoten befinden, auf die über das Datenübertragungsnetzwerk 120 zugegriffen werden kann.
  • Wie gezeigt, enthält der Speicher 230 einen Pufferspeicher 260. Der Pufferspeicher 260 wird zwar als im Speicher befindlich dargestellt, er kann sich jedoch in dem Speicher 225 des Rechenknotens 130 oder einer Kombination von beidem befinden. Der Speicher 230 kann darüber hinaus einen Speicherplatz außerhalb des Rechenknotens 130 enthalten.
  • 3 ist eine genauere Ansicht des Server-Verwaltungssystems 105 von 1 gemäß einer Ausführungsform der Erfindung. Wie gezeigt, beinhaltet das Server-Verwaltungssystem 105 mindestens eine CPU 305, eine Netzwerkschnittstelle 315, eine Verbindung 320, einen Speicher 325 und einen Speicher 330, ohne darauf beschränkt zu sein. Das Client-System 130 kann außerdem eine E/A-Einheitenschnittstelle 310 enthalten, die E/A-Einheiten 312 (z. B. Tastatur-, Anzeige- und Mauseinheiten) mit dem Server-Verwaltungssystem 105 verbindet.
  • Wie die CPU 205 von 2 ist die CPU 305 so konfiguriert, dass sie im Speicher 325 und Speicher 330 gespeicherte Programmieranweisungen abruft und ausführt. Ebenso ist die CPU 305 so konfiguriert, dass sie in dem Speicher 325 und Speicher 330 befindliche Anwendungsdaten speichert und abruft. Die Verbindung 320 ist so konfiguriert, dass sie Daten wie beispielsweise Programmieranweisungen und Anwendungsdaten zwischen der CPU 305, der E/A-Einheitenschnittstelle 310, der Speichereinheit 330, der Netzwerkschnittstelle 305 und dem Speicher 325 bewegt. Wie die CPU 205 ist die CPU 305 stellvertretend für eine einzelne CPU, mehrere CPUs, eine einzelne CPU mit mehreren Verarbeitungskernen und Ähnlichem enthalten. Der Speicher 325 ist allgemein stellvertretend für einen Direktzugriffsspeicher enthalten. Die Netzwerkschnittstelle 315 ist so konfiguriert, dass sie Daten über das Datenübertragungsnetzwerk 120 übermittelt. Obwohl der Speicher 330 als eine einzelne Einheit dargestellt ist, kann es sich bei dem Speicher um eine Kombination aus festen und/oder auswechselbaren Speichereinheiten wie beispielsweise Festplattenlaufwerke, auswechselbare Speicherkarten, optischem Speicher, Halbleiterlaufwerke oder Flash-Speichereinheiten, netzgebundenem Speicher (network attached storage, NAS) oder Verbindungen zu Speichernetzwerkeinheiten (storage area-network, SAN) handeln.
  • Wie gezeigt, ist ein Datenstrommanager 134 in dem Speicher 325 gespeichert. Der Speicher 330 enthält zusätzlich einen primären Operatorgraphen 132. Der Datenstrommanager 134 kann den primären Operatorgraphen 132 verwenden, um Tupel zum VE 235 zum Verarbeiten weiterzuleiten. Der Datenstrommanager 134 enthält auch einen Klonmanager 350 zum Klonen ausgewählter VE 235, um verfügbare Hardware wie beispielsweise den Speicher 225 oder die CPUs 205 zu nutzen.
  • 4 ist ein Ablaufplan, der eine Technik zum Klonen eines Verarbeitungselements in einem Operatorgraphen gemäß einer Ausführungsform der Erfindung veranschaulicht. Bei Schritt 405 identifiziert der Klonmanager 350 verfügbare oder nicht voll ausgelastete Hardware-Ressourcen in der Datenverarbeitungsinfrastruktur 100. Der Klonmanager 350 kann zum Beispiel verschiedene Hardware-Ressourcen in den Rechenknoten 130 1bis4 überwachen, um zu ermitteln, ob eine CPU inaktiv ist. Wie hierin verwendet bedeutet eine ”inaktive” CPU eine CPU 205 auf einem Rechenknoten 130, die zum gegenwärtigen Zeitpunkt nicht zum Ausführen eines VE oder bei einigen Ausführungsformen eines Operators, der sich in dem Operatorgraphen befindet, zugewiesen ist. Der Klonmanager 350 kann zusätzlich die CPU-Nutzung der CPUs 205 (oder Kerne der CPU) überwachen und CPUs oder CPU-Kerne kennzeichnen, deren Nutzung unter einen festgelegten Grenzwert fällt. Der Klonmanager 150 kann zusätzlich oder alternativ die Nutzung des Speichers 225 eines Rechenknotens 130 überwachen. Wenn Zugriffe auf den Speicher zum Beispiel unter einen bestimmten Grenzwert fallen, kann der Klonmanager 350 den Speicher 225 als nicht voll ausgelastet kennzeichnen. Der Klonmanager 350 kann auch ermitteln, ob ein grenzwertiger Speicherumfang für ein festgelegtes Zeitintervall nicht genutzt wurde oder verfügbar ist.
  • Bei Schritt 410 stellt der Klonmanager 350 fest, welche VE auf der Grundlage der verfügbaren Hardware-Ressourcen geklont werden können. Bei einer Ausführungsform kann nur eine Teilmenge der VE in dem Operatorgraphen geklont werden. Der Klonmanager 350 kann feststellen, ob ein Datenstromprogrammierer die VE als ”klonbar” gekennzeichnet hat. Die gekennzeichneten VE können angeben, dass die VE keine Tupel in der Reihenfolge, in der sie empfangen werden, verarbeiten müssen. Das heißt, das Verarbeiten aktuell empfangener Tupel hängt nicht von Tupeln ab, die zuvor empfangen wurden. Der Datenstromprogrammierer kann ein oder mehrere VE, die diese Eigenschaft aufweisen, als klonbar identifizieren. Wenn der Klonmanager 350 feststellt, dass eine Computer-Ressource nicht voll ausgelastet ist, ermittelt er, welches der klonbaren VE geklont werden soll, damit die Hardware-Ressourcen der Infrastruktur 100 wirksamer genutzt werden.
  • Bei einer Ausführungsform kann der Klonmanager 350 die Computer-Ressourcen und die klonbaren VE anhand ihrer Position abgleichen. Wenn ein Rechenknoten 130 zum Beispiel eine inaktive CPU 205 aufweist, kann der Klonmanager 350 zuerst ermitteln, ob klonbare VE 235 aktuell auf demselben Rechenknoten 130 wie die nicht voll ausgelastete CPU 205 beherbergt werden. Ist dies der Fall, kann dieses VE 235 aus der Gruppe klonbarer VE ausgewählt werden.
  • Bei einer anderen Ausführungsform kann der Klonmanager 350 die Computer-Ressourcen und klonbaren VE anhand der Anzahl von verfügbaren CPUs 205 und eines Teils des Ausführungsgraphen abgleichen, der eine Vielzahl von direkt verbundenen, klonbaren VE enthält. Wenn der Klonmanager 350 zum Beispiel feststellt, dass zwei CPUs 205 zur Verfügung stehen und dass es zwei klonbare VE gibt, die direkt in einem Ausführungspfad verbunden sind, kann er beide dieser VE klonen, auch wenn sie anderen Rechenknoten 130 zugewiesen sind. Der Klonmanager 350 kann des Weiteren so konfiguriert sein, dass er diese Option vor einem einzelnen klonbaren VE auswählt, das sich auf demselben Rechenknoten 130 wie die inaktiven CPUs 205 befindet. Die offenbarten Ausführungsformen sind jedoch nicht auf ein bestimmtes Verfahren zum Auswählen der VE beschränkt, die aus einer Gruppe von klonbaren VE geklont werden sollen.
  • Bei Schritt 415 kann der Klonmanager 350 VE in den Operatorgraphen einfügen, um den Datenstrom zu teilen und zusammenzuführen. Dies wird im Einzelnen in den 5A bis 5C dargestellt.
  • Die 5A bis 5C veranschaulichen ein Klonen eines Verarbeitungselements, um gemäß Ausführungsformen der Erfindung einen parallelen Ausführungspfad zu erzeugen. 5A zeigt einen Teil eines Ausführungspfads 500, der VE1 bis 3 enthält, wobei VE2 ein klonbares VE ist. Während die Streaming-Anwendung ausgeführt wird, werden Tupel von den Operatoren von VE1 an VE2 und von den Operatoren von VE2 an VE3 weitergeleitet.
  • 5B veranschaulicht ein Einfügen von VE, um die im Ausführungspfad fließenden Daten zu teilen und zusammenzuführen. Wie gezeigt, wird VE4, das einen Teilungsoperator 505 enthält, zwischen VE1 und VE2 eingefügt. Der Teilungsoperator 505 teilt den Datenstrom, der in dem Ausführungspfad 501 zwischen zwei oder mehr VE fließt. Der Teilungsoperator 505 teilt die Tupel insbesondere in zwei getrennte Datenströme. Der Zusammenführungsoperator 510 in VE5 dagegen empfängt Tupel von zwei unterschiedlichen Datenströmen und führt die Tupel zusammen, um einen einzigen Datenstrom zu erzeugen.
  • Bei einer Ausführungsform kann der Klonmanager 350 VE4 und VE5 dynamisch einfügen, während die Streaming-Anwendung Daten verarbeitet. Das heißt, der Datenstrom, der durch den Ausführungspfad 501 fließt, wird durch das Einfügen der neuen VE nicht unterbrochen. Sobald das geklonte VE (oder die geklonten VE) erzeugt ist, kann der Klonmanager 350 VE4 und VE5 aktivieren.
  • Alternativ können VE4 und VE5 in den Ausführungspfad 501 eingefügt werden, bevor die Streaming-Anwendung mit dem Verarbeiten von Streaming-Daten beginnt. VE4 und VE5 können jedoch inaktiv bleiben, bis der Klonmanager 350 entscheidet, VE2 zu klonen. Das heißt, die Tupel gehen durch VE4 und VE5, ohne von den Operatoren 505, 510 verarbeitet zu werden. Der Klonmanager 350 kann des Weiteren in Erwartung, dass die klonbaren VE repliziert werden können, VE mit Teilungs- und Zusammenführungsoperatoren vor und nach einer Vielzahl von klonbaren VE (d. h. einer Kette klonbarer VE) in den Operatorgraphen einfügen.
  • Zurück zu 4: bei Schritt 420 klont der Klonmanager 350 mindestens ein klonbares VE, um einen zweiten unabhängigen Datenstrom zu erzeugen. Das klonbare VE kann beliebig oft geklont werden. Jedes Mal, wenn ein VE geklont ist, erstellt der Klonmanager 350 einen anderen parallelen Ausführungspfad.
  • 5C veranschaulicht ein Erzeugen von zwei parallelen Ausführungspfaden 502, 503 mit mindestens einem geklonten Verarbeitungselement. Wie gezeigt, fügt der Klonmanager 350 VE4, VE5 und das geklonte VE2 zu dem Operatorgraphen hinzu. Der Klonmanager 350 verbindet auch die Operatoren dieser VE, um zwei parallele Ausführungspfade zu erzeugen. Der Ausführungspfad 502 beinhaltet VE1, VE4, VE2, VE5 und VE3, während der Ausführungspfad 503 VE1, VE4, das geklonte VE2, VE5 und VE3 beinhaltet. Da das geklonte VE2 dieselben der in VE2 gefundenen Operatoren insgesamt beinhalten kann, sind die Ausführungspfade 502, 503 parallel, da sie dasselbe Ergebnis angesichts derselben zu verarbeitenden Tupel ergeben. Somit sind die parallelen Ausführungspfade 502, 503 bei einer Ausführungsform genaue Kopien.
  • Obwohl die 5B und 5C das Einfügen der Teilungs-/Zusammenführungs-VE in einem separaten Schritt im Vergleich zum Einfügen des geklonten VE zeigen, können sie gleichzeitig eingefügt werden. Die geklonten VE können darüber hinaus dynamisch in den Operatorgraphen eingefügt werden, während die Streaming-Anwendung Daten verarbeitet. Auf diese Weise können die Teilungs-/Zusammenführungs-VE und geklonten VE aktiviert werden, sobald sie eingefügt werden. Die geklonten VE können alternativ in den Operatorgraphen eingefügt werden, bevor die Streaming-Anwendung mit dem Verarbeiten von Daten beginnt, und zwar in der Erwartung, dass der Klonmanager 350 später entscheiden kann, das geklonte VE (und die Teilungs-/Zusammenführungs-VE) zu aktivieren, um einen Datenstrom in dem Ausführungspfad 503 zu erzeugen.
  • Bei einer Ausführungsform kann ein paralleler Ausführungspfad mit mindestens einem geklonten VE ohne das Verwenden von Teilungs-/Zuführungs-VE erstellt werden. Das heißt, dass Schritt 415 bei dem Verfahren 400 ausgelassen werden kann. Die Verarbeitungselemente können zum Beispiel Filtern oder dynamische Verbindungen verwenden, um parallele Ausführungspfade zu erzeugen. Filtern ist ein Operatorkonstrukt, das festlegt, welche empfangenen Datentupel verarbeitet werden sollen. VE2 kann zum Beispiel ein Filter aufweisen, das dieses anweist, auf der Grundlage einer eindeutigen Tupelkennung nur die ungeraden Tupel zu verarbeiten, während ein Filter auf dem geklonten VE2 dieses anweist, nur die geraden Datentupel zu verarbeiten. Dynamische Verbindungen ermöglichen es dem Datenstrommanager 134, zwei separate Aufträge (jobs) zu verbinden, so dass Datentupel zwischen den Aufträgen fließen können. Hier kann das geklonte VE2 Teil eines anderen Auftrags als das ursprüngliche VE2 sein. Der Datenstrommanager 134 kann den Operatorgraphen so konfigurieren, dass der zu dem geklonten VE2 gehörige Auftrag Tupel von VE1 empfängt, die von dem geklonten VE verarbeitet und anschließend an VE3 übermittelt werden. Beide Techniken zum Erzeugen paralleler Ausführungspfade ohne das Verwenden von Teilungs-/Zusammenführungs-VE können durchgeführt werden, während die Streaming-Anwendung arbeitet. Die Streaming-Anwendung kann alternativ vorübergehend unterbrochen werden, während der Datenstrommanager 134 das Filtern oder die dynamischen Verbindungen konfiguriert.
  • Die 6A und 6B veranschaulichen ein Verteilen geklonter Verarbeitungsrechenknoten an CPUs auf einem oder mehreren Computerknoten gemäß Ausführungsformen der Erfindung. Die Figuren zeigen insbesondere unterschiedliche Ausführungsformen für ein Zuweisen der Verarbeitungselemente von 5C an CPUs, um verfügbare Hardware-Ressourcen zu nutzen.
  • 6A veranschaulicht ein Zuweisen eines geklonten VE zu einer inaktiven CPU im selben Rechenknoten 130 wie das geklonte Verarbeitungselement. Wie gezeigt, werden alle Verarbeitungselemente der Ausführungspfade 502 und 503 CPUs im selben Rechenknoten 130 zugewiesen – d. h., die Operatoren der Verarbeitungselemente werden alle von den CPUs des Rechenknotens 130 ausgeführt. Der Klonmanager 350 kann zum Beispiel festgestellt haben, dass CPU4 inaktiv war, und als Reaktion darauf den parallelen Ausführungspfad 503 erzeugt haben. Wenn das geklonte VE2 in den Operatorgraphen eingefügt wird, weist der Klonmanager 350 das Verarbeitungselement (und seine Operatoren) CPU4 zu. Der Klonmanager 350 kann darüber hinaus die Teilungs-/Zusammenführungs-VE (d. h. VE4 und VE5) der inaktiven CPU zuweisen. Bei einer Ausführungsform kann der Klonmanager 350 jedoch einen Lastausgleich durchführen, indem die CPU-Auslastung von CPU1 bis 4 verglichen wird, um zu ermitteln, wo VE4 und VE5 zugewiesen werden sollen.
  • 6B veranschaulicht ein Zuweisen eines geklonten VE zu einer inaktiven CPU, die sich auf einem anderen Rechenknoten wie das geklonte Verarbeitungselement befindet. Wie gezeigt, wird VE2 CPU2 auf dem Rechenknoten 130A zugewiesen. Der Klonmanager 350 kann feststellen, dass ein anderer Rechenknoten (z. B. Rechenknoten 130C) in der Computerinfrastruktur 100 eine inaktive CPU (d. h. CPU4) aufweisen kann. Der Klonmanager 350 kann das geklonte VE entsprechend erzeugen und dieses VE CPU4 zuweisen.
  • Es ist anzumerken, dass, wenn das geklonte VE2 oder die Teilungs-/Zusammenführungs-VE in den Operatorgraphen eingefügt würde bzw. würden, bevor die Streaming-Anwendung mit dem Verarbeiten von Daten begonnen hat, die Verarbeitungselemente einer beliebigen CPU zugewiesen werden könnten. Da es sich bei den inaktiven Operatoren von VE2, VE4 und VE5 im Wesentlichen um NOPs handelt, dürfte das Zuweisen der Verarbeitungselemente zu beispielsweise CPU2 den Durchsatz der CPU nicht beeinträchtigen. Wenn der Klonmanager 350 jedoch entscheidet, die Operatoren des geklonten VE2 und die Teilungs-/Zusammenführungs-VE zu aktivieren, kann er anschließend die Verarbeitungselemente erneut der inaktiven CPU4 zuweisen.
  • Bei einer Ausführungsform kann der Klonmanager 350 die Unterschiede zwischen knoteninternen und Interknoten-Datenübertragungsverfahren beim Ermitteln, wo ein geklontes VE untergebracht werden soll, berücksichtigen. Angenommen, der Rechenknoten, der VE1 beherbergt, weist eine CPU auf, die nur zu 50% ausgelastet ist, während ein anderer Rechenknoten eine inaktive CPU aufweist. Unter gleichen Bedingungen würde der Klonmanager 350 das geklonte VE2 der inaktiven CPU zuweisen. Das Zuweisen des geklonten VE zu der CPU auf demselben Rechenknoten wie VE1 hat jedoch den Vorteil, dass knoteninterne Datenübertragungsverfahren zum Übermitteln von Tupeln von VE1 an das geklonte VE2 verwendet werden. In einigen Fällen können knoteninterne Datenübertragungsverfahren (z. B. gemeinsam genutzter Speicher oder ein Datenbus) schneller als Interknoten-Datenübertragungsverfahren (z. B. ein TCP/IP-Socket) sein. Auch wenn die CPU auf dem anderen Rechenknoten inaktiv ist, kann der Klonmanager 350 somit feststellen, dass der parallele Ausführungspfad 503 schneller ausgeführt würde, wenn das geklonte VE2 der CPU auf demselben Rechenknoten wie VE1 zugewiesen würde, um dem Ausführungspfad 503 zu erlauben, ein knoteninternes Datenübertragungsverfahren anstatt ein Interknoten-Datenübertragungsverfahren zu verwenden.
  • Der Klonmanager 350 kann zudem die verschiedenen Arten von Interknoten-Datenübertragungsverfahren oder Protokollen beim Ermitteln, wo ein geklontes VE untergebracht werden soll, berücksichtigen. Unterschiedliche Rechenknoten 130 können unter Verwendung unterschiedlicher Datenübertragungsprotokolle (z. B. RDMA, TCP/IP, gemeinsam genutzter Datenbankzugriff, PCIe usw.) verbunden werden, die unterschiedliche Datengeschwindigkeiten bereitstellen. Der Klonmanager 350 kann daher das Interknoten-Datenübertragungsprotokoll in Betracht ziehen, bevor einer CPU in einem anderen Rechenknoten ein geklontes VE zugewiesen wird. Das heißt, der Klonmanager 350 kann entscheiden, das geklonte VE2 nicht einer inaktiven CPU4 des Rechenknotens 130C zuzuweisen, wenn es sich bei der Interknoten-Datenübertragung zwischen den Rechenknoten 130A und 130C um eines der langsameren Datenübertragungsprotokolle handelt.
  • Der Klonmanager 350 kann darüber hinaus die gegenwärtig verfügbare Bandbreite der Interknoten-Datenübertragungsverbindung feststellen, bevor das geklonte VE einem anderen Rechenknoten zugewiesen wird. Auch wenn für die Datenübertragungsverbindung zwischen den Rechenknoten 130A und 130C zum Beispiel das schnellste verfügbare Protokoll verwendet wird, kann der Klonmanager 350 entscheiden, das geklonte VE2 nicht der CPU4 zuzuweisen, wenn mehr als z. B. 90% der Bandbreite der Verbindung aktuell verwendet werden.
  • Bei einer Ausführungsform kann der Klonmanager 350 eine andere Hardware-Ressource auf einem Rechenknoten wie beispielsweise einem verfügbaren Speicher in Betracht ziehen. Wenn der Klonmanager 350 feststellt, dass ein Rechenknoten 130 unterhalb eines Grenzwertes auf seinen Speicher (z. B. RAM, Cachespeicher und Ähnliches) zugreift, kann der Manager 350 ein geklontes VE auf diesem Rechenknoten aktivieren. Ähnlich wie bei der CPU-Auslastung kann der Klonmanager 350 darüber hinaus einem anderen Rechenknoten als dem Rechenknoten, der das ursprüngliche VE beherbergt, ein geklontes VE zuweisen, wenn der entfernt angeordnete Rechenknoten einen nicht voll ausgelasteten Speicher aufweist.
  • Bei einer anderen Ausführungsform kann der Klonmanager 350 eine Kombination unterschiedlicher Hardware-Ressourcen überwachen und in Betracht ziehen, wenn er ermittelt, wann und wo ein geklontes VE aktiviert werden soll. Der Klonmanager 350 kann zum Beispiel ein geklontes VE aktivieren, wenn die Auslastung mindestens einer CPU auf einem Rechenknoten weniger als 50% beträgt und die Anforderungen nach im RAM gespeicherten Daten unterhalb eines festgelegten Grenzwertes liegen.
  • Die 7A und 7B veranschaulichen ein Klonen einer Vielzahl von Verarbeitungselementen in einem einzelnen Ausführungspfad gemäß einer Ausführungsform der Erfindung. 7A veranschaulicht zwei parallele Ausführungspfade, wobei mindestens zwei Verarbeitungselemente geklont wurden. Insbesondere VE2 und VE3 des Ausführungspfads 701 wurden geklont, um einen Ausführungspfad 702 zu erzeugen, der das geklonte VE2 und das geklonte VE3 beinhaltet. Auf diese Weise kann eine Vielzahl von Verarbeitungselementen, die direkt in einem Ausführungspfad verbunden sind, geklont werden, um einen parallelen Ausführungspfad zu erzeugen, bei dem die geklonten Verarbeitungselemente ebenfalls direkt verbunden sind. Bei dieser Ausführungsform bedeutet ”direkt verbunden” in einem Ausführungspfad, dass Tupel zwischen den Verarbeitungselementen weitergeleitet werden. Eine beliebige Anzahl von direkt verbundenen Verarbeitungselementen kann geklont werden, um einen parallelen Ausführungspfad zu erzeugen.
  • Jedes der geklonten VE kann in der Computerinfrastruktur 100 untergebracht werden, um verfügbare Hardware-Ressourcen wie bei den vorherigen Ausführungsformen beschrieben zu nutzen. Das geklonte VE2 und das geklonte VE3 können sich zum Beispiel auf einer oder mehreren inaktiven CPUs befinden.
  • 7B veranschaulicht ein mehrmaliges Klonen desselben VE, wodurch mehrere parallele Ausführungspfade erzeugt werden. Wie gezeigt, kann der Klonmanager 350 VE2 und VE3 mehrmals klonen, um die parallelen Ausführungspfade 702 und 703 zu erzeugen. Der Klonmanager 350 kann zum Beispiel vier inaktive CPUs in einem Rechenknoten identifizieren und den CPUs die vier geklonten Verarbeitungselemente zuweisen. Auf diese Weise kann der Datenstrom so viele parallel Ausführungspfade erzeugen, wie er verfügbare Ressourcen aufweist.
  • Obgleich dies nicht dargestellt ist, können die Ausführungspfade in den 7A und 7B auch ein VE mit einem Teilungsoperator enthalten, der dem geklonten VE2 vorgelagert ist, und ein VE mit einem Zusammenführungsoperator, der dem geklonten VE3 nachgelagert ist.
  • Die 8A bis 8D veranschaulichen ein Trennen und Verteilen von Operatoren eines Verarbeitungselements auf eine Vielzahl von CPUs gemäß Ausführungsformen der Erfindung. Anstatt VE zu klonen, um parallele Ausführungspfade zu erzeugen, kann der Datenstrommanager 134 die Operatoren eines Verarbeitungselements trennen, um verfügbare Hardware-Ressourcen zu nutzten – z. B. inaktive CPUs, verfügbaren Speicher und Ähnliches.
  • Wie oben erwähnt, kann ein VE eine Vielzahl von zusammengefügten Operatoren enthalten. Bei einer Ausführungsform werden die zusammengefügten Operatoren eines VE als ein einzelner Prozess ausgeführt. So wird jeder der zusammengefügten Operatoren von der CPU ausgeführt, der der Prozess zugewiesen wurde. Für ein Verschieben eines Operators in eine andere CPU kann es notwendig sein, dass der Operator von dem aktuellen Verarbeitungselement (d. h. dem Prozess) getrennt wird und in ein anderes Verarbeitungselement übertragen wird.
  • 8A veranschaulicht einen Ausführungspfad 801, bei dem VE2 aus drei zusammengefügten Operatoren besteht – Operator A, B und C. Der Datenstrommanager 134 kann unter Verwendung der oben beschriebenen Kriterien feststellen, dass der Rechenknoten, dem VE2 zugewiesen ist, inaktive CPUs aufweist. Anstatt VE2 zu klonen, um einen parallelen Ausführungspfad zu erzeugen, kann der Datenstrommanager 134 einen oder mehrere der Operatoren in VE2 trennen, um zusätzliche Verarbeitungselemente zu erzeugen. Da ein Verarbeitungselement bei einer Ausführungsform nur einer einzelnen CPU zugewiesen werden kann, müssen die in diesem Verarbeitungselement enthaltenen Operatoren von dieser CPU ausgeführt werden.
  • 8B veranschaulicht, dass der Datenstrommanager 134 die Operatoren in VE2 trennen kann, um VE4 mit Operator A, VE5 mit Operator B und VE6 mit Operator C zu erzeugen. Auf diese Weise kann jedes Verarbeitungselement mit zwei oder mehr Operatoren getrennt werden, so dass mindestens einer der Operatoren an ein neues Verarbeitungselement oder an ein bestehendes Verarbeitungselement übermittelt wird, das bereits einen oder mehrere Operatoren enthält. Der Klonmanager 350 kann zum Beispiel nur Operator C von VE2 trennen, um ein neues Verarbeitungselement zu erzeugen. Dadurch würde VE2 immer noch die Operatoren A und B enthalten.
  • Bei einer Ausführungsform muss der Datenstrommanager 134 unter Umständen sicherstellen, dass die neuen Verarbeitungselemente in der richtigen Reihenfolge angeordnet sind. Wenn Operator A zum Beispiel Datentupel in VE2 unter Verwendung eines knoteninternen Datenübertragungsverfahrens an Operator B weitergeleitet hätte, würde der Datenstrommanager 134 sicherstellen, dass VE4 VE5 vorgelagert ist, um die gleiche Reihenfolge beizubehalten.
  • 8C veranschaulicht einen Rechenknoten, der die in 8A dargestellten VE beherbergen kann. Wie gezeigt, beherbergen CPU3 und CPU4 keines der Verarbeitungselemente in dem Ausführungspfad 801. Der Datenstrommanager 134 kann die inaktiven CPUs identifizieren und entscheiden, die Operatoren von VE2 zu trennen, um die verfügbaren Hardware-Ressourcen zu nutzen. Es sei darauf hingewiesen, dass der Datenstrommanager 134 die gleichen Techniken zum Identifizieren verfügbarer Hardware-Ressource wie oben beschrieben verwenden kann.
  • 8D veranschaulicht den in 8C gezeigten Rechenknoten nach dem Trennen der Operatoren, um verfügbare Hardware-Ressourcen zu nutzen. Wie gezeigt, veranschaulicht 8D, dass sich die Verarbeitungselemente von Ausführungspfad 802 jeweils in separaten CPUs befinden können. Das heißt, Operator B (d. h. VE5) wird von CPU3 ausgeführt, während Operator C (d. h. VE6) von CPU4 ausgeführt wird. Ein Übermitteln der Operatoren an Verarbeitungselemente, die inaktiven CPUs zugewiesen sind, kann dazu führen, dass der Ausführungspfad 802 Datentupel schneller als der Ausführungspfad 801 verarbeitet.
  • Es sei darauf hingewiesen, dass Operatoren getrennt werden und anderen Rechenknoten zugewiesen werden können, als den Rechenknoten, auf denen die Operatoren aktuell ausgeführt werden. Der Datenstrommanager 134 kann jedoch wie der Klonmanager 350 die Unterschiede zwischen knoteninternen Datenübertragungsverfahren und Interknoten-Datenübertragungsverfahren, die verschiedenen Arten von Interknoten-Datenübertragungsprotokollen oder die Bandbreitennutzung der Verbindungen zwischen Rechenknoten berücksichtigen, wenn er ermittelt, wann und wo die verschiedenen Operatoren übermittelt werden sollen. Bevor beispielsweise Operator B oder C zum Ausführen durch eine CPU auf einem anderen Rechenknoten übermittelt wird, kann der Datenstrommanager 134 ermitteln, ob die Vorteile eines Nutzens einer inaktiven CPU auf einem anderen Rechenknoten den Nachteil überwiegen, der sich durch ein Verwenden eines Interknoten-Datenübertragungsverfahrens anstatt eines knoteninternen Datenübertragungsverfahrens zum Übermitteln von Datentupeln zwischen den Operatoren ergibt.
  • Zusammenfassung
  • Datenstromanwendungen können die Hardware-Ressourcen, die die Verarbeitungselemente des Datenstroms ausführen, ineffizient nutzen. Ein Rechenknoten kann zum Beispiel vier Verarbeitungselemente beherbergen und jedes jeweils unter Verwenden einer CPU ausführen. Andere CPUs auf dem Rechenknoten können jedoch inaktiv sein. Um diese verfügbaren Hardware-Ressourcen zu nutzen, kann ein Datenstromprogrammierer ein oder mehrere Verarbeitungselemente identifizieren, die geklont sein können. Die geklonten Verarbeitungselemente können verwendet werden, um einen anderen Ausführungspfad zu erzeugen, der parallel zu dem Ausführungspfad besteht, der die ursprünglichen Verarbeitungselemente enthält. Da die geklonten Verarbeitungselemente dieselben Operatoren enthalten wie die ursprünglichen Verarbeitungselemente, kann der Datenstrom, der zuvor nur durch das ursprüngliche Verarbeitungselement geflossen ist, geteilt und sowohl durch die ursprünglichen als auch die geklonten Verarbeitungselemente gesendet werden. Auf diese Weise kann der parallele Ausführungspfad die verfügbare Hardware-Ressource verwenden, um den Durchsatz des Datenstroms zu verbessern.
  • Zusätzlich können Operatoren in einem Verarbeitungselement, die von derselben CPU oder demselben CPU-Kern ausgeführt werden, geteilt und in einem anderen Verarbeitungselement zusammengefügt werden, um eine inaktive CPU oder einen nicht voll ausgelasteten Speicher zu nutzen. Ein Operator kann zum Beispiel von dem ursprünglichen VE getrennt und in einem neuen VE untergebracht werden, das einer zuvor inaktiven CPU zugewiesen ist.
  • Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaltbildern ein Modul, Segment oder einen Teil eines Codes darstellen, das/der eine oder mehrere ausführbare Befehle zur Umsetzung der festgelegten Logikfunktion(en) aufweist. Es ist ferner darauf hinzuweisen, dass die im Block angegebenen Funktionen bei einigen alternativen Ausführungen in einer anderen Reihenfolge als in den Figuren dargestellt ablaufen können. Zwei aufeinanderfolgend dargestellte Blöcke können zum Beispiel tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach entsprechender Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Des Weiteren ist darauf hinzuweisen, dass jeder Block der Blockschaltbilder und/oder der Ablaufplandarstellung sowie Kombinationen von Blöcken in den Blockschaltbildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, die die angegebenen Funktionen oder Maßnahmen durchführen, oder durch Kombinationen von spezieller Hardware und Computerbefehlen.
  • Obwohl das Vorstehende auf Ausführungsformen der vorliegenden Erfindung gerichtet ist, können andere und weitere Ausführungsformen der Erfindung entwickelt werden, ohne von deren grundlegendem Umfang abzuweichen, und deren Umfang wird durch die nachfolgenden Ansprüche festgelegt.

Claims (20)

  1. Verfahren, das aufweist: Empfangen von Streaming-Daten, die von einer Mehrzahl von Verarbeitungselementen verarbeitet werden sollen, die einen oder mehrere Operatoren aufweisen, wobei die Operatoren mindestens einen Teil der empfangenen Daten durch den Betrieb eines oder mehrerer Computerprozessoren verarbeiten; Erstellen eines Operatorgraphen aus der Mehrzahl von Operatoren, wobei der Operatorgraph mindestens einen Ausführungspfad definiert, bei dem ein erster Operator aus der Mehrzahl von Operatoren so konfiguriert ist, dass er Datentupel von mindestens einem vorgelagerten Operator empfängt und Datentupel an mindestens einen nachgelagerten Operator übermittelt; Identifizieren mit Bezug auf vordefinierte Kriterien einer nicht voll ausgelasteten Hardware-Ressource in einem Datenverarbeitungssystem, das die Operatoren ausführt; Klonen eines ersten Verarbeitungselements aus der Mehrzahl von Verarbeitungselementen, so dass das geklonte Verarbeitungselement denselben oder mehrere Operatoren wie das erste Verarbeitungselement aufweist; und Verarbeiten von mindestens einem Teil der empfangenen Streaming-Daten in einem ersten Ausführungspfad, der das geklonte Verarbeitungselement enthält, wobei der erste Ausführungspfad parallel zu einem zweiten Ausführungspfad ausgeführt wird, der das erste Verarbeitungselement enthält, wobei das geklonte Verarbeitungselement den Teil der empfangenen Streaming-Daten verarbeitet, der die nicht voll ausgelastete Hardware-Ressource verwendet.
  2. Verfahren nach Anspruch 1, das weiterhin aufweist: Aktivieren in dem Operatorgraphen vor dem geklonten Verarbeitungselement und dem ersten Verarbeitungselement eines zweiten Verarbeitungselements, das einen Trennungsoperator aufweist, der Datentupel an Operatoren sowohl in dem geklonten Verarbeitungselement als auch in dem ersten Verarbeitungselement übermittelt; und Aktivieren in dem Operatorgraphen nach dem geklonten Verarbeitungselement und dem ersten Verarbeitungselement eines dritten Verarbeitungselements, das einen Zusammenführungsoperator aufweist, der von Operatoren empfangene Datentupel sowohl in dem geklonten Verarbeitungselement als auch in dem ersten Verarbeitungselement zusammenführt.
  3. Verfahren nach Anspruch 2, das weiterhin ein Einfügen des geklonten, des zweiten und des dritten Verarbeitungselements in den Operatorgraphen aufweist, während die Mehrzahl von Verarbeitungselementen die empfangenen Streaming-Daten verarbeitet.
  4. Verfahren nach Anspruch 1, bei dem die nicht voll ausgelastete Hardware-Ressource mindestens eines von beidem ist: eine CPU oder ein Teil eines Speichers.
  5. Verfahren nach Anspruch 4, bei dem es sich bei der nicht voll ausgelasteten Hardware-Ressource um eine CPU handelt, die aktuell keinen der Operatoren eines Verarbeitungselements aus der Mehrzahl von Verarbeitungselementen ausführt.
  6. Verfahren nach Anspruch 1, das weiterhin aufweist: Klonen eines zweiten Verarbeitungselements aus der Mehrzahl von Verarbeitungselementen, um ein zweites geklontes Verarbeitungselement zu erzeugen, das denselben oder mehrere Operatoren wie das zweite Verarbeitungselement aufweist, wobei das zweite Verarbeitungselement direkt mit dem ersten Verarbeitungselement in dem zweiten Ausführungspfad verbunden ist; und Verarbeiten der empfangenen Streaming-Daten in dem ersten Ausführungspfad, der das zweite geklonte Verarbeitungselement enthält, wobei das zweite geklonte Verarbeitungselement die empfangenen Streaming-Daten unter Verwenden der nicht voll ausgelasteten Hardware-Ressource verarbeitet.
  7. Verfahren nach Anspruch 1, das weiterhin ein Ermitteln aufweist, ob das erste Verarbeitungselement klonbar ist, wobei ein klonbares Verarbeitungselement in der Lage ist, die empfangenen Datentupel in einer anderen Reihenfolge als der Reihenfolge, in der die Datentupel empfangen wurden, zu verarbeiten.
  8. Computerprogrammprodukt, aufweisend: ein computerlesbares Speichermedium mit einem darin enthaltenen computerlesbaren Programmcode, wobei der computerlesbare Programmcode einen computerlesbaren Programmcode aufweist, der so konfiguriert ist, dass er: Streaming-Daten empfängt, die von einer Mehrzahl von Verarbeitungselementen verarbeitet werden sollen, die einen oder mehrere Operatoren aufweisen, wobei die Operatoren mindestens einen Teil der empfangenen Daten verarbeiten; einen Operatorgraphen aus der Mehrzahl von Operatoren erstellt, wobei der Operatorgraph mindestens einen Ausführungspfad definiert, bei dem ein erster Operator aus der Mehrzahl von Operatoren so konfiguriert ist, dass er Datentupel von mindestens einem vorgelagerten Operator empfängt und Datentupel an mindestens einen nachgelagerten Operator übermittelt; mit Bezug auf vordefinierte Kriterien eine nicht voll ausgelastete Hardware-Ressource in einem Datenverarbeitungssystem identifiziert, das die Operatoren ausführt; ein erstes Verarbeitungselement aus der Mehrzahl von Verarbeitungselementen klont, so dass das geklonte Verarbeitungselement denselben oder mehrere Operatoren wie das erste Verarbeitungselement aufweist; und mindestens einen Teil der empfangenen Streaming-Daten in einem ersten Ausführungspfad verarbeitet, der das geklonte Verarbeitungselement enthält, wobei der erste Ausführungspfad parallel zu einem zweiten Ausführungspfad ausgeführt wird, der das erste Verarbeitungselement enthält, wobei das geklonte Verarbeitungselement den Teil der empfangenen Streaming-Daten verarbeitet, der die nicht voll ausgelastete Hardware-Ressource verwendet.
  9. Computerprogrammprodukt nach Anspruch 8, das weiterhin computerlesbaren Programmcode enthält, der so konfiguriert ist, dass er: in dem Operatorgraphen vor dem geklonten Verarbeitungselement und dem ersten Verarbeitungselement ein zweites Verarbeitungselement aktiviert, das einen Trennungsoperator aufweist, der Datentupel an Operatoren sowohl in dem geklonten Verarbeitungselement als auch in dem ersten Verarbeitungselement übermittelt; und in dem Operatorgraphen nach dem geklonten Verarbeitungselement und dem ersten Verarbeitungselement ein drittes Verarbeitungselement aktiviert, das einen Zusammenführungsoperator aufweist, der von Operatoren empfangene Datentupel sowohl in dem geklonten Verarbeitungselement als auch in dem ersten Verarbeitungselement zusammenführt.
  10. Computerprogrammprodukt nach Anspruch 9, das weiterhin computerlesbaren Programmcode aufweist, der so konfiguriert ist, dass er das geklonte, das zweite und das dritte Verarbeitungselement in den Operatorgraphen einfügt, während die Mehrzahl von Verarbeitungselementen die empfangenen Streaming-Daten verarbeitet.
  11. Computerprogrammprodukt nach Anspruch 8, bei dem die nicht voll ausgelastete Hardware-Ressource mindestens eines von beidem ist: eine CPU oder ein Teil eines Speichers.
  12. Computerprogrammprodukt nach Anspruch 11, bei dem es sich bei der nicht voll ausgelasteten Hardware-Ressource um eine CPU handelt, die aktuell keinen der Operatoren eines Verarbeitungselements aus der Mehrzahl von Verarbeitungselementen ausführt.
  13. Computerprogrammprodukt nach Anspruch 8, das weiterhin computerlesbaren Programmcode enthält, der so konfiguriert ist, dass er: ein zweites Verarbeitungselement aus der Mehrzahl von Verarbeitungselementen klont, um ein zweites geklontes Verarbeitungselement zu erzeugen, das denselben oder mehrere Operatoren wie das zweite Verarbeitungselement aufweist, wobei das zweite Verarbeitungselement direkt mit dem ersten Verarbeitungselement in dem zweiten Ausführungspfad verbunden ist; und die empfangenen Streaming-Daten in dem ersten Ausführungspfad verarbeitet, der das zweite geklonte Verarbeitungselement enthält, wobei das zweite geklonte Verarbeitungselement die empfangenen Streaming-Daten unter Verwenden der nicht voll ausgelasteten Hardware-Ressource verarbeitet.
  14. Computerprogrammprodukt nach Anspruch 8, das weiterhin computerlesbaren Programmcode aufweist, der so konfiguriert ist, dass er ermittelt, ob das erste Verarbeitungselement klonbar ist, wobei ein klonbares Verarbeitungselement in der Lage ist, die empfangenen Datentupel in einer anderen Reihenfolge als der Reihenfolge, in der die Datentupel empfangen wurden, zu verarbeiten.
  15. System, das aufweist: einen Computerprozessor; und einen Speicher, der ein Programm enthält, das, wenn es auf dem Computerprozessor ausgeführt wird, eine Operation zum Verarbeiten von Daten durchführt, wobei das System aufweist: Empfangen von Streaming-Daten, die von einer Mehrzahl von Verarbeitungselementen verarbeitet werden sollen, die einen oder mehrere Operatoren aufweisen, wobei die Operatoren mindestens einen Teil der empfangenen Daten durch den Betrieb eines oder mehrerer Computerprozessoren verarbeiten; Erstellen eines Operatorgraphen aus der Mehrzahl von Operatoren, wobei der Operatorgraph mindestens einen Ausführungspfad definiert, bei dem ein erster Operator aus der Mehrzahl von Operatoren so konfiguriert ist, dass er Datentupel von mindestens einem vorgelagerten Operator empfängt und Datentupel an mindestens einen nachgelagerten Operator übermittelt; Identifizieren mit Bezug auf vordefinierte Kriterien einer nicht voll ausgelasteten Hardware-Ressource in einem Datenverarbeitungssystem, das die Operatoren ausführt; Klonen eines ersten Verarbeitungselements aus der Mehrzahl von Verarbeitungselementen, so dass das geklonte Verarbeitungselement denselben oder mehrere Operatoren wie das erste Verarbeitungselement aufweist; und Verarbeiten von mindestens einem Teil der empfangenen Streaming-Daten in einem ersten Ausführungspfad, der das geklonte Verarbeitungselement enthält, wobei der erste Ausführungspfad parallel zu einem zweiten Ausführungspfad ausgeführt wird, der das erste Verarbeitungselement enthält, wobei das geklonte Verarbeitungselement den Teil der empfangenen Streaming-Daten verarbeitet, der die nicht voll ausgelastete Hardware-Ressource verwendet.
  16. System nach Anspruch 15, das weiterhin aufweist: Aktivieren in dem Operatorgraphen vor dem geklonten Verarbeitungselement und dem ersten Verarbeitungselement eines zweiten Verarbeitungselements, das einen Trennungsoperator aufweist, der Datentupel an Operatoren sowohl in dem geklonten Verarbeitungselement als auch in dem ersten Verarbeitungselement übermittelt; und Aktivieren in dem Operatorgraphen nach dem geklonten Verarbeitungselement und dem ersten Verarbeitungselement eines dritten Verarbeitungselements, das einen Zusammenführungsoperator aufweist, der von Operatoren empfangene Datentupel sowohl in dem geklonten Verarbeitungselement als auch in dem ersten Verarbeitungselement zusammenführt.
  17. System nach Anspruch 16, das weiterhin ein Einfügen des geklonten, des zweiten und des dritten Verarbeitungselements in den Operatorgraphen aufweist, während die Mehrzahl von Verarbeitungselementen die empfangenen Streaming-Daten verarbeitet.
  18. System nach Anspruch 15, bei dem die nicht voll ausgelastete Hardware-Ressource mindestens eines von beidem ist: eine CPU oder ein Teil eines Speichers.
  19. System nach Anspruch 18, bei dem es sich bei der nicht voll ausgelasteten Hardware-Ressource um eine CPU handelt, die aktuell keinen der Operatoren eines Verarbeitungselements aus der Mehrzahl von Verarbeitungselementen ausführt.
  20. System nach Anspruch 15, das weiterhin aufweist: Klonen eines zweiten Verarbeitungselements aus der Mehrzahl von Verarbeitungselementen, um ein zweites geklontes Verarbeitungselement zu erzeugen, das denselben oder mehrere Operatoren wie das zweite Verarbeitungselement aufweist, wobei das zweite Verarbeitungselement direkt mit dem ersten Verarbeitungselement in dem zweiten Ausführungspfad verbunden ist; und Verarbeiten der empfangenen Streaming-Daten in dem ersten Ausführungspfad, der das zweite geklonte Verarbeitungselement enthält, wobei das zweite geklonte Verarbeitungselement die empfangenen Streaming-Daten unter Verwenden der nicht voll ausgelasteten Hardware-Ressource verarbeitet.
DE112013000752.5T 2012-01-30 2013-01-10 Verwalten von Verarbeitungselementen in einem Streaming-Datensystem Active DE112013000752B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/361,287 2012-01-30
US13/361,287 US9405553B2 (en) 2012-01-30 2012-01-30 Processing element management in a streaming data system
PCT/IB2013/050228 WO2013114228A1 (en) 2012-01-30 2013-01-10 Processing element management in a streaming data system

Publications (2)

Publication Number Publication Date
DE112013000752T5 true DE112013000752T5 (de) 2014-12-11
DE112013000752B4 DE112013000752B4 (de) 2024-02-01

Family

ID=48871267

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013000752.5T Active DE112013000752B4 (de) 2012-01-30 2013-01-10 Verwalten von Verarbeitungselementen in einem Streaming-Datensystem

Country Status (5)

Country Link
US (4) US9405553B2 (de)
CN (1) CN104094232B (de)
DE (1) DE112013000752B4 (de)
GB (1) GB2510769A (de)
WO (1) WO2013114228A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9535707B2 (en) 2012-01-30 2017-01-03 International Business Machines Corporation Processing element management in a streaming data system
US9588812B2 (en) 2011-07-26 2017-03-07 International Business Machines Corporation Dynamic reduction of stream backpressure

Families Citing this family (115)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102137138B (zh) * 2010-09-28 2013-04-24 华为技术有限公司 缓存协作方法、装置及系统
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US10142406B2 (en) 2013-03-11 2018-11-27 Amazon Technologies, Inc. Automated data center selection
US10313345B2 (en) 2013-03-11 2019-06-04 Amazon Technologies, Inc. Application marketplace for virtual desktops
US9002982B2 (en) 2013-03-11 2015-04-07 Amazon Technologies, Inc. Automated desktop placement
US9148350B1 (en) 2013-03-11 2015-09-29 Amazon Technologies, Inc. Automated data synchronization
US9665386B2 (en) * 2013-06-14 2017-05-30 Nutanix, Inc. Method for leveraging hypervisor functionality for maintaining application consistent snapshots in a virtualization environment
US9740514B1 (en) 2013-06-26 2017-08-22 Nutanix, Inc. Method and system to share data with snapshots in a virtualization environment
US10686646B1 (en) 2013-06-26 2020-06-16 Amazon Technologies, Inc. Management of computing sessions
US10623243B2 (en) 2013-06-26 2020-04-14 Amazon Technologies, Inc. Management of computing sessions
US8997060B2 (en) * 2013-07-31 2015-03-31 International Business Machines Corporation Parallel program analysis and branch prediction
US9515965B2 (en) 2013-09-18 2016-12-06 International Business Machines Corporation Managing data paths in an operator graph
US9298848B2 (en) * 2013-11-01 2016-03-29 International Business Machines Corporation Managing a template in an operator graph
US9379950B2 (en) 2013-11-07 2016-06-28 International Business Machines Corporation Using cloud resources to improve performance of a streaming application
US9237079B2 (en) 2013-11-19 2016-01-12 International Business Machines Corporation Increasing performance of a streaming application by running experimental permutations
US9535734B2 (en) * 2014-03-06 2017-01-03 International Business Machines Corporation Managing stream components based on virtual machine performance adjustments
US9794139B2 (en) 2014-03-07 2017-10-17 International Business Machines Corporation Allocating operators of a streaming application to virtual machines based on monitored performance
US9438490B2 (en) 2014-03-07 2016-09-06 International Business Machines Corporation Allocating operators of a streaming application to virtual machines based on monitored performance
US11243707B2 (en) 2014-03-12 2022-02-08 Nutanix, Inc. Method and system for implementing virtual machine images
US9614740B2 (en) * 2014-05-13 2017-04-04 International Business Machines Corporation Multifusion of a stream operator in a streaming application
US9781004B2 (en) 2014-10-16 2017-10-03 Cisco Technology, Inc. Discovering and grouping application endpoints in a network environment
US10129170B2 (en) 2015-04-30 2018-11-13 International Business Machines Corporation Automated split of work in a cloud environment
US10530660B2 (en) * 2015-05-21 2020-01-07 International Business Machines Corporation Application bundle preloading
US9965262B2 (en) 2015-05-21 2018-05-08 International Business Machines Corporation Application bundle pulling
US10152516B2 (en) 2015-05-21 2018-12-11 International Business Machines Corporation Managing staleness latency among application bundles
US10389794B2 (en) * 2015-05-21 2019-08-20 International Business Machines Corporation Managing redundancy among application bundles
US9888057B2 (en) 2015-05-21 2018-02-06 International Business Machines Corporation Application bundle management across mixed file system types
US10389850B2 (en) * 2015-05-21 2019-08-20 International Business Machines Corporation Managing redundancy among application bundles
US10175961B2 (en) * 2015-06-10 2019-01-08 International Business Machines Corporation Joining operator graph elements via whole program optimization
US9652295B2 (en) 2015-06-26 2017-05-16 International Business Machines Corporation Runtime fusion of operators based on processing element workload threshold and programming instruction compatibility
KR102381343B1 (ko) 2015-07-27 2022-03-31 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR102401600B1 (ko) 2015-08-31 2022-05-25 삼성전자주식회사 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치
US9535763B1 (en) * 2015-11-30 2017-01-03 International Business Machines Corporation System and method for runtime grouping of processing elements in streaming applications
CN106506393A (zh) * 2016-02-05 2017-03-15 华为技术有限公司 一种数据流处理方法、装置和系统
US9928046B2 (en) 2016-02-12 2018-03-27 International Business Machines Corporation System and method for dynamic runtime merging of real time streaming operator environments
US10599478B1 (en) 2016-03-29 2020-03-24 Amazon Technologies, Inc. Automated reconfiguration of real time data stream processing
US9904520B2 (en) 2016-04-15 2018-02-27 International Business Machines Corporation Smart tuple class generation for merged smart tuples
US10083011B2 (en) * 2016-04-15 2018-09-25 International Business Machines Corporation Smart tuple class generation for split smart tuples
US10523724B2 (en) * 2016-05-10 2019-12-31 International Business Machines Corporation Dynamic stream operator fission and fusion with platform management hints
US10901998B2 (en) * 2016-05-31 2021-01-26 International Business Machines Corporation Managing a modification to a consistent region of a stream computing environment
US10613947B2 (en) 2016-06-09 2020-04-07 Nutanix, Inc. Saving and restoring storage devices using application-consistent snapshots
US10341189B2 (en) * 2016-09-22 2019-07-02 International Business Machines Corporation Operator fusion management in a stream computing environment
CN107016083B (zh) * 2017-03-31 2020-02-07 清华大学 一种支持处理单元在线切换的流数据处理方法
US10560328B2 (en) 2017-04-20 2020-02-11 Cisco Technology, Inc. Static network policy analysis for networks
US10623264B2 (en) 2017-04-20 2020-04-14 Cisco Technology, Inc. Policy assurance for service chaining
US10826788B2 (en) 2017-04-20 2020-11-03 Cisco Technology, Inc. Assurance of quality-of-service configurations in a network
US10623271B2 (en) 2017-05-31 2020-04-14 Cisco Technology, Inc. Intra-priority class ordering of rules corresponding to a model of network intents
US10554483B2 (en) 2017-05-31 2020-02-04 Cisco Technology, Inc. Network policy analysis for networks
US10693738B2 (en) 2017-05-31 2020-06-23 Cisco Technology, Inc. Generating device-level logical models for a network
US10505816B2 (en) 2017-05-31 2019-12-10 Cisco Technology, Inc. Semantic analysis to detect shadowing of rules in a model of network intents
US10581694B2 (en) 2017-05-31 2020-03-03 Cisco Technology, Inc. Generation of counter examples for network intent formal equivalence failures
US10812318B2 (en) 2017-05-31 2020-10-20 Cisco Technology, Inc. Associating network policy objects with specific faults corresponding to fault localizations in large-scale network deployment
US20180351788A1 (en) 2017-05-31 2018-12-06 Cisco Technology, Inc. Fault localization in large-scale network policy deployment
US10439875B2 (en) 2017-05-31 2019-10-08 Cisco Technology, Inc. Identification of conflict rules in a network intent formal equivalence failure
US10904101B2 (en) 2017-06-16 2021-01-26 Cisco Technology, Inc. Shim layer for extracting and prioritizing underlying rules for modeling network intents
US11645131B2 (en) 2017-06-16 2023-05-09 Cisco Technology, Inc. Distributed fault code aggregation across application centric dimensions
US10574513B2 (en) 2017-06-16 2020-02-25 Cisco Technology, Inc. Handling controller and node failure scenarios during data collection
US10498608B2 (en) 2017-06-16 2019-12-03 Cisco Technology, Inc. Topology explorer
US11469986B2 (en) 2017-06-16 2022-10-11 Cisco Technology, Inc. Controlled micro fault injection on a distributed appliance
US10587621B2 (en) 2017-06-16 2020-03-10 Cisco Technology, Inc. System and method for migrating to and maintaining a white-list network security model
US11150973B2 (en) 2017-06-16 2021-10-19 Cisco Technology, Inc. Self diagnosing distributed appliance
US10686669B2 (en) 2017-06-16 2020-06-16 Cisco Technology, Inc. Collecting network models and node information from a network
US10547715B2 (en) 2017-06-16 2020-01-28 Cisco Technology, Inc. Event generation in response to network intent formal equivalence failures
US10528444B2 (en) 2017-06-19 2020-01-07 Cisco Technology, Inc. Event generation in response to validation between logical level and hardware level
US10341184B2 (en) 2017-06-19 2019-07-02 Cisco Technology, Inc. Validation of layer 3 bridge domain subnets in in a network
US11283680B2 (en) 2017-06-19 2022-03-22 Cisco Technology, Inc. Identifying components for removal in a network configuration
US10560355B2 (en) 2017-06-19 2020-02-11 Cisco Technology, Inc. Static endpoint validation
US10652102B2 (en) 2017-06-19 2020-05-12 Cisco Technology, Inc. Network node memory utilization analysis
US10644946B2 (en) 2017-06-19 2020-05-05 Cisco Technology, Inc. Detection of overlapping subnets in a network
US10673702B2 (en) 2017-06-19 2020-06-02 Cisco Technology, Inc. Validation of layer 3 using virtual routing forwarding containers in a network
US10567229B2 (en) 2017-06-19 2020-02-18 Cisco Technology, Inc. Validating endpoint configurations between nodes
US10432467B2 (en) 2017-06-19 2019-10-01 Cisco Technology, Inc. Network validation between the logical level and the hardware level of a network
US10437641B2 (en) 2017-06-19 2019-10-08 Cisco Technology, Inc. On-demand processing pipeline interleaved with temporal processing pipeline
US10218572B2 (en) 2017-06-19 2019-02-26 Cisco Technology, Inc. Multiprotocol border gateway protocol routing validation
US10623259B2 (en) 2017-06-19 2020-04-14 Cisco Technology, Inc. Validation of layer 1 interface in a network
US10805160B2 (en) 2017-06-19 2020-10-13 Cisco Technology, Inc. Endpoint bridge domain subnet validation
US10505817B2 (en) 2017-06-19 2019-12-10 Cisco Technology, Inc. Automatically determining an optimal amount of time for analyzing a distributed network environment
US10348564B2 (en) 2017-06-19 2019-07-09 Cisco Technology, Inc. Validation of routing information base-forwarding information base equivalence in a network
US10554493B2 (en) 2017-06-19 2020-02-04 Cisco Technology, Inc. Identifying mismatches between a logical model and node implementation
US10567228B2 (en) 2017-06-19 2020-02-18 Cisco Technology, Inc. Validation of cross logical groups in a network
US10700933B2 (en) 2017-06-19 2020-06-30 Cisco Technology, Inc. Validating tunnel endpoint addresses in a network fabric
US10812336B2 (en) 2017-06-19 2020-10-20 Cisco Technology, Inc. Validation of bridge domain-L3out association for communication outside a network
US11343150B2 (en) 2017-06-19 2022-05-24 Cisco Technology, Inc. Validation of learned routes in a network
US10411996B2 (en) 2017-06-19 2019-09-10 Cisco Technology, Inc. Validation of routing information in a network fabric
US10333787B2 (en) 2017-06-19 2019-06-25 Cisco Technology, Inc. Validation of L3OUT configuration for communications outside a network
US10536337B2 (en) 2017-06-19 2020-01-14 Cisco Technology, Inc. Validation of layer 2 interface and VLAN in a networked environment
US10587456B2 (en) 2017-09-12 2020-03-10 Cisco Technology, Inc. Event clustering for a network assurance platform
US10587484B2 (en) 2017-09-12 2020-03-10 Cisco Technology, Inc. Anomaly detection and reporting in a network assurance appliance
US10554477B2 (en) 2017-09-13 2020-02-04 Cisco Technology, Inc. Network assurance event aggregator
US10333833B2 (en) 2017-09-25 2019-06-25 Cisco Technology, Inc. Endpoint path assurance
US20190097895A1 (en) * 2017-09-28 2019-03-28 Oracle International Corporation System and method for dynamic auto-scaling based on roles
US11184432B2 (en) * 2017-09-28 2021-11-23 Oracle International Corporation System and method for dynamic auto-scaling based on roles
US10824522B2 (en) 2017-11-27 2020-11-03 Nutanix, Inc. Method, apparatus, and computer program product for generating consistent snapshots without quiescing applications
US11102053B2 (en) 2017-12-05 2021-08-24 Cisco Technology, Inc. Cross-domain assurance
US10599440B2 (en) 2017-12-27 2020-03-24 International Business Machines Corporation Method for sharing processing modules between pipelines
US10873509B2 (en) 2018-01-17 2020-12-22 Cisco Technology, Inc. Check-pointing ACI network state and re-execution from a check-pointed state
US10572495B2 (en) 2018-02-06 2020-02-25 Cisco Technology Inc. Network assurance database version compatibility
US10977089B2 (en) * 2018-04-16 2021-04-13 International Business Machines Corporation Fusing and unfusing operators during a job overlay
US10963262B2 (en) * 2018-05-09 2021-03-30 International Business Machine Corporation Establishing data pipelines with inclusion of iterative sub-pipelines
US10812315B2 (en) 2018-06-07 2020-10-20 Cisco Technology, Inc. Cross-domain network assurance
US10659298B1 (en) 2018-06-27 2020-05-19 Cisco Technology, Inc. Epoch comparison for network events
US10911495B2 (en) 2018-06-27 2021-02-02 Cisco Technology, Inc. Assurance of security rules in a network
US11019027B2 (en) 2018-06-27 2021-05-25 Cisco Technology, Inc. Address translation for external network appliance
US11218508B2 (en) 2018-06-27 2022-01-04 Cisco Technology, Inc. Assurance of security rules in a network
US11044273B2 (en) 2018-06-27 2021-06-22 Cisco Technology, Inc. Assurance of security rules in a network
US10904070B2 (en) 2018-07-11 2021-01-26 Cisco Technology, Inc. Techniques and interfaces for troubleshooting datacenter networks
US11095751B2 (en) * 2018-07-25 2021-08-17 Cisco Technology, Inc. In-network content caching exploiting variation in mobility-prediction accuracy
US10826770B2 (en) 2018-07-26 2020-11-03 Cisco Technology, Inc. Synthesis of models for networks using automated boolean learning
US10616072B1 (en) 2018-07-27 2020-04-07 Cisco Technology, Inc. Epoch data interface
US10965750B2 (en) 2018-09-27 2021-03-30 International Business Machines Corporation Distributed management of dynamic processing element connections in streaming applications
US10768917B2 (en) 2018-12-17 2020-09-08 International Business Machines Corporation Dynamic deployment placement of processing elements in a streaming data system
US11061681B2 (en) 2019-07-25 2021-07-13 International Business Machines Corporation Instruction streaming using copy select vector
CN111258574B (zh) * 2020-01-14 2021-01-15 中科驭数(北京)科技有限公司 加速器体系结构的编程方法和系统
US11340958B2 (en) 2020-07-08 2022-05-24 Vmware, Inc. Real-time simulation of compute accelerator workloads for distributed resource scheduling
US11822924B2 (en) * 2020-09-04 2023-11-21 Oracle International Corporation System and method for reactive flattening map for use with a microservices or other computing environment

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4612624A (en) 1982-10-25 1986-09-16 Mitsubishi Denki Kabushiki Kaisha Demand estimation apparatus
JP4309480B2 (ja) 1995-03-07 2009-08-05 株式会社東芝 情報処理装置
JPH1097437A (ja) 1996-09-20 1998-04-14 Nippon Steel Corp 並列分散処理システム
JPH1197431A (ja) 1997-09-19 1999-04-09 Dainippon Screen Mfg Co Ltd 基板熱処理装置
JP2000132390A (ja) 1998-10-23 2000-05-12 Toshiba Corp プロセッサ及び分岐予測器
US6347254B1 (en) 1998-12-31 2002-02-12 Honeywell Inc Process facility control systems using an efficient prediction form and methods of operating the same
JP2001325041A (ja) 2000-05-12 2001-11-22 Toyo Eng Corp 計算機資源活用方法及びシステム
US20020083063A1 (en) 2000-12-26 2002-06-27 Bull Hn Information Systems Inc. Software and data processing system with priority queue dispatching
US7644863B2 (en) 2001-11-14 2010-01-12 Sap Aktiengesellschaft Agent using detailed predictive model
US8055492B2 (en) 2002-01-10 2011-11-08 International Business Machines Corporation Non-unique results in design verification by test programs
US8275889B2 (en) * 2002-06-10 2012-09-25 International Business Machines Corporation Clone-managed session affinity
US7206861B1 (en) 2002-07-29 2007-04-17 Juniper Networks, Inc. Network traffic distribution across parallel paths
US9414255B2 (en) 2002-09-13 2016-08-09 Alcatel Lucent Packet flow control in a wireless communications network based on an indication contained in a packet
WO2004027649A1 (en) 2002-09-18 2004-04-01 Netezza Corporation Asymmetric streaming record data processor method and apparatus
US7480640B1 (en) 2003-12-16 2009-01-20 Quantum Leap Research, Inc. Automated method and system for generating models from data
US20060004935A1 (en) 2004-06-30 2006-01-05 Pak-Lung Seto Multi-protocol bridge
US7536486B2 (en) 2004-07-30 2009-05-19 Microsoft Corporation Automatic protocol determination for portable devices supporting multiple protocols
US20060036619A1 (en) 2004-08-09 2006-02-16 Oren Fuerst Method for accessing and analyzing medically related information from multiple sources collected into one or more databases for deriving illness probability and/or for generating alerts for the detection of emergency events relating to disease management including HIV and SARS, and for syndromic surveillance of infectious disease and for predicting risk of adverse events to one or more drugs
US20060064438A1 (en) 2004-09-17 2006-03-23 International Business Machines Corporation Methods and apparartus for monitoring abnormalities in data stream
US7477653B2 (en) 2004-12-10 2009-01-13 Microsoft Corporation Accelerated channel change in rate-limited environments
SI1672161T1 (sl) 2004-12-20 2009-10-31 Gabriel Pichler Tesnjenje stika in postopek njegove izdelave
US20060206706A1 (en) 2005-03-14 2006-09-14 Bryan Dietz Method and apparatus for dynamically distributing data flow in a communication network
US20060224763A1 (en) 2005-03-18 2006-10-05 Sharp Laboratories Of America, Inc. Switching and simultaneous usage of 802.11a and 802.11g technologies for video streaming
US8126870B2 (en) 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
JP4687253B2 (ja) 2005-06-03 2011-05-25 株式会社日立製作所 ストリームデータ処理システムのクエリ処理方法
US7487206B2 (en) * 2005-07-15 2009-02-03 International Business Machines Corporation Method for providing load diffusion in data stream correlations
US20070073685A1 (en) 2005-09-26 2007-03-29 Robert Thibodeau Systems and methods for valuing receivables
US8144149B2 (en) 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US7808930B2 (en) * 2005-10-26 2010-10-05 Cisco Technology, Inc. Dynamic multipoint tree rearrangement
US8886261B2 (en) 2005-12-06 2014-11-11 Motorola Mobility Llc Multi-mode methods and devices utilizing battery power level for selection of the modes
US7894356B2 (en) * 2005-12-23 2011-02-22 Jds Uniphase Corporation System and method for measuring network performance using real network traffic
US8443351B2 (en) * 2006-02-23 2013-05-14 Microsoft Corporation Parallel loops in a workflow
US7302362B2 (en) 2006-03-01 2007-11-27 International Business Machines Corporation System and method for efficient and collective adjustment of sensor reporting ranges for long-lived queries
US7548937B2 (en) * 2006-05-04 2009-06-16 International Business Machines Corporation System and method for scalable processing of multi-way data stream correlations
US7481244B2 (en) 2006-06-05 2009-01-27 Bioquiddity, Inc. Fluid flow control device
US7613848B2 (en) 2006-06-13 2009-11-03 International Business Machines Corporation Dynamic stabilization for a stream processing system
US7493406B2 (en) * 2006-06-13 2009-02-17 International Business Machines Corporation Maximal flow scheduling for a stream processing system
US7496683B2 (en) * 2006-07-27 2009-02-24 International Business Machines Corporation Maximization of sustained throughput of distributed continuous queries
JP4839164B2 (ja) 2006-09-15 2011-12-21 株式会社日立製作所 ハードウェアモニタを用いた性能評価システム及び再構築可能な計算機システム
US9201835B2 (en) 2007-02-12 2015-12-01 Mushroom Networks, Inc Access line bonding and splitting methods and apparatus
US8776052B2 (en) 2007-02-16 2014-07-08 International Business Machines Corporation Method, an apparatus and a system for managing a distributed compression system
US7834875B2 (en) 2007-04-02 2010-11-16 International Business Machines Corporation Method and system for automatically assembling stream processing graphs in stream processing systems
US8243924B2 (en) 2007-06-29 2012-08-14 Google Inc. Progressive download or streaming of digital media securely through a localized container and communication protocol proxy
WO2009018361A1 (en) 2007-07-30 2009-02-05 Marvell Semiconductor, Inc. Simultaneously maintaining bluetooth and 802.11 connections to increase data throughput
US7702741B2 (en) * 2007-07-31 2010-04-20 Oracle International Corporation Configuring or reconfiguring a multi-master information sharing environment
US9424315B2 (en) 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
US8375395B2 (en) 2008-01-03 2013-02-12 L3 Communications Integrated Systems, L.P. Switch-based parallel distributed cache architecture for memory access on reconfigurable computing platforms
US8090974B1 (en) * 2008-02-08 2012-01-03 Joviandata, Inc. State machine controlled dynamic distributed computing
JP4872945B2 (ja) 2008-02-25 2012-02-08 日本電気株式会社 運用管理装置、運用管理システム、情報処理方法、及び運用管理プログラム
US20090313641A1 (en) 2008-06-12 2009-12-17 Condel International Technologies Inc. Application management methods and systems
US8949810B2 (en) * 2008-06-16 2015-02-03 International Business Machines Corporation Method for high-performance data stream processing
US20100030896A1 (en) 2008-06-19 2010-02-04 Microsoft Corporation Estimating latencies for query optimization in distributed stream processing
US7860009B2 (en) 2008-06-26 2010-12-28 Alcatel Lucent Providing backpressure flow control to specific traffic flows
US7856544B2 (en) * 2008-08-18 2010-12-21 International Business Machines Corporation Stream processing in super node clusters of processors assigned with stream computation graph kernels and coupled by stream traffic optical links
US8030974B1 (en) 2008-09-10 2011-10-04 Marvell International, Ltd. Method and apparatus for sampling
JP5465413B2 (ja) * 2008-10-29 2014-04-09 株式会社日立製作所 ストリームデータ処理方法、及びそのシステム
US9344401B2 (en) 2009-02-04 2016-05-17 Citrix Systems, Inc. Methods and systems for providing translations of data retrieved from a storage system in a cloud computing environment
JP5149840B2 (ja) 2009-03-03 2013-02-20 株式会社日立製作所 ストリームデータ処理方法、ストリームデータ処理プログラム、および、ストリームデータ処理装置
US8578076B2 (en) 2009-05-01 2013-11-05 Citrix Systems, Inc. Systems and methods for establishing a cloud bridge between virtual storage resources
US8949801B2 (en) 2009-05-13 2015-02-03 International Business Machines Corporation Failure recovery for stream processing applications
US8601458B2 (en) 2009-05-14 2013-12-03 International Business Machines Corporation Profile-driven data stream processing
US8255554B2 (en) 2009-05-14 2012-08-28 International Business Machines Corporation Application resource model composition from constituent components
US8490072B2 (en) * 2009-06-23 2013-07-16 International Business Machines Corporation Partitioning operator flow graphs
US8479181B2 (en) 2010-02-01 2013-07-02 International Business Machines Corporation Interactive capacity planning
US8751436B2 (en) 2010-11-17 2014-06-10 Bank Of America Corporation Analyzing data quality
US8478743B2 (en) 2010-12-23 2013-07-02 Microsoft Corporation Asynchronous transfer of state information between continuous query plans
US8732300B2 (en) * 2011-01-10 2014-05-20 International Business Machines Corporation Application monitoring in a stream database environment
US9965520B2 (en) 2011-06-17 2018-05-08 Microsoft Corporation Efficient logical merging over physically divergent streams
US8990452B2 (en) 2011-07-26 2015-03-24 International Business Machines Corporation Dynamic reduction of stream backpressure
US8560526B2 (en) 2011-07-26 2013-10-15 International Business Machines Corporation Management system for processing streaming data
US9148495B2 (en) 2011-07-26 2015-09-29 International Business Machines Corporation Dynamic runtime choosing of processing communication methods
US8959313B2 (en) 2011-07-26 2015-02-17 International Business Machines Corporation Using predictive determinism within a streaming environment
US9405553B2 (en) 2012-01-30 2016-08-02 International Business Machines Corporation Processing element management in a streaming data system
US9146775B2 (en) 2012-04-26 2015-09-29 International Business Machines Corporation Operator graph changes in response to dynamic connections in stream computing applications
CN103379041B (zh) 2012-04-28 2018-04-20 国际商业机器公司 一种系统检测方法和装置以及流量控制方法和设备
US9002822B2 (en) 2012-06-21 2015-04-07 Sap Se Cost monitoring and cost-driven optimization of complex event processing system
US9930081B2 (en) 2012-11-13 2018-03-27 International Business Machines Corporation Streams optional execution paths depending upon data rates
US8819685B2 (en) 2013-01-24 2014-08-26 Huawei Technologies Co., Ltd. Method and apparatus for adjusting I/O channel on virtual platform

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588812B2 (en) 2011-07-26 2017-03-07 International Business Machines Corporation Dynamic reduction of stream backpressure
US10324756B2 (en) 2011-07-26 2019-06-18 International Business Machines Corporation Dynamic reduction of stream backpressure
US9535707B2 (en) 2012-01-30 2017-01-03 International Business Machines Corporation Processing element management in a streaming data system
US9870262B2 (en) 2012-01-30 2018-01-16 International Business Machines Corporation Processing element management in a streaming data system
US10296386B2 (en) 2012-01-30 2019-05-21 International Business Machines Corporation Processing element management in a streaming data system

Also Published As

Publication number Publication date
US20180074862A1 (en) 2018-03-15
GB2510769A (en) 2014-08-13
US10296386B2 (en) 2019-05-21
CN104094232B (zh) 2017-09-12
US9535707B2 (en) 2017-01-03
CN104094232A (zh) 2014-10-08
GB201409144D0 (en) 2014-07-09
US20170004014A1 (en) 2017-01-05
DE112013000752B4 (de) 2024-02-01
US20130198489A1 (en) 2013-08-01
WO2013114228A1 (en) 2013-08-08
US9870262B2 (en) 2018-01-16
US9405553B2 (en) 2016-08-02
US20130198318A1 (en) 2013-08-01

Similar Documents

Publication Publication Date Title
DE112013000752B4 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE102013207049B4 (de) Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung
DE112012005030T5 (de) Dynamisch konfigurierbare Platzierungs-Engine
DE102012216029B4 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE102012221059B4 (de) Verfahren und System anpassbarer Netzwerkübertragungsoptimierung in großen parallelen Rechensystemen
DE102018006894A1 (de) Technologien zum Auslagern von Beschleunigungsaufgaben-Ablaufplanungsoperationen an Beschleunigerschlitten
DE112018006769B4 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE102016104478A1 (de) Kryptographische Verfahren, die Arbeitsnachweise in Systemen untereinander verbundener Knoten realisieren
DE112012005639T5 (de) Auslösen von Fensterbedingungen bei Anwendungen des Stream-Computing
DE102015004127A1 (de) Verfahren und System zum Vergleichen von verschienenen Versionen einer cloud-basierten Anwendung in einer Produktionsumgebung unter Verwendung von getrennten Back-End-Systemen
DE112011101469T5 (de) Kompilieren von Software für ein hierarchisches verteiltes Verarbeitungssystem
DE112012002905T5 (de) Technik zum Kompilieren und Ausführen von Programmen in höheren Programmiersprachen auf heterogenen Computern
DE112013000656T5 (de) System und Verfahren zum Verringern der Speichernutzung durch optimales Platzieren von virtuellen Maschinen in einem virtualisierten Rechenzentrum
DE112019005288T5 (de) EFFEKTIVES UND SKALIERBARES AUFBAUEN UND SONDIEREN VON HASHTABELLEN UNTER VERWENDUNG MEHRERER GPUs
DE112012000693T5 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE112013000904T5 (de) Durchführen von Aktualisierungen von Quellcode, der auf einer Vielzahl von Rechenknoten ausgeführt wird
DE102012224492A1 (de) Auslösen von Fensterbedingungen unter Verwendung einer Ausnahmebehandlung
DE112013004187T5 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE202014010940U1 (de) Dynamische Shuffle-Rekonfiguration
DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
DE202014010885U1 (de) Beschleunigung basierend auf zwischengespeicherte Flüsse
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
DE202017105367U1 (de) Abfrageneustartfähigkeit
DE102015111820A1 (de) Auswählen eines Netzwerkes
DE102012204167A1 (de) Vorauslaufende genäherte Berechnungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R084 Declaration of willingness to licence
R016 Response to examination communication
R018 Grant decision by examination section/examining division