JP2023534171A - ストリーム並列領域における負荷分散 - Google Patents

ストリーム並列領域における負荷分散 Download PDF

Info

Publication number
JP2023534171A
JP2023534171A JP2023500438A JP2023500438A JP2023534171A JP 2023534171 A JP2023534171 A JP 2023534171A JP 2023500438 A JP2023500438 A JP 2023500438A JP 2023500438 A JP2023500438 A JP 2023500438A JP 2023534171 A JP2023534171 A JP 2023534171A
Authority
JP
Japan
Prior art keywords
data
flow
processing system
data processing
parallel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023500438A
Other languages
English (en)
Inventor
チウ、ヘンリー
ファウセット、ブラッドリー、ウィリアム
スン、ジンドン
ニコライ、ジェイソン、エー.
ガーヴァ―、ポウル
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 JP2023534171A publication Critical patent/JP2023534171A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

データのフローを受信することに応答して、データのフローをストリーム処理するための分散データ処理システムに含まれる並列領域における1または複数のオペレータが初期化される。データのフローに対する変更、または、分散データ処理システムに対する変更を識別することに応答して、分散データ処理システムに含まれるデータのフローおよび並列領域のサイズのうちの少なくとも1つは動的に調節される。データのフローは、分散データ処理システムに含まれる、動的に調節されるデータのフローの1つおよび並列領域を介して処理される。

Description

本発明は概して、ストリームコンピューティングアプリケーションの分野に関し、より具体的には、ストリームデータ処理の並列領域におけるデータのフローの分散に関する。
ストリーム処理とは、移動中のデータの処理、または言い換えれば、データが生成または受信されるときに直接的にデータに対して計算することである。ストリーム処理はビッグデータ技術である。センサイベント、ウェブサイト上のユーザアクティビティ、ファイナンシャルトレードなど、大部分のデータは連続ストリームとして生じる。これらのデータはすべて、経時的に一連のイベントとして作成され、ストリーム処理は、データを受信する短い期間内に状態を迅速に検出できる。検出期間は数ミリ秒から数分の範囲で変動する。例えば、ストリーム処理を用いることにより、温度センサから来るデータストリームをクエリすることによって、温度が氷点に到達したときに、アラートが受信され得る。ストリーム処理の前に、このタイプのデータは多くの場合、データベース、ファイルシステム、または、他の形態の大容量ストレージに格納された。アプリケーションはデータをクエリし、または必要に応じてデータに対して計算する。ストリーム処理はまた、リアルタイム分析、ストリーム分析、コンプレックスイベント処理、リアルタイムストリーミング分析、およびイベント処理など、多くの他の名称で呼ばれる。
本発明の実施形態は、電気回路概略図を分析してそれらの機能を決定するためのアプローチを含む。一実施形態において、データのフローを受信することに応答して、データのフローをストリーム処理するための分散データ処理システムに含まれる並列領域における1または複数のオペレータが初期化される。データのフローに対する変更、または、分散データ処理システムに対する変更を識別することに応答して、分散データ処理システムに含まれるデータのフローおよび並列領域のサイズのうちの少なくとも1つは動的に調節される。データのフローは、分散データ処理システムに含まれる、動的に調節されるデータのフローの1つおよび並列領域を介して処理される。
本発明の実施形態による、ストリーム処理アプリケーションを含むコンピューティング環境を示す機能ブロック図を図示する。
本発明の実施形態による、図1のコンピューティング環境内のコンピューティングデバイス上のストリームデータプロセスの並列領域におけるデータのフローの分散を提供するストリーム最適化プログラムの動作段階を図示するフローチャートである。
本発明の実施形態による、ストリーム処理アプリケーション内の並列領域の第1の例を図示する。
本発明の実施形態によるにストリーム処理アプリケーション内の並列領域の第2の例を図示する。
本発明の実施形態による、図1のコンピューティング環境内におけるストリーム最適化プログラムを実行するコンピューティングデバイスのコンポーネントのブロック図を図示する。
本発明の実施形態は、利用可能なデータの量が急激に増加していることを認識する。データのソースは、インターネットオブシングスデバイス、任意の数のセンサ(温度、気圧、風、水位、水圧、地震など)、様々な産業における機械からのデータ、ソーシャルメディアデータ、および、ファイナンシャルトランザクションデータなどのトランザクションデータを含むが、これらに限定されない。大量のこれらの構造化もしくは非構造化データまたはその組み合わせを処理することは、まずデータを格納し、次にデータをクエリすることを意味するが、データの格納は、必要なメモリリソース(例えば、データベースストレージを有するコンピュータサーバ)に起因して高コストである。この方法に伴う時間に起因して、データにおけるリアルタイムのトレンドが見逃されることがあり得、結果として、機会が見逃される。データをより速く、リアルタイムに、または、ほぼリアルタイムに処理するための方法が必要である。
本発明の実施形態は、ビッグデータのリアルタイム分析においてデータのストリームを処理するための分散データ処理システムの並列領域におけるデータのフローを分散するための方法、コンピュータプログラム製品、およびコンピュータシステムがあり得ることを認識する。実施形態において、ストリーム処理アプリケーション内のデータのフローは、(i)データの属性(例えば、最高/定常データレート、データの抑制、データの優先度のキューイングなど)、および、(ii)コンピューティングシステムの属性(例えば、システム内のリソースの量、リソースの利用率、リソースのフェイルオーバ/フェイルバック、並列化リソースなど)に基づいて、当該方法、コンピュータプログラム製品、およびコンピュータシステムによって誘導され得る。更に、当該方法、コンピュータプログラム製品、およびコンピュータシステムは、ストリーム処理アプリケーションの並列領域内の複数のオペレータを動的に分散し、データまたはコンピューティングシステムの変化に反応し得る。様々な実施形態において、当該方法、コンピュータプログラム製品、およびコンピュータシステムは、処理前に上述のデータを格納することなくリアルタイムまたはほぼリアルタイムに大量のデータを処理するためのより効率的な手段を提供することによって、コンピュータ技術を改善する。
本明細書において「一実施形態」、「実施形態」、「例示的な実施形態」などの言及は、説明される実施形態が特定の機能、構造、または特徴を含み得ることを示す。更に、そのような文言は、必ずしも同じ実施形態を指すとは限らない。更に、ある実施形態に関連して特定の特徴、構造または特性が説明されている場合、明示の説明の有無に関わらず、他の実施形態に関連して、そのような特徴、構造または特性に影響が及ぶことは、当業者の知識の範囲内であると考えられる。
ここでは図を参照して本発明を詳細に説明する。
図1は、本発明の一実施形態による、全体的に100で示されるコンピューティング環境を示す機能ブロック図である。図1は、本発明の一実装の単なる例示を提供するものであり、異なる実施形態が実装され得るシステムおよび環境に関していかなる限定も課さない。請求項に列挙される発明の範囲から逸脱することなく、当業者によって、図示された実施形態に対する多くの修正が加えられ得る。
実施形態において、コンピューティング環境100は、ネットワーク110によって相互接続されるデータソース120-1、データソース120-2、データソース120-N、およびコンピューティングデバイス130を含む。例示的な実施形態において、コンピューティング環境100は、ネットワーク110を介して、データソース120-1、データソース120-2、データソース120-N、およびコンピューティングデバイス130と相互接続される、スマートウォッチおよび他のウェアラブル技術、携帯電話、スマートフォン、ファブレット、タブレットコンピュータ、追加的なラップトップコンピュータ、追加のデスクトップコンピュータ、他のコンピュータサーバ、または、当技術分野において知られている任意の他のコンピュータシステムなど、他のコンピューティングデバイス(図1では不図示)を含む。読みやすくするために、この文書では、データソース120-1、データソース120-2、およびデータソース120-Nをまとめて指すためにデータソース120-Nが使用される(可能な場合)。
本発明の実施形態において、データソース120-Nおよびコンピューティングデバイス130がネットワーク110に接続され、これにより、データソース120-Nおよびコンピューティングデバイス130は、データソース120-Nおよびコンピューティングデバイス130に直接格納されていない他のコンピューティングデバイスもしくはデータまたはその組み合わせにアクセスすることが可能となる。ネットワーク110は例えば、短距離、低電力無線接続、ローカルエリアネットワーク(LAN)、遠隔通信ネットワーク、インターネットなどのワイドエリアネットワーク(WAN)、または、4つの任意の組み合わせであり得、有線、無線、または光ファイバ接続を含み得る。ネットワーク110は、音声、データおよびビデオ情報を含むマルチメディア信号を含む、データ、音声、もしくはビデオ信号またはその組み合わせを受信および送信することが可能である、1または複数の有線もしくは無線またはその組み合わせのネットワークを含む。一般に、ネットワーク110は、本発明の実施形態による、データソース120-Nとコンピューティングデバイス130、および、ネットワーク110に接続された任意の他のコンピューティングデバイス(図1では不図示)との間の通信をサポートする接続およびプロトコルの任意の組み合わせである。実施形態において、コンピューティング環境100における別のコンピューティングデバイス(図1では不図示)によって受信されたデータは、ネットワーク110を介してコンピューティングデバイス130に通信される。
実施形態において、データソース120-Nは、ネットワーク110を介してコンピューティングデバイス130によってアクセス可能な任意の数のデータソースの1つである。本発明の実施形態によれば、データソース120-Nはビッグデータソースである。ビッグデータは、連続ストリームに存在する大量のデータから構成される。データソース120-Nは、ソーシャルメディアデータ(例えば、ユーザコメントおよび写真)、トランザクションデータ(例えば、ファイナンシャルトレード)、センサ(例えば、温度および圧力)データ、インターネットオブシングスデータ(例えば、ビデオセキュリティデータ)、および、製造機械からのデータ(例えば、動作温度および酸素含有量)を含み得るが、これらに限定されない。
本発明の実施形態によれば、コンピューティングデバイス130は、ラップトップ、タブレット、またはネットブックパーソナルコンピュータ(PC)、デスクトップコンピュータ、パーソナルデジタルアシスタント(PDA)、スマートフォン、標準的携帯電話、スマートウォッチ、または、任意の他のウェアラブル技術、または、コンピューティング環境100内の任意の他のコンピューティングデバイスと通信可能である任意の他のハンドヘルド、プログラマブル電子デバイスの1つであり得る。実施形態によれば、コンピューティングデバイス130は、スタンドアロンコンピューティングデバイス、管理サーバ、ウェブサーバ、モバイルコンピューティングデバイス、または、データを受信、送信および処理することが可能である任意の他の電子デバイスもしくはコンピューティングシステムであり得る。他の実施形態において、コンピューティングデバイス130は、クラウドコンピューティング環境などのサーバシステムとして複数のコンピュータを利用するコンピューティングシステムを表し得る。特定の実施形態において、コンピューティングデバイス130は、コンピューティング環境100の要素のよってアクセスされるときにシームレスなリソースの単一プールとして動作する、クラスタリングされたコンピュータおよびコンポーネント(例えば、データベースサーバコンピュータ、アプリケーションサーバコンピュータなど)を利用するコンピュータシステムを表す。一般に、コンピューティングデバイス130は、コンピュータ可読プログラム命令を実行可能な任意の電子デバイスまたは電子デバイスの組み合わせを表す。実施形態において、コンピューティング環境100は任意の数のコンピューティングデバイス130を含む。コンピューティングデバイス130は、本発明の実施形態による、図4に関して更に詳細に図示および説明されるような内部および外部ハードウェアコンポーネントを含み得る。本発明の実施形態によれば、コンピューティングデバイス130は、ディスプレイ131、ユーザインタフェース132、メモリ133、およびストリームアプリケーション134を含む。
実施形態によれば、ディスプレイ131は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、スマートウォッチなどのための電子ビジュアルデバイスである。ディスプレイ131は、ユーザが特殊なスタイラスもしくは1または複数の指またはその組み合わせを用いてディスプレイ131に触れることによる単純な、または、マルチタッチジェスチャを介して電子デバイスを制御することを可能にする、ディスプレイの上に重ねられた入力デバイスであるタッチスクリーンを含み得る。ディスプレイ131は、オープンプログラムおよびアプリケーションを表示し、コンピューティングデバイス130のユーザがキーボード、マウスおよびボタン(図1では不図示)を介してオープンプログラムおよびアプリケーションとインタラクトすることを可能にする。ディスプレイ131は、薄膜トランジスタ液晶ディスプレイ(TFT-LCD)、フラットパネルLED(発光ダイオード)ディスプレイ、ブラウン管(CRT)、または、当技術分野において知られている、もしくは、将来開発される任意のタイプのディスプレイデバイスであり得る。ディスプレイ131は、VGA(ビデオグラフィックスアレイ)、DVI(デジタルビデオインタフェース)、HDMI(登録商標)(高解像度マルチメディアインタフェース)、または、当技術分野において知られている、もしくは、将来開発される任意の他の接続タイプを介してコンピューティングデバイス130に接続され得る。
実施形態において、ユーザインタフェース132は、コンピューティングデバイス130のユーザと、ストリーム最適化プログラム139(下で説明する)との間のインタフェースを提供する。ユーザインタフェース132は、グラフィカルユーザインタフェース(GUI)またはウェブユーザインタフェース(WUI)であり得、テキスト、ドキュメント、ウェブブラウザウィンドウ、ユーザオプション、アプリケーションインタフェース、および、動作のための命令を表示し得、プログラムがユーザに提示する情報(グラフィックス、テキスト、音など)、および、プログラムを制御するためにユーザが採用する制御シーケンスを含み得る。ユーザインタフェース132はまた、コンピューティングデバイス130とストリーム最適化プログラム139との間のインタフェースを提供するモバイルアプリケーションソフトウェアであり得る。モバイルアプリケーションソフトウェア、または「アプリ」は、スマートフォン、タブレットコンピュータ、および他のモバイルデバイス上で実行するよう設計されたコンピュータプログラムである。ユーザインタフェース132は、コンピューティングデバイス130のユーザがストリーム最適化プログラム139および図1において不図示である任意の他のコンピューティングデバイスとインタラクトすることを可能にする。
実施形態によれば、メモリ133は、ストリーム最適化プログラム139、ならびに、コンピューティングデバイス130上の任意の他のプログラムおよびアプリケーションに書き込まれる、もしくは、それによって読み取られる、またはその組み合わせが行われるストレージである。一実施形態において、メモリ133はコンピューティングデバイス130に存在する。他の実施形態において、メモリ133は、ネットワーク110を介してアクセス可能なコンピューティング環境100、クラウドストレージ、または別のコンピューティングデバイスにおける任意の他のデバイス(図1では不図示)に存在する。更に別の実施形態において、メモリ133は、コンピューティングデバイス130内の複数のストレージデバイスを表す。メモリ133は、当技術分野において知られている、情報を格納するための任意の揮発性または不揮発性記憶媒体を使用して実装され得る。例えば、メモリ133は、独立ディスクの冗長アレイ(RAID)、ソリッドステートドライブ(SSD)またはランダムアクセスメモリ(RAM)におけるテープライブラリ、光学ライブラリ、1または複数の独立ハードディスクドライブ、複数のハードディスクドライブを用いて実装され得る。同様に、メモリ133は、関係データベース、オブジェクト指向データベース、または1または複数のテーブルなど、当技術分野で知られている任意の好適なストレージアーキテクチャを用いて実装され得る。本発明の実施形態において、コンピューティングデバイス130上で動作するストリーム最適化プログラム139および任意の他のプログラムおよびアプリケーション(図1では不図示)は、データを格納し、読み出し、修正し、またはメモリ133に書き込み得る。本発明の実施形態において、メモリ133に格納されたデータは、処理データソース120-Nの様々な結果など、ストリーム最適化プログラム139によって格納されたデータを含むが、これに限定されない。
実施形態において、ストリームアプリケーション134は、データソース120-Nなど、大量のデータのストリーム処理において使用される複数のアプリケーションの1つである。実施形態によれば、ストリームアプリケーション134は、データを供給するデータソースからデータを取得し、上述のデータを任意の数のオペレータ(データを処理して1または複数の結果にする)に渡し、次に、結果は格納または更なる処理のためにデータシンクによって下流に渡される。実施形態において、ストリームアプリケーション134は、オペレータ135およびストリーム最適化プログラム139を含む。
実施形態によれば、オペレータ135は、データに作用する(すなわち、入ってくるデータストリームにおけるデータを処理して結果の出力ストリームを生成する)ストリームアプリケーション134内の複数のオペレータである。オペレータ135はプログラム開発者によって書き込まれる。入ってくるデータストリームからのワークロードを分散するために、オペレータ135は複製(すなわち並列化)され得る。複製されたオペレータ135のセットはチャネルと呼ばれる。
実施形態において、ストリーム最適化プログラム139は、プログラム、より大きいプログラムのサブプログラム、アプリケーション、複数のアプリケーション、またはモバイルアプリケーションソフトウェアであり得、これらは、ビッグデータのリアルタイム分析において使用されるストリームデータプロセスの並列領域におけるデータのフローを動的に分散するように機能する。実施形態によれば、並列領域は、既存のオペレータが複製されるストリームアプリケーション内の領域であり、データ処理を改善するために、複製されたオペレータの間でデータストリームを分割することを可能にする。プログラムは、特定のタスクを実行するために書き込まれる命令のシーケンスである。実施形態において、ストリーム最適化プログラム139は独立に実行する。他の実施形態において、ストリーム最適化プログラム139は、実行するためにシステムソフトウェアもしくは他のプログラム(図1では不図示)またはその組み合わせに依存する。実施形態によれば、ストリーム最適化プログラム139は、上述の1または複数のストリームのデータフローを分散するために1または複数のデータストリームのフローを分析する機械学習およびディープラーニングを利用する人工知能に基づく認知システムである。実施形態において、ストリーム最適化プログラム139は、データストリームを分割し、オペレータを複製し、その結果、データが並列に処理され得る。一実施形態において、ストリーム最適化プログラム139は、コンピューティングデバイス130に存在するスタンドアロン型プログラムとして機能する。別の実施形態において、ストリーム最適化プログラム139は、コンピューティング環境100において見られる他のプログラム、アプリケーションなどと連携して機能する。更に別の実施形態において、ストリーム最適化プログラム139は、ネットワーク110を介してコンピューティングデバイス130と相互接続する、コンピューティング環境100における他のコンピューティングデバイス(図1では不図示)に存在する。
実施形態によれば、ストリーム最適化プログラム139は、データを1または複数のデータソースから受信する。実施形態において、ストリーム最適化プログラム139は、データフロー(すなわち、データの量、データレートなど)を決定する。なお更に、実施形態において、ストリーム最適化プログラム139は1または複数のオペレータを初期化する。なお更に、実施形態において、ストリーム最適化プログラム139は、初期化されたオペレータへデータを送信する。なお更に、実施形態において、ストリーム最適化プログラム139は、データフローおよび上述のデータフローを処理するコンピューティングシステムの両方をモニタリングする。なお更に、実施形態において、ストリーム最適化プログラム139は、受信されたデータに対する変更を識別する。なお更に、実施形態において、受信されたデータに対する識別された変更に基づいて、ストリーム最適化プログラム139は、データストリームもしくはオペレータまたはその組み合わせを調節する。なお更に、実施形態において、ストリーム最適化プログラム139はデータを処理する。なお更に、実施形態において、ストリーム最適化プログラム139は処理データの結果を送信する。
図2は、ビッグデータのリアルタイム分析において使用されるストリームデータプロセスの並列領域におけるデータのフローを動的に分散する方法を図示するワークフロー200のフローチャートである。一実施形態において、ワークフロー200の方法は、ストリーム最適化プログラム139によって実行される。代替的な実施形態において、ワークフロー200の方法は、ストリーム最適化プログラム139と共に動作する任意の他のプログラムによって実行される。実施形態において、コンピューティングデバイス130のユーザは、データストリームのアクセス時にワークフロー200を呼び出す。代替的な実施形態において、コンピューティングデバイス130のユーザは、データの1または複数のソースを識別するとき、ワークフロー200を呼び出す。
実施形態において、ストリーム最適化プログラム139は、データを受信する(段階202)。言い換えれば、ストリーム最適化プログラム139は、データを1または複数のデータソースから受信する。実施形態によれば、受信されたデータは、大量のストリームデータから構成され、データはほぼ一定のレートで受信される。実施形態において、ストリーム最適化プログラム139は、ネットワーク110を介してデータのストリームをデータソース120-Nから受信する。例えば、ダンはジェットエンジン製造会社のエンジニアであり、新しいエンジン開発を担当している。今日、ダンは新しいエンジンで飛行シミュレーションを実行しており、会社のサーバ上のプログラムは、3時間のシミュレーション中にエンジンをモニタリングする数百のセンサから数十テラバイトのデータを受信している。
本発明の実施形態によれば、ストリーム最適化プログラム139はデータフロー(段階204)を決定する。言い換えれば、ストリーム最適化プログラム139は、受信されたデータのデータフローレートを決定する。一実施形態において、データフローレートは、ほぼ一定であり、決定は、単純に特定の期間のデータ量である(例えば、テラバイト/時間)。別の実施形態において、データフローレートは、常に変化し、決定は、決定が下された時間の各時点における瞬間的なレートである。実施形態によれば、ストリーム最適化プログラム139は、データソース120-Nから受信されたデータのデータフローレートを決定する。例えば、会社のサーバ上のプログラムは、3時間のシミュレーション全体の予測される合計60テラバイトのデータについて、時間あたり20テラバイトのデータの凡そのデータフローレートを決定する。
実施形態において、ストリーム最適化プログラム139は、オペレータを初期化する(段階206)。言い換えれば、データフローレートの決定に応答して、ストリーム最適化プログラム139は、ストリームアプリケーション内のオペレータの数を初期化して、データを適切に処理する。低ボリューム/フローレートのデータは、高ボリューム/フローレートが必要とするより、必要とするオペレータが少ない。実施形態によれば、オペレータは、特定の結果を決定するためにデータに作用するストリームアプリケーションの機能部分である。ストリームアプリケーションは任意の数のオペレータを含み得る。実施形態において、ストリーム最適化プログラム139は、ストリームアプリケーション134内のオペレータ135の数を初期化する。例えば、会社のサーバ上のプログラムは、アプリケーションサーバ上の8個のオペレータを初期化して、ジェットエンジンに関連するシミュレーションデータの時間あたり20テラバイトを処理する。
本発明の実施形態によれば、ストリーム最適化プログラム139は、データをオペレータへ送信する(段階208)。言い換えれば、ストリーム最適化プログラム139は、受信されたデータを初期化されたオペレータへ処理のために送信する。一実施形態において、データはコンピューティングデバイス内において処理のために送信される。別の実施形態において、データはネットワークを介して1つのコンピューティングデバイスから(オペレータが位置する)別のコンピューティングデバイスへ処理のために送信される。実施形態によれば、コンピューティングデバイス130上のストリーム最適化プログラム139は、ストリームアプリケーション134内において、受信されたデータをオペレータ135へ送信する。例えば、会社のサーバ上のプログラムは、8個のオペレータが存在するアプリケーションサーバへエンジンシミュレーションデータを処理ために送信する。
いくつかの実施形態によれば、ストリーム最適化プログラム139は、システム/データをモニタリングする(段階210)。言い換えれば、ストリーム最適化プログラム139は、データ処理に影響を及ぼし得る任意の変更について、データのストリームを処理するコンピューティングシステムおよびデータストリームの両方をモニタリングする。実施形態において、ストリーム最適化プログラム139によってモニタリングされる項目は、これらに限定されないが、コンピューティングシステムのステータス全体、コンピューティングシステムにおける利用可能なコンピューティングリソース、コンピューティングシステム内の上述のリソースの利用率、ストリームアプリケーション内の初期化されたオペレータ、および、コンピューティングシステムへのデータのフローを含む。本発明の実施形態によれば、ストリーム最適化プログラム139は、変更について、コンピューティングデバイス130、データソース120-Nからのデータのフロー、および、ストリームアプリケーション134をモニタリングする。例えば、会社のサーバ上のプログラムは、任意の変更について、アプリケーションサーバおよびエンジンシミュレーションデータをモニタリングする。
本発明の実施形態によれば、ストリーム最適化プログラム139は変更を識別する(段階212)。言い換えれば、コンピューティングシステムおよびデータのモニタリングに応答して、ストリーム最適化プログラム139は変更を識別する。実施形態において、識別された変更は、データストリームを処理するコンピューティングシステム、および、データストリーム自体のうちの一方または両方である。ストリーム最適化プログラム139は、コンピューティングシステムにインストールされた、利用可能なシステムモニタリングを使用して、上述のシステムの健全性をモニタリングする。更に、ストリーム最適化プログラム139は、データ処理が遅いまたは停止するときを、システムまたはデータに対する変更の識別の一部として識別し得る。実施形態によれば、ストリーム最適化プログラム139は、コンピューティングデバイス130およびデータソース120-Nからデータのフローのうちの一方または両方に対する変更を識別する。例えば、会社のサーバ上のプログラムは、エンジンシミュレーションデータのフローレートが、決定された20テラバイト/時間から40テラバイト/時間に増加したと識別する。
実施形態において、ストリーム最適化プログラム139は調節を実行する(段階214)。言い換えれば、コンピューティングシステムおよび受信されたデータのうちの一方または両方に対する変更の識別に応答して、ストリーム最適化プログラム139は調節を実行して、識別された変更を補償する。実施形態によれば、ストリーム最適化プログラム139は、コンピューティングシステムに対する調節を実行し、オペレータへのデータの送信に対する調節を実行し、または、両方の調節を実行し得る。実施形態において、ストリーム最適化プログラム139は、コンピューティングデバイス130、および、コンピューティングデバイス130上のストリームアプリケーション134におけるデータソース120-Nからオペレータ135へのデータの送信のうちの一方または両方に対する調節を実行する。例えば、データフローのレートが2倍になることに応答して、会社のサーバ上のプログラムは、アプリケーションサーバにおける8個のオペレータを並列化(複製)し、結果として、合計16のオペレータとなる。例において、8ペアのオペレータがある。OP-1A~OP-8Aとして表され得る元の8個のオペレータは複製され、並列化されたオペレータOP-1B~OP-8Bが作成される。オペレータOP-1A~OP-1Bは、データに対して同一の操作または機能を実行し、OP-2AおよびOP-2Bは、同一の操作を実行し、オペレータの後続のペアの各々について、1つの個別のオペレータが、ペアにおける他方のオペレータと同様の方式で同一の操作を実行する。
上で説明されたオペレータの並列化に加えて、以下の段落では、ストリーム最適化プログラム139によって識別され得る本発明の他の実施形態、および、ストリーム最適化プログラム139による実施形態への適切な応答を説明する。ストリーム最適化プログラム139によって加えられる、ストリームアプリケーションの並列領域のサイズに対する、下で説明されるいかなる変更も、データの処理を妨害しない。
第1の追加の実施形態において、ストリーム最適化プログラム139は、データストリームを処理するためのコンピューティングリソースのサイズが変化したと識別し得る。例えば、中央処理装置の合計の能力が、1または複数のプロセッシングコアの喪失によって低減される場合、オペレータへのデータの送信は、ストリーム最適化プログラム139によって低減され得、その結果、データの処理が継続し得る。別の例において、データは、ストリーム最適化プログラム139によって、いくつかの他のチャネルより多くのコンピューティングリソース(例えば、プロセッサ能力、メモリ、ネットワーク帯域幅など)を含むチャネル(チャネルは複製されたオペレータのセットである)における1または複数のオペレータへルーティングされ得る。
第2の追加の実施形態において、ストリーム最適化プログラム139は、データストリームを処理するために利用可能なコンピューティングリソースの利用率に対する変更を識別し得る。例えば、データの処理において現在使用される、コンピューティングシステムにおいて利用可能なメモリが、より高い優先度のアプリケーションによって占有される場合、ストリーム最適化プログラム139は、データストリームの処理のためにメモリが再び利用可能となる時間まで、オペレータへのデータの送信を遅くする、または停止し得る。別の例において、特定のチャネルがより低いリソース利用率を有する場合、ストリーム最適化プログラム139は、他のチャネルよりも特定のチャネルへデータを送信し得る。
第3の追加の実施形態において、ストリーム最適化プログラム139は、いくらかの期間にわたって、コンピューティングシステムを通るデータのフローの好ましい状態である、一定のデータレートを達成するより、最高データレートを達成することが必要であると決定し得る。例えば、ストリーム最適化プログラム139が、異常な状況である、コンピューティングシステムへの電力供給の変動を識別する場合、ストリーム最適化プログラム139は、データの送信を可能な限り最高のレートに増加させ、電力供給に対する潜在的な中断の前にデータの処理を完了させ得る。代替的に、ストリーム最適化プログラム139は、一定レートでデータを送信することが有益である状況を決定し得る。上述の状況において、ストリーム最適化プログラム139は、そのような方式でデータのフローを調節することが可能である。
第4の追加の実施形態において、ストリーム最適化プログラム139は、1または複数のチャネルについて、データフローの抑制が必要であると決定し得る。例えば、コンピューティングリソースの一部がセキュリティ更新のためにオフラインにされる場合、ストリーム最適化プログラム139は、残りのチャネル/オペレータへのデータのフローを動的に抑制、または低減し得、その結果、処理が継続し得る。コンピューティングリソースが再度オンラインにされたとき、フローレートは、最適なレートに戻され得る。
第5の追加の実施形態において、ストリーム最適化プログラム139は、実際のデータの優先度キューイングが必要である状況を識別し得る。例えば、データがソーシャルメディアの調査のために処理されていて、かつ、即刻のヘルスケア問題に関連するデータが利用可能になった場合、ストリーム最適化プログラム139は、ヘルスケアデータがまず処理されて完了するように、ソーシャルメディアデータタプルより、ヘルスケアデータタプルの処理を優先化することが可能である。ヘルスケアデータを優先化することに加えて、ストリーム最適化プログラム139は、最高の利用可能なコンピューティングリソースを有するチャネルへ上述のデータを優先的に送信し得る。
第6の追加の実施形態において、ストリーム最適化プログラム139は、データが経時的に処理されているとき、動的な学習が可能である。例えば、ストリーム最適化プログラム139は、上で説明されたヘルスケアデータが常に、東部標準時の月曜の午後1時に利用可能になると学習し得る。それに応じて、ストリーム最適化プログラム139は、他のデータの処理を停止して、利用可能なヘルスケアデータの処理を算定する。ヘルスケアデータに対して十分な処理能力を確保した後に、ストリーム最適化プログラム139は、任意の他の利用可能なデータの処理を開始する。より高い優先度のデータが利用可能となる場合では、ストリーム最適化プログラム139は、ヘルスケアデータよりも、上述の高優先度データを処理するために、適切な調節を加えることが可能である。したがって、ストリーム最適化プログラム139は、機械学習技法を使用して、上で説明された負荷分散技法のどれが最良の結果を経時的に達成するかを決定することが可能であり、更に、その決定された負荷分散技法を適切な状況において適用することが可能である。
第7の追加の実施形態において、ストリーム最適化プログラム139は、フェイルオーバ状況およびフェイルバック状況の両方に応答することが可能である。フェイルオーバとは、処理アプリケーションまたはコンピューティングシステムの障害または異常終了時に冗長コンピューティングシステムに切り替えることである。フェイルバックとは、アプリケーションまたはコンピューティングシステムを前の動作状態に戻すプロセスである。フェイルオーバおよびフェイルバックは、高信頼性、および、ほぼ連続する利用可能性を必要とするコンピューティングシステムのための、災害復旧システムの一部である。フェイルオーバの場合において、ストリーム最適化プログラム139は、データの進行中の処理を他の利用可能なチャネルおよび冗長コンピューティングシステムに移行させることが可能である。フェイルバックの場合において、ストリーム最適化プログラム139は、初期のコンピューティングシステム上のデータ処理を戻す。更に、フェイルオーバの場合において、ストリーム最適化プログラム139は、データについてのクリティカルパス上のオペレータを動的に複製して、単一障害点を除去し得る。
第8の追加の実施形態において、ストリーム最適化プログラム139は、並列領域におけるオペレータの量を増加もしくは減少させる、またはその組み合わせを行うことによって、ストリーム処理アプリケーション内の並列領域のサイズを動的に変更する(すなわち、並列領域をサイズ変更する)ことが可能である。アプリケーションサーバ内のオペレータを並列化させて利用可能なオペレータを8から16に増加させる前の説明、ならびに、下の図3Aおよび図3Bの説明を参照されたい。本実施形態において、ストリーム最適化プログラム139はまた、処理されるデータのフローの低減に応答して、ストリームアプリケーションの並列領域におけるオペレータの数を低減する(すなわち減少させる)ことが可能である。
第9の追加の実施形態において、ストリーム最適化プログラム139は、並列領域のサイズ(すなわち幅)の変化を検出して、それに応答してデータレートを動的に低減することが可能である。例えば、オペレータを含む1または複数のノードが急に利用不可能になった場合、ストリーム最適化プログラム139は、残りのオペレータが中断なくデータを処理できるように、データのフローを低減することが可能である。
本発明の実施形態によれば、ストリーム最適化プログラム139はデータを処理する(段階216)。言い換えれば、チャネルもしくはデータフローまたはその組み合わせの調節の実行に応答して、ストリーム最適化プログラム139は、オペレータによるデータの下流の処理を可能にする。実施形態において、ストリーム最適化プログラム139によって実行される調節に基づいて、コンピューティングシステムにとって利用可能なもっとも効率的な方式で処理が生じる。実施形態によれば、ストリーム最適化プログラム139は、コンピューティングデバイス130上で、オペレータ135によるデータの処理を可能にする。例えば、会社のサーバ上のプログラムは、アプリケーションサーバ上の16のオペレータがエンジンシミュレーションデータを処理することを可能にする。
実施形態において、ストリーム最適化プログラム139は結果を送信する(段階218)。言い換えれば、ストリーム最適化プログラム139は、データ処理の完了時に、上述の処理の結果を目的地へ送信する。実施形態によれば、目的地は、ユーザ、追加の処理のための1または複数の他のアプリケーション、またはストレージのメモリであり得る。実施形態において、ストリーム最適化プログラム139は、処理されたデータの結果をコンピューティングデバイス130上のメモリ133に格納する。例えば、会社のサーバ上のプログラムは、処理されたエンジンシミュレーションデータを、ダンが利用するラップトップコンピュータへ送信し、その結果、ダンは、新しいデータを過去のシミュレーションデータと比較することによってデータを調査できる。
上で説明したプロセスは、本質的に反復的である。追加のデータが受信されるとき、プロセスは動的方式で繰り返し、もっとも効率的な方式でデータを処理する。これは、説明された負荷分散調節を実行するストリーム最適化プログラム139によって達成される。
図3Aは図1のストリームアプリケーション134内の第1並列領域の例300を図示する。図3Aは、データフロー310、ストリーム最適化プログラム139、並列領域320および出力330を含む。並列領域320は、オペレータ135-1およびオペレータ135-2を含むので、幅は2である。データフロー310のサイズおよびレートに起因して、オペレータ135-1およびオペレータ135-2だけが、例300のデータフロー310を効率的に処理するように要求される。データ処理の結果は出力330である。
図3Bは、図1のストリームアプリケーション134内の第2並列領域の例350を図示する。図3Bは、データフロー360、ストリーム最適化プログラム139、並列領域370および出力380を含む。並列領域370は、オペレータ135-1、オペレータ135-2、オペレータ135-3、およびオペレータ135-4を含むので、幅は4である。例350において、データフロー360は図3Aのデータフロー310の2倍である。したがって、ストリーム最適化プログラム139は、(図3Aにおける)元の並列領域320を動的に並列化(または複製)して並列領域370を作成するので、オペレータが2(すなわち、オペレータ135-1およびオペレータ135-2)から4(すなわち、オペレータ135-1、オペレータ135-2、オペレータ135-3、およびオペレータ135-4)に2倍になる。これにより、データフロー360の効率的な処理を可能にする。データ処理の結果は出力380である。
図4は、ストリーム最適化プログラム139を含むシステムの例であるコンピュータシステム400を図示する。コンピュータシステム400は、プロセッサ401、キャッシュ403、メモリ402、永続ストレージ405、通信ユニット407、入出力(I/O)インタフェース406、および通信ファブリック404を含む。通信ファブリック404は、キャッシュ403、メモリ402、永続ストレージ405、通信ユニット407、および入出力(I/O)インタフェース406の間に通信を提供する。通信ファブリック404は、データもしくは制御情報またはその組み合わせを、プロセッサ(例えば、マイクロプロセッサ、通信およびネットワークプロセッサなど)、システムメモリ、周辺デバイス、ならびにシステム内の他の任意のハードウェアコンポーネントの間で渡すように設計された、任意のアーキテクチャで実装することができる。例えば、通信ファブリック404は、1もしくは複数のバスまたはクロスバースイッチを用いて実装することができる。
メモリ402および永続ストレージ405はコンピュータ可読記憶媒体である。本実施形態では、メモリ402はランダムアクセスメモリ(RAM)を含む。一般に、メモリ402は、任意の好適な揮発性または不揮発性コンピュータ可読記憶媒体を含むことができる。キャッシュ403は、メモリ402からの最近アクセスされたデータ、および、最近アクセスされたデータに近いデータを保持することによってプロセッサ401のパフォーマンスを強化する高速メモリである。
本発明の実施形態を実践するために用いられるプログラム命令およびデータは、キャッシュ403を介した、それぞれのプロセッサ401のうちの1または複数による実行のために、永続ストレージ405およびメモリ402に格納され得る。実施形態では、永続ストレージ405は磁気ハードディスクドライブを含む。代替的に、または、磁気ハードディスクドライブに加えて、永続ストレージ405は、ソリッドステートハードドライブ、半導体ストレージデバイス、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、または、プログラム命令もしくはデジタル情報を格納可能である任意の他のコンピュータ可読記憶媒体を含み得る。
永続ストレージ405によって使用される媒体はまた、リムーバブルであってもよい。例えば、リムーバブルハードドライブが永続ストレージ405に使用されてもよい。他の例は、永続ストレージ405の一部でもある別のコンピュータ可読記憶媒体上に転送するために、ドライブに挿入される、光学および磁気ディスク、サムドライブ、ならびにスマートカードを含む。
通信ユニット407は、これらの例において、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例において、通信ユニット407は、1または複数のネットワークインタフェースカードを含む。通信ユニット407は、物理的通信リンクおよび無線通信リンクのいずれかまたは両方の使用を通じた通信を提供してよい。本発明の実施形態を実践するのに使用されるプログラム命令およびデータは、通信ユニット407を通して、永続ストレージ405にダウンロードされてもよい。
I/Oインタフェース406は、各コンピュータシステムに接続されてもよい、他のデバイスとのデータの入力および出力を可能にする。例えば、I/Oインタフェース406は、キーボード、キーパッド、タッチスクリーン、もしくは何らかの他の好適な入力デバイス、またはその組み合わせなどの外部デバイス408への接続を提供し得る。外部デバイス408は、例えばサムドライブ、ポータブル光ディスクまたは磁気ディスク、およびメモリカードなどの、ポータブルコンピュータ可読記憶媒体も含み得る。本発明の実施形態を実践するのに使用されるソフトウェアおよびデータは、かかるポータブルコンピュータ可読記憶媒体に格納することができ、I/Oインタフェース406を介して永続ストレージ405にロードすることができる。I/Oインタフェース406はまた、ディスプレイ409に接続する。
ディスプレイ409は、データをユーザに対して表示するメカニズムを提供し、例えば、コンピュータモニタであってもよい。
本発明は、任意の可能な技術詳細レベルで統合化されたシステム、方法、もしくはコンピュータプログラム製品、またはその組み合わせであり得る。コンピュータプログラム製品は、本発明の態様をプロセッサに実行させるためにコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持および格納し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、または前述したものの任意の適した組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、次のもの、すなわち、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、機械的にエンコードされたデバイス、例えば、パンチカードまたは命令を記録した溝内の隆起構造、および前述したものの任意の適した組み合わせを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波路または他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号等、それ自体が一時的な信号であると解釈されるべきではない。
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてもよく、あるいは、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくは無線ネットワーク、またはその組み合わせを介して、外部コンピュータまたは外部ストレージデバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバ、またはその組み合わせを備え得る。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データであってもよく、Smalltalk(登録商標)またはC++等のようなオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語のような手続き型プログラミング言語を含む1または複数のプログラミング言語の任意の組み合わせで記述したソースコードまたはオブジェクトコードであってもよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で全体を実行すること、ユーザのコンピュータ上で一部分を実行することができ、ユーザのコンピュータ上で一部分を、遠隔のコンピュータ上で一部分を実行すること、または、遠隔のコンピュータもしくはサーバ上で全体を実行することができる。後者のシナリオでは、遠隔のコンピュータは、ローカルエリアネットワーク(LAN)もしくはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはその接続は、外部コンピュータに対して(例えば、インターネットサービスプロバイダを使用してインターネットを介して)行われてもよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズしてよい。
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその組み合わせを参照して、説明されている。フローチャート図もしくはブロック図またはその組み合わせの各々のブロックと、フローチャート図もしくはブロック図またはその組み合わせにおけるブロックの組み合わせとが、コンピュータ可読プログラム命令によって実装できることが理解されよう。
これらのコンピュータ可読プログラム命令を汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供して機械を生成してよく、それにより、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図、またはその組み合わせの単数または複数のブロックで指定された機能/動作を実装する手段を作成するようになる。これらのコンピュータ可読プログラム命令は、命令を格納したコンピュータ可読記憶媒体が、フローチャートもしくはブロック図またはその組み合わせの単数のブロックまたは複数のブロックにおいて指定されている機能/動作の態様を実装する命令を含む製品を備えるように、コンピュータ、プログラマブルデータ処理装置、もしくは他のデバイスまたはその組み合わせに特定の方式で機能するよう指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または、他のデバイスにロードして、コンピュータ、他のプログラマブル装置、または、他のデバイス上で一連の動作段階を実行させることでコンピュータ実装プロセスを作ることもでき、これにより、コンピュータ、他のプログラマブル装置、または、他のデバイス上で実行される命令が、フローチャートもしくはブロック図の、またはその組み合わせの1または複数のブロックで指定される機能/動作を実装するようになる。
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法、およびコンピュータプログラム製品の考えられる実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実装する1または複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表し得る。いくつかの代替的な実装において、ブロックに記載された機能は、図に記載された順序から外れて生じてもよい。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行されてもよいし、またはブロックは、関与する機能に依存して逆の順序で実行される場合もあり得る。ブロック図もしくはフローチャート図、またはその組み合わせの各ブロック、ならびにブロック図もしくはフローチャート図、またはその組み合わせにおけるブロックの組み合わせは、指定された機能もしくは動作を実行するか、または専用ハードウェアとコンピュータ命令との組み合わせを実行する専用ハードウェアベースシステムによって実装することができることにも留意されたい。
本明細書に記載されるプログラムは、本発明の特定の実施形態においてそれらが実装される用途に基づいて識別される。しかしながら、本明細書における任意の特定のプログラム名称は、単に便宜上の目的で使用され、したがって、本発明は、そのような名称によって識別もしくは示唆される、またはその組み合わせの任意の特定の用途のみにおいて使用することに限定されるべきでないことが理解されるべきである。

Claims (20)

  1. 方法であって、
    データのフローを受信することに応答して、1または複数のコンピュータプロセッサによって、前記データのフローのストリーム処理のために、分散データ処理システムに含まれる並列領域における1または複数のオペレータを初期化する段階と、
    前記データのフローの変化、または、前記分散データ処理システムの変化を識別することに応答して、1または複数のコンピュータプロセッサによって、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する段階と、
    1または複数のコンピュータプロセッサによって、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のうちの前記動的に調節された1つを介して、前記データのフローを処理する段階と
    を備える方法。
  2. 1または複数のコンピュータプロセッサによって、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する前記段階は、
    1または複数のコンピュータプロセッサによって、前記並列領域における前記1または複数のオペレータを並列化することによって前記並列領域を動的にサイズ変更する段階を含み、前記並列領域を動的にサイズ変更する前記段階は、
    前記データのフローの増加に応答して、前記並列領域の前記サイズを増加させる段階と、
    前記データのフローの減少に応答して、前記並列領域の前記サイズを減少させる段階と
    を含む、請求項1に記載の方法。
  3. 1または複数のコンピュータプロセッサによって、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する前記段階は、
    1または複数のコンピュータプロセッサによって、前記並列領域における前記1または複数のオペレータの間の前記データのフローを動的に調節して、前記データのフローの負荷を分散する段階を含む、請求項1または2に記載の方法。
  4. 1または複数のコンピュータプロセッサによって、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する前記段階は、
    1または複数のコンピュータプロセッサによって、前記並列領域への最高データレートを達成する段階を含む、請求項1から3のいずれか一項に記載の方法。
  5. 1または複数のコンピュータプロセッサによって、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する前記段階は、
    前記分散データ処理システムに含まれる1または複数のコンピューティングリソースの低減に応答して、1または複数のコンピュータプロセッサによって、前記分散データ処理システムにおける前記データのフローを動的に抑制する段階を含む、請求項1から4のいずれか一項に記載の方法。
  6. 1または複数のコンピュータプロセッサによって、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する前記段階は、
    より高い優先度のデータのフローを受信することに応答して、1または複数のコンピュータプロセッサによって、1または複数の他のデータのフローよりも、前記より高い優先度のデータのフローを含む1または複数のデータタプルをキューイングする段階を含む、請求項1から5のいずれか一項に記載の方法。
  7. 1または複数のコンピュータプロセッサによって、複数の分散データ処理シナリオに基づいて、機械学習技法を介して、複数の負荷分散方法を動的に学習する段階と、
    1または複数のコンピュータプロセッサによって、特定の分散データ処理シナリオのために、前記特定の分散データ処理シナリオにおいて前記データのフローをもっとも良く処理することが可能である、学習された前記複数の負荷分散方法のうち1つを適用する段階と
    を更に備える、請求項1から6のいずれか一項に記載の方法。
  8. 1または複数のコンピュータプロセッサによって、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する前記段階は、
    フェイルオーバに応答して、1または複数のコンピュータプロセッサによって、前記データのフローを冗長分散データ処理システムへ送信する段階と、
    フェイルバックに応答して、1または複数のコンピュータプロセッサによって、前記データのフローを前記分散データ処理システムに戻す段階と
    を含む、請求項1から7のいずれか一項に記載の方法。
  9. 1または複数のコンピュータプロセッサによって、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する前記段階は、
    前記並列領域におけるオペレータの量の変化に応答して、1または複数のコンピュータプロセッサによって、前記並列領域への前記データのフローを動的に調節する段階であって、
    前記オペレータの量の増加に応答して、前記データのフローを増加させ、
    前記オペレータの量の減少に応答して、前記データのフローを減少させる、
    段階を含む、請求項1から8のいずれか一項に記載の方法。
  10. プロセッサに、
    データのフローを受信することに応答して、前記データのフローのストリーム処理のために、分散データ処理システムに含まれる並列領域における1または複数のオペレータを初期化する手順と、
    前記データのフローの変化、または、前記分散データ処理システムの変化を識別することに応答して、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する手順と、
    前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの前記動的に調節された1つを介して前記データのフローを処理する手順と
    を実行させるためのコンピュータプログラム。
  11. 前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する手順は、
    前記並列領域における前記1または複数のオペレータを並列化することによって前記並列領域を動的にサイズ変更する手順を含み、前記並列領域を動的にサイズ変更する手順は、
    前記データのフローの増加に応答して、前記並列領域の前記サイズを増加させる手順と、
    前記データのフローの減少に応答して、前記並列領域の前記サイズを減少させる手順と
    を含む、請求項10に記載のコンピュータプログラム。
  12. 前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する手順は、
    前記並列領域における前記1または複数のオペレータの間の前記データのフローを動的に調節して前記データのフローの負荷を分散する手順を含む、請求項10または11に記載のコンピュータプログラム。
  13. 前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する手順は、
    前記並列領域への最高データレートを達成する手順を含む、請求項10から12のいずれか一項に記載のコンピュータプログラム。
  14. 前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する手順は、
    前記分散データ処理システムに含まれる1または複数のコンピューティングリソースの低減に応答して、前記分散データ処理システムにおける前記データのフローを動的に抑制する手順を含む、請求項10から13のいずれか一項に記載のコンピュータプログラム。
  15. 前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する手順は、
    より高い優先度のデータのフローを受信することに応答して、1または複数の他のデータのフローよりも、前記より高い優先度のデータのフローを含む1または複数のデータタプルをキューイングする手順を含む、請求項10から14のいずれか一項に記載のコンピュータプログラム。
  16. 前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する手順は、
    複数の分散データ処理シナリオに基づいて、機械学習技法を介して、複数の負荷分散方法を動的に学習する手順と、
    特定の分散データ処理シナリオのために、前記特定の分散データ処理シナリオにおいて前記データのフローをもっとも良く処理することが可能である、学習された前記複数の負荷分散方法の1つを適用する手順と
    を含む、請求項10から15のいずれか一項に記載のコンピュータプログラム。
  17. 前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する手順は、
    フェイルオーバに応答して、前記データのフローを冗長分散データ処理システムへ送信する手順と、
    フェイルバックに応答して、前記データのフローを前記分散データ処理システムに戻す手順と
    を含む、請求項10から16のいずれか一項に記載のコンピュータプログラム。
  18. 前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節する手順は、
    前記並列領域におけるオペレータの量の変化に応答して、前記データのフローを前記並列領域に動的に調節する手順であって、
    前記オペレータの量の増加に応答して、前記データのフローが増加され、
    前記オペレータの量の減少に応答して、前記データのフローが減少される、
    手順を含む、請求項10から17のいずれか一項に記載のコンピュータプログラム。
  19. コンピュータシステムであって、前記コンピュータシステムは、
    1または複数のコンピュータプロセッサと、
    1または複数のコンピュータ可読記憶媒体と、
    前記1または複数のコンピュータプロセッサのうちの少なくとも1つによる実行のために、前記1または複数のコンピュータ可読記憶媒体に格納されたプログラム命令と
    を備え、前記プログラム命令は、
    データのフローを受信することに応答して、前記データのフローのストリーム処理のために、分散データ処理システムに含まれる並列領域における1または複数のオペレータを初期化するためのプログラム命令と、
    前記データのフローの変化、または、前記分散データ処理システムの変化を識別することに応答して、前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節するためのプログラム命令と、
    前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のうちの前記動的に調節された1つを介して、前記データのフローを処理するためのプログラム命令と
    を含む、コンピュータシステム。
  20. 前記データのフロー、および、前記分散データ処理システムに含まれる前記並列領域のサイズのうちの少なくとも1つを動的に調節するための前記プログラム命令は、
    前記並列領域における前記1または複数のオペレータを並列化することによって前記並列領域を動的にサイズ変更するプログラム命令を含み、前記並列領域を動的にサイズ変更することは、
    前記データのフローの増加に応答して、前記並列領域の前記サイズを増加させること、および、
    前記データのフローの減少に応答して、前記並列領域の前記サイズを減少させること
    を含む、請求項19に記載のコンピュータシステム。
JP2023500438A 2020-07-22 2021-07-20 ストリーム並列領域における負荷分散 Pending JP2023534171A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/935,427 US11640402B2 (en) 2020-07-22 2020-07-22 Load balancing in streams parallel regions
US16/935,427 2020-07-22
PCT/CN2021/107323 WO2022017372A1 (en) 2020-07-22 2021-07-20 Load balancing in streams parallel regions

Publications (1)

Publication Number Publication Date
JP2023534171A true JP2023534171A (ja) 2023-08-08

Family

ID=79688272

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023500438A Pending JP2023534171A (ja) 2020-07-22 2021-07-20 ストリーム並列領域における負荷分散

Country Status (6)

Country Link
US (1) US11640402B2 (ja)
JP (1) JP2023534171A (ja)
CN (1) CN116249964A (ja)
DE (1) DE112021003167T5 (ja)
GB (1) GB2612730A (ja)
WO (1) WO2022017372A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11640402B2 (en) 2020-07-22 2023-05-02 International Business Machines Corporation Load balancing in streams parallel regions
CN115277652B (zh) * 2022-06-29 2024-03-22 北京百度网讯科技有限公司 基于推理服务的流媒体处理方法、装置、电子设备

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6834358B2 (en) * 2001-03-28 2004-12-21 Ncr Corporation Restartable database loads using parallel data streams
US7613848B2 (en) 2006-06-13 2009-11-03 International Business Machines Corporation Dynamic stabilization for a stream processing system
US20110083046A1 (en) * 2009-10-07 2011-04-07 International Business Machines Corporation High availability operator groupings for stream processing applications
US20110314019A1 (en) 2010-06-18 2011-12-22 Universidad Politecnica De Madrid Parallel processing of continuous queries on data streams
US8856374B2 (en) * 2010-11-30 2014-10-07 Hstreaming, Inc. Methods and systems for reconfiguration and repartitioning of a parallel distributed stream process
US8959313B2 (en) * 2011-07-26 2015-02-17 International Business Machines Corporation Using predictive determinism within a streaming environment
US8572051B1 (en) * 2012-08-08 2013-10-29 Oracle International Corporation Making parallel execution of structured query language statements fault-tolerant
US9170794B2 (en) * 2012-08-28 2015-10-27 International Business Machines Corporation Automatic exploitation of data parallelism in streaming applications
US9106391B2 (en) * 2013-05-28 2015-08-11 International Business Machines Corporation Elastic auto-parallelization for stream processing applications based on a measured throughput and congestion
US10635644B2 (en) 2013-11-11 2020-04-28 Amazon Technologies, Inc. Partition-based data stream processing framework
CN103634394B (zh) 2013-11-28 2016-08-17 中国科学院信息工程研究所 一种面向数据流处理的弹性可扩展资源管理方法及系统
US9329858B2 (en) 2014-09-30 2016-05-03 Linkedin Corporation Managing access to resource versions in shared computing environments
US10135737B2 (en) 2014-09-30 2018-11-20 Nicira, Inc. Distributed load balancing systems
US9619266B2 (en) * 2014-10-10 2017-04-11 International Business Machines Corporation Tearing down virtual machines implementing parallel operators in a streaming application based on performance
US9456014B2 (en) 2014-12-23 2016-09-27 Teradata Us, Inc. Dynamic workload balancing for real-time stream data analytics
US20160188376A1 (en) 2014-12-26 2016-06-30 Universidad De Santiago De Chile Push/Pull Parallelization for Elasticity and Load Balance in Distributed Stream Processing Engines
CN105022671A (zh) 2015-07-20 2015-11-04 中国科学院计算技术研究所 一种用于流式数据并行处理的负载均衡方法
US9785507B2 (en) * 2015-07-30 2017-10-10 International Business Machines Corporation Restoration of consistent regions within a streaming environment
US10303695B2 (en) * 2015-10-21 2019-05-28 Oracle International Corporation Query decomposition for scalability of continuous query processing
US9535763B1 (en) * 2015-11-30 2017-01-03 International Business Machines Corporation System and method for runtime grouping of processing elements in streaming applications
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
US10523724B2 (en) * 2016-05-10 2019-12-31 International Business Machines Corporation Dynamic stream operator fission and fusion with platform management hints
US10671636B2 (en) 2016-05-18 2020-06-02 Korea Electronics Technology Institute In-memory DB connection support type scheduling method and system for real-time big data analysis in distributed computing environment
KR101867220B1 (ko) 2017-02-23 2018-06-12 전자부품연구원 스트리밍 모델 동시 지원 및 스트림 데이터에 따라 자동선택 가능한 실시간 스트림 처리방법 및 장치
US10303505B2 (en) * 2016-05-19 2019-05-28 International Business Machines Corporation Adjusting a computing environment for processing a data stream with dummy tuples
US10572276B2 (en) * 2016-09-12 2020-02-25 International Business Machines Corporation Window management based on a set of computing resources in a stream computing environment
US10341189B2 (en) * 2016-09-22 2019-07-02 International Business Machines Corporation Operator fusion management in a stream computing environment
CN106844483A (zh) 2016-12-23 2017-06-13 航天星图科技(北京)有限公司 一种日志数据流处理方法
CN108241525A (zh) 2016-12-23 2018-07-03 航天星图科技(北京)有限公司 一种多节点任务动态控制方法
US10574585B2 (en) * 2017-01-07 2020-02-25 International Business Machines Corporation Resource usage management in a stream computing environment
CN106648904B (zh) 2017-01-09 2020-06-12 大连理工大学 一种流式数据处理自适应速率控制方法
US10185745B2 (en) * 2017-03-16 2019-01-22 International Business Machines Corporation Managing a stream computing environment using a projected database object
US20180268001A1 (en) * 2017-03-16 2018-09-20 International Business Machines Corporation Managing a database management system using a set of stream computing data
US10601681B2 (en) * 2017-03-20 2020-03-24 International Business Machines Corporation Optimizing streaming graph topology based on service level agreement
US11102256B2 (en) * 2017-03-24 2021-08-24 International Business Machines Corporation System and method for dynamic cloud formations for stream computing
US10834177B2 (en) * 2017-05-08 2020-11-10 International Business Machines Corporation System and method for dynamic activation of real-time streaming data overflow paths
CN108450033B (zh) * 2017-05-31 2020-12-15 华为技术有限公司 跨平台流式数据流
WO2019084465A1 (en) * 2017-10-27 2019-05-02 Streamsimple, Inc. CONTINUOUS DIFFUSION MICRO-SERVICES FOR FLOW PROCESSING APPLICATIONS
US10691489B2 (en) * 2018-01-29 2020-06-23 International Business Machines Corporation Managing the processing of streamed data in a data streaming application using query information from a relational database
US10761901B2 (en) * 2018-06-28 2020-09-01 International Business Machines Corporation Dynamic runtime workload balancing in a distributed computing environment
WO2020041872A1 (en) * 2018-08-30 2020-03-05 Streamworx.Ai Inc. Systems, methods and computer program products for scalable, low-latency processing of streaming data
US11533391B2 (en) * 2019-06-05 2022-12-20 Microsoft Technology Licensing, Llc State replication, allocation and failover in stream processing
US11640402B2 (en) 2020-07-22 2023-05-02 International Business Machines Corporation Load balancing in streams parallel regions

Also Published As

Publication number Publication date
CN116249964A (zh) 2023-06-09
US20220027371A1 (en) 2022-01-27
US11640402B2 (en) 2023-05-02
GB2612730A (en) 2023-05-10
GB202301820D0 (en) 2023-03-29
WO2022017372A1 (en) 2022-01-27
DE112021003167T5 (de) 2023-05-11

Similar Documents

Publication Publication Date Title
US10007580B2 (en) Assigning storage locations based on a graph structure of a workload
US9942353B2 (en) Management of connections within a messaging environment based on the statistical analysis of server responsiveness
JP2021099886A (ja) イベント引数抽出方法、装置及び電子デバイス
WO2022017372A1 (en) Load balancing in streams parallel regions
US11574019B2 (en) Prediction integration for data management platforms
US11010203B2 (en) Fusing and unfusing operators during a job overlay
US11803374B2 (en) Monolithic computer application refactoring
JP2022543994A (ja) 分散処理システムのリソース評価方法、システム、プログラム
US20240028354A1 (en) Image pattern matching to robotic process automations
WO2022089199A1 (en) Dynamic replacement of degrading processing elements in streaming applications
US20200026605A1 (en) Controlling processing elements in a distributed computing environment
US12086112B2 (en) Processing large machine learning datasets
US10693736B2 (en) Real time simulation monitoring
US20220067214A1 (en) Deleting content from temporary memory
US20160217126A1 (en) Text classification using bi-directional similarity
US10990413B2 (en) Mainframe system structuring
WO2022037231A1 (en) Hybrid ensemble model leveraging edge and server side inference
US20210157616A1 (en) Context based transformation of content
US11153404B2 (en) Client-server workload sharing
US10078545B2 (en) Resilient analytical model in a data streaming application
US20240330072A1 (en) Systems and methods for tracing cloud service costs
US20220164341A1 (en) Displaying data using granularity classification
US12039299B2 (en) Computer process management
US10891354B2 (en) Categorizing and processing time-series data
US20220091912A1 (en) Just in time assembly of transactions

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231212