(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023156210
(43)【公開日】2023-10-24
(54)【発明の名称】データ処理管理システム、データ処理管理方法
(51)【国際特許分類】
G06F 9/48 20060101AFI20231017BHJP
【FI】
G06F9/48 300C
G06F9/48 300Z
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022065955
(22)【出願日】2022-04-12
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】久恒 泰地
(72)【発明者】
【氏名】齊藤 信一郎
(57)【要約】
【課題】ストリーム処理内に分岐命令がある場合において、優先したい処理のスループット低下を防止する。
【解決手段】
データ処理管理システムは、分岐命令を有するストリーム処理の処理記述を入力としてキューを配備するキュー配備システムを備える。キュー配備システムは、処理記述に対し優先的に実行する処理を指定し、分岐命令後の各処理におけるスループットを計測し、分岐命令後の各処理を実行する割合である分岐割合を取得する。そして、キュー配備システムは、前記スループットと前記分岐割合を用いて、分岐命令と前記分岐命令後の処理の間にキューを配備する場合の配備コストを、分岐命令後の各処理の組み合わせ別に算出し、分岐命令後の処理のうちで、優先的な処理のスループット低下を防ぐキューの配備パタンを出力する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
データ処理管理システムであって、
前記データ処理管理システムは、
分岐命令を有するストリーム処理の処理記述を入力としてキューを配備するキュー配備システムを備え、
前記キュー配備システムは、
前記処理記述に対し優先的に実行する処理を指定し、
前記分岐命令後の各処理におけるスループットを計測し、
前記分岐命令後の各処理を実行する割合である分岐割合を取得し、
前記スループットと前記分岐割合を用いて、前記分岐命令と前記分岐命令後の処理の間にキューを配備する場合の配備コストを、前記分岐命令後の各処理の組み合わせ別に算出し、
前記分岐命令後の処理のうちで、優先的な処理のスループット低下を防ぐキューの配備パタンを出力する、
ことを特徴とするデータ処理管理システム。
【請求項2】
請求項1に記載のデータ処理管理システムであって、
前記キュー配備システムは、
有限個のプロセッサを有し、ストリーム形式に入力されたデータを処理記述に基づいてプロセッサが処理するストリーム処理システムと接続され、
前記キュー配備システムは、
前記ストリーム処理システムから処理記述を取得する、
ことを特徴とするデータ処理管理システム。
【請求項3】
請求項2に記載のデータ処理管理システムであって、
前記キュー配備システムは、
前記配備コストに基づいて、前記のキューの配備パタンよりキューを配備する箇所を決定し、
処理記述を分割し、キューを配備する、
ことを特徴とするデータ処理管理システム。
【請求項4】
請求項1に記載のデータ処理管理システムであって、
前記キュー配備システムは、
単位時間あたりのデータ流入量、ストリーム動作するプロセッサ数を更に用いて、前記配備コストを算出する、
ことを特徴とするデータ処理管理システム。
【請求項5】
請求項4に記載のデータ処理管理システムであって、
前記キュー配備システムは、
計測したスループット、前記分岐割合、前記データ流入量、および、前記プロセッサ数に基づく待ち行列演算により、キューの配備パタン別の配備コストをまとめたキュー配備パタンテーブルを生成する、
ことを特徴とするデータ処理管理システム。
【請求項6】
請求項1に記載のデータ処理管理システムであって、
前記キュー配備システムは、
分岐命令後の各処理におけるスループットの他に、キューへデータを転送した際のスループットを計測する、
ことを特徴とするデータ処理管理システム。
【請求項7】
請求項1に記載のデータ処理管理システムであって、
前記キュー配備システムは、
前記分岐割合の取得にあたって、分岐先の各処理が単位時間あたりどれだけ稼働するかを計測する、
ことを特徴とするデータ処理管理システム。
【請求項8】
請求項1に記載のデータ処理管理システムであって、
ユーザに情報を提示するユーザ出力部を備え、
前記キュー配備システムは、
キューの配備パタンに基づいてキューを配備し、
前記ユーザ出力部は、
キューを配備した状態に関する情報を表示する、
ことを特徴とするデータ処理管理システム。
【請求項9】
請求項1に記載のデータ処理管理システムであって、
ユーザが情報を入力するユーザ入力部を備え、
前記キュー配備システムは、
前記ユーザ入力部から処理記述を取得する、
ことを特徴とするデータ処理管理システム。
【請求項10】
請求項9に記載のデータ処理管理システムであって、
前記ユーザ入力部は、
処理を示すノードをエッジで接続することにより、処理記述を入力する画面を出力する、
ことを特徴とするデータ処理管理システム。
【請求項11】
請求項10に記載のデータ処理管理システムであって、
前記ユーザ入力部は、
処理を示すノードが選択された場合、前記ノードが示す処理について優先的な処理を行うことを指定する画面を出力する、
ことを特徴とするデータ処理管理システム。
【請求項12】
プロセッサを用いて行うデータ処理管理方法であって、
分岐命令を有するストリーム処理の処理記述を取得し、
前記処理記述に対し優先的に実行する処理を指定し、
前記分岐命令後の各処理におけるスループットを計測し、
前記分岐命令後の各処理を実行する割合である分岐割合を取得し、
前記スループットと前記分岐割合を用いて、前記分岐命令と前記分岐命令後の処理の間にキューを配備する場合の配備コストを、前記分岐命令後の各処理の組み合わせ別に算出し、
前記分岐命令後の処理のうちで、優先的な処理のスループット低下を防ぐキューの配備パタンを出力し、
前記のキューの配備パタンを参照してキューを配備する、
ことを特徴とするデータ処理管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理管理システム、および、データ処理管理方法に関する。
【背景技術】
【0002】
産業界においてIoT(Internet of Things)を活用した業務改善、業務可視化が進められている。特に製造業においてはリアルタイムに工場内のセンサやログデータを収集、整理、加工、分析し新たな価値を生み出すデータ分析利活用が加速中である。リアルタイムなデータ収集を実現するためには、センサより受信したデータを順次整形しデータ分析のための形式へ変換した後にデータベースへ出力するストリーム処理が有効である。
【0003】
ここで、特許文献1は、複数のプロセッシングエレメントによるデータ処理に関する技術を開示する。すなわち、特許文献1は、「それぞれが、割り当てられた単位命令列を一時記憶する一時記憶部を有し、それぞれの前記一時記憶部に記憶された前記単位命令列に含まれる命令を実行可能な複数のプロセッシングエレメントと、アセンブリ言語以下のレベルの命令列であるプログラムを、途中に分岐命令を含まない命令列であって、分岐先の先頭命令を始端とし、分岐命令を終端とする命令列である前記単位命令列に分割し、分割した当該単位命令列を前記複数のプロセッシングエレメントのそれぞれに逐次割り当て、割り当てた前記単位命令列を前記複数のプロセッシングエレメントに並列実行させる実行管理部とを備えることを特徴とするプロセッサ。」を開示する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に記載の手法では、命令列を命令単位で分割し、一時記憶を可能とするキューを単位命令列前へ配置するが、ストリーム処理において一時記憶のキューの活用はそれ自体がキューシステムへのデータの転送及び読み込みとなるため遅延の要因になりえる。ここで、経済的により効率の良い処理を行うためには、リアルタイムな可視化機能へ出力する分岐処理など、スループット遅延が致命的となる重要な分岐処理はキューを配置せずに一つのストリーム処理として扱い、求められるスループット速度を確保する必要があると考えられる。また、重要な分岐処理に対してのスループット低下を防ぐためにはワーカー数と分岐先の処理のスループット性能を考慮し、ボトルネックとなる高負荷な分岐処理に対して優先してキューを挿入しなければならないと考えられる。
【0006】
こうした観点から、本発明は、ストリーム処理内に分岐命令がある場合において、優先したい処理のスループット低下を防止することができるデータ処理管理システムおよびデータ処理管理方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第1の態様によれば、下記のデータ処理管理システムが提供される。データ処理管理システムは、分岐命令を有するストリーム処理の処理記述を入力としてキューを配備するキュー配備システムを備える。キュー配備システムは、処理記述に対し優先的に実行する処理を指定し、分岐命令後の各処理におけるスループットを計測し、分岐命令後の各処理を実行する割合である分岐割合を取得する。キュー配備システムは、前記スループットと前記分岐割合を用いて、分岐命令と前記分岐命令後の処理の間にキューを配備する場合の配備コストを、分岐命令後の各処理の組み合わせ別に算出し、分岐命令後の処理のうちで、優先的な処理のスループット低下を防ぐキューの配備パタンを出力する。
【0008】
本発明の第2の態様によれば、下記のデータ処理管理方法が提供される。データ処理管理方法は、プロセッサを用いて行う方法である。データ処理管理方法は、分岐命令を有するストリーム処理の処理記述を取得し、処理記述に対し優先的に実行する処理を指定し、分岐命令後の各処理におけるスループットを計測し、分岐命令後の各処理を実行する割合である分岐割合を取得し、前記スループットと前記分岐割合を用いて、分岐命令と前記分岐命令後の処理の間にキューを配備する場合の配備コストを、分岐命令後の各処理の組み合わせ別に算出し、分岐命令後の処理のうちで、優先的な処理のスループット低下を防ぐキューの配備パタンを出力し、キューの配備パタンを参照してキューを配備する。
【発明の効果】
【0009】
本発明によれば、ストリーム処理内に分岐命令がある場合において、優先したい処理のスループット低下を防止することができるデータ処理管理システムおよびデータ処理管理方法が提供される。
【図面の簡単な説明】
【0010】
【
図1】本発明を適用できる一般的なストリーム処理の構成の一例を示した図である。
【
図2】ストリーム処理システム上のワーカーの処理手順の一例を示す図である。
【
図3】ストリーム処理システムへ入力するデータの一例を示すコードである。
【
図5】ストリーム処理システムが出力するデータの一例を示すコードである。
【
図6】ストリーム処理システムのワーカー管理処理のフローの一例を示す図である。
【
図7】本発明に関するシステムと、関連するストリーム処理システムの関係性を示す図である。
【
図8】本発明に関するシステムを構成するハードウェアの一例を示す図である。
【
図9】本発明に関するシステムに対してユーザ入力部で処理記述と優先処理を指定する入力画面を示す図である。
【
図10】本発明に関するシステムが処理記述を読み込み、キューを配備するまでのフローの一例を示す図である。
【
図11】本発明に関するシステムへ入力する処理記述の一例を示す図である。
【
図12】本発明に関するシステムが持つ処理スループットテーブルの一例を示す図である。
【
図13】本発明に関するシステムが持つキュースループットテーブルの一例を示す図である。
【
図14】本発明に関するシステムが持つ分岐割合テーブルの一例を示す図である。
【
図15】本発明に関するシステムが持つ管理テーブルに対してユーザ入力部で入力する画面の一例を示す図である。
【
図16】本発明に関するシステムが持つ演算情報テーブルの一例を示す図である。
【
図17】本発明に関するシステムが持つキュー配備パタンテーブルの一例を示す図である。
【
図18】本発明に関するシステムが出力した処理記述とキュー配備を表示する一例を示す図である。
【
図19】本発明に関するシステムが出力するテーブルを表示するテーブル表示部の一例を示す図である。
【
図20】本発明に関するシステムが、稼働中のストリーム処理に対して計測を行うフローの一例を示す図である。
【
図21】ステップ1005における演算の一例を示したフローチャートである。
【
図22】本発明に関するシステムが入力された処理記述をキューによって分割する時のパタンの1つを示した図である。
【
図23】本発明に関するシステムが入力された処理記述をキューによって分割する時のパタンの1つを示した図である。
【
図24】本発明に関するシステムが入力された処理記述をキューによって分割する時のパタンの1つを示した図である。
【
図25】本発明に関するシステムの構成例の1つを示した図である。
【
図26】
図25に示す構成例におけるキュー配備システムの処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0011】
先ず、
図1を参照しながら、一般的なストリーム処理について説明する。
図1は、一般的なストリーム処理の構成例を示す。
【0012】
ストリーム処理システム108は、演算部109にワーカー110を複数備える。ワーカーは当該システムの稼働するハードウェア上に搭載されるプロセッサ数によって決定され、処理記述111で記述された処理を実行する。演算部109はワーカー110数分の処理を並列に実行することができる。ワーカーは、処理が割り当てられるとその処理を完了するまで他の処理は割り当てられず、処理を完了した後にフリー状態となる。フリー状態のワーカーはデータが入力された際に新規に処理が割り当てられる。
【0013】
図2にワーカーが動作する際の一般的なフローチャートを示す。フリー状態のワーカーは、まず入力データ102を読み込む(S201)。ここで、
図3を参照しながら、入力データの一例を説明する。
図3は、入力データ301の一例であり、JSON(JavaScript Object Notation)形式で入力されたデータである。JSON形式ではキーバリュー型で値が保存され、
図3ではidに000011が、nameにM01010111が、sensor-1に100が、sensor-2に400がそれぞれ保存されていることを意味する。入力データはJSONの他、CSV形式や数値、文字列だけであっても構わないものとする。ストリーム処理においては
図3に示す入力データ毎にワーカーが稼働し、処理を行うものとする。
【0014】
ワーカーは、割り当てられた処理記述の処理を入力データに対して実行する(S202)。
図4を参照しながら、処理記述について説明する。
図4は、処理記述の一例であり、ストリーム実行処理システム108はJavascript形式で関数を呼び出すことで順に処理を実行する。例えば、行401は入力データを読み込み、行402はcategoryキーを入力データへ挿入を示す。行403はキーのnameにMachine-という文字列が入っている場合に条件分岐することを示し、行404はクラウドのデータベースへ出力することを示している。処理記述は入力処理、加工処理、出力処理の順で記載することで入力データに対して加工、出力可能としている。
【0015】
ワーカーは、割り当てられた当該処理記述上で指定された出力先へ加工した入力データを出力する(S203)。
図5を参照しながら、出力データについて説明する。
図5は、
図3の入力データが加工されたJSON形式の出力データの一例を示す。
図3と比較して、出力データ501では、nameキー502の値がMachine-01へ変更され、新たにcategoryキー503、tagキー504、dateキー505が追加されている。このように、ストリーム処理ではデータ内部の値の変換や、メタデータの挿入が一般的に行われる。
【0016】
ワーカーは、割り当てられた処理を完了したため、処理終了シグナルを演算管理部112へ出力する(S204)。
【0017】
次に、
図6を参照しながら、演算管理部112の処理について説明する。
図6は、ストリーム処理システム108においてワーカー及び処理記述を管理する演算管理部112の一般的な動作フローチャートを示す。
【0018】
演算管理部112は、処理記述を読み込む(S601)。演算管理部112は、処理記述をワーカーが実行するために入力データの受け付け及びデータの出力が可能であるか、各装置及びデータベースへの疎通の確認を行う(S602)。演算管理部112は、処理記述をワーカーが実行するためのメモリの確保を行う(S603)。各ワーカーは処理記述を実行する際に本ステップで確保したメモリの中から処理に必要な分確保し処理を実行する。その際、各ワーカーで確保したメモリは共有されず、ワーカーは処理を完了した時に確保したメモリ領域を開放する。演算管理部112は、全ワーカーをフリー状態とし(S604)、待機する(S605)。
【0019】
そして、入力データが到達した場合(S606)、ステップ607へ処理が移行する。演算管理部112は、入力データに対して処理を行うため、任意のフリーのワーカーを処理状態として処理記述の処理を実行させる(S607)。
【0020】
当該ワーカーは
図2に示すフローの手順で処理を実行する。処理を割り当てた後、演算管理部112の処理は再びステップ605へ移行する。
【0021】
演算管理部112へワーカーが処理終了シグナルを出力した場合、ステップ609へ処理が移行する(S608)。演算管理部112は、当該ワーカーが処理を完了したためフリー状態へ戻す(S609)。演算管理部112の処理は再びステップ605へ戻る。このように、上記フローチャートに基づきストリーム処理システム108は処理記述111に基づいて入力データ102をストリーム形式に処理し、出力データ105として出力する。
【0022】
上記のような構成を持つストリーム処理において高速化達成には、ワーカーを並列に稼働させ、入力及び出力を1つに定め、各ワーカーのスループットを一定とすることが性能を向上させる上で重要である。その一方、近年データ活用手法は多様化しており、一つのデータに対してリアルタイムな可視化だけではなく、クラウド上のデータベースへの格納や、AI向けのデータ加工と出力など多岐に活用される。
【0023】
上記データ分析利活用の多様化に対し、従来技術に関するデータ収集のストリーム処理では、分岐命令によって加工処理の場合分けや複数のデータベースへの格納を実現していた。しかしながら、ストリーム処理内の分岐命令は各ワーカーのスループットのばらつきを生み、処理負荷の高い分岐先の処理がワーカーを専有することでストリーム処理全体のスループットが悪化する可能性がある。一般的には、高負荷な処理がストリーム処理におけるボトルネックの場合、直前にバッファに代表されるキューを挿入し、ストリーム処理を2つに切り離すことでスループット改善を見込むことができると考えられる。
【0024】
次に、
図7-
図26を参照しながら、各実施形態について説明する。なお、上記で説明した内容と同様の説明については省略する場合がある。
【0025】
<第1実施形態>
<構成>
第1実施形態に関するシステムの例を
図7に示す。このシステムは、ストリーム処理の管理を行うことができ、一例として、データベースへの分析におけるキャッシュ管理をすることができる。このシステム(データ処理管理システム)は、ストリーム処理システム108に対してキュー配備システム113、ユーザ出力部126、ユーザ入力部129の3つのシステムを関連付けることで構成され、キュー配備システム113と、ユーザ出力部126と、ユーザ入力部129と、を備える。
【0026】
実施形態では、ストリーム処理システム108は、入力データ102をデータ生成箇所101から入力データ102を受け取る。また、ストリーム処理システム108は、ユーザ入力部129でユーザが記述した処理記述111を読み込み、管理演算部112の処理を行う。すなわち、ストリーム処理システム108は、当該処理記述に基づいて、入力データ102毎に演算部109のワーカー110を割り当てる処理を行う。そして、ストリーム処理システム108は、データレイク103のデータベース104や可視化サービス106へ出力データ105を出力する。
【0027】
なお、データ生成箇所101の例としては工場に配備したセンサやロボット主機、主機を操作するPLC(プログラマブルロジックコントローラ)が挙げられる。データレイク103の例としては、RDB(リレーショナルデータベース)やファイルシステム、NoSQLデータベースが挙げられる。
【0028】
キュー配備システム113は、ストリーム処理システム108に接続される。ユーザ入力部129で入力した処理記述111中に分岐命令が存在し、優先させたい処理が指定されている場合に、キュー配備演算部114が管理テーブル119に示すテーブル群を生成する。そして、キュー配備実行部125が処理記述111を分割し、キュー133を配備した上でストリーム処理システム108へ実装する機能を有する。
【0029】
ユーザ入力部129は、ストリーム処理システム108で稼働させる処理記述111を処理記述入力部130で受け付ける。ユーザ入力部129は、処理記述111に分岐命令がある場合に分岐命令先の処理に対して優先処理の指定を優先処理入力部131で受け付ける。また、ユーザ入力部129は、キュー配備システム113の管理テーブル119に対する入力をテーブル入力部132で受け付ける。
【0030】
ユーザ出力部126は、管理テーブル119のテーブルをテーブル表示部127で表示し、ストリーム処理システム108上で稼働する処理記述111と配備されたキュー133を結果表示部128で表示する機能を有する。
【0031】
図8に、第1実施形態に関するシステムを実装するハードウェア構成の例を示す。ストリーム処理システム108及びキュー配備システム113はプロセッサ203、ストレージ装置207、メモリ204を備える計算機上に配備され、メモリ204内部で所定の処理が実行される。データ生成装置212と当該計算機、クラウド環境210はネットワークIF202を通してネットワーク201によって接続され通信を行う。
【0032】
入力装置208は、キーボード、マウス、タッチパネル、またはマウス等とディスプレイの組み合わせで構成される。ユーザ入力部129は、入力装置208を用いて構成することができる。出力装置209は、ディスプレイで構成される。ユーザ出力部126は、出力装置209を用いて構成することができる。ストレージ装置207は、不揮発性の記憶媒体によって構成され、ストリーム処理システム108(パイプライン処理システム)によって出力されたデータや、処理記述111等を格納することができる。キュー配備システム113によって配備されるキューはメモリ204に配備される他、巨大な場合はストレージ装置207内部で管理することも可能である。
【0033】
データ生成装置212はPLC213、センサ214からのデータを受け取り、ネットワークIF202を通して出力する装置である。当該装置は、一例として、プロセッサやメモリを含む計算機による構成とすることができる。その一方で、例えば、PLC213等がネットワークIF202を介したデータ出力機能を有する場合、PLC自体(データ出力機能を有する構成自体)が当該装置として該当する。
【0034】
クラウド環境210は、インターネットを介して接続される外部の計算機を示す。この例では、クラウド環境210は、適宜のストレージ装置211、および、プロセッサ215を備え、ストリーム処理システム108は、ストレージ装置211やクラウド環境210上で稼働するアプリケーションに対して出力することも可能である。
【0035】
<処理>
上記に示したストリーム処理システム108へユーザ入力部129から処理記述111を入力する際であって、処理記述111中に分岐命令を含む場合に、第1実施形態に関するシステムは、適切にキュー133を配備するデータへ書き換え、スループットの悪化が改善される処理記述をストリーム処理システム108へ転送する。ここで分岐命令は、JavaScriptにおいては
図4の行403に示すようなifの正負によって判定する条件分岐や、switch文のように複数の条件に対して適合するものを処理する条件文のことである。
【0036】
次に、キュー配備システム113が動作する手順の一例を示す。キュー配備システム113は、ユーザがユーザ入力部129において入力した処理記述111がストリーム処理システム108へ転送される際に稼働する。先ず、
図9を参照しながら、ユーザによる処理記述111の入力について説明する。
図9は、ユーザ入力部における入力画面の一例を示す。
図9に示す画面では、処理記述内部で記載したい関数とその順序の設計をノードとエッジによって可能としている。
【0037】
ノード901はinput関数を配置する意味を有し、ノード903(処理A)へエッジ902によって接続することで、input関数901の後に処理Aの関数903を実行するコードが処理記述として記述されることになる。各関数は関数パレット904上から選択することが可能である。例えば分岐命令の意味を持つノード905(if)をユーザがパレットから選択すると、ifノードを処理記述として接続することができる。
【0038】
ここで、処理記述中で分岐命令が存在する場合、キュー配備システム113への入力のため、ユーザは分岐命令以降に接続する関数に対して優先処理指定を行うことができる。優先処理指定は、スループットの遅延を防ぎたいリアルタイム性を重視する処理に対して適用する。例えば、
図9ではノード907(優先処理)はノード906(if)の後にある処理であり、優先処理指定が可能な関数である。
【0039】
優先処理するノードを
図9に示す画面で編集する場合、対象とするノードをユーザが選択することに応じて編集画面908が出力される。編集画面908には、当該ノードに関するコードが表示され、併せて優先処理チェック909が表示される。ここでユーザが優先処理チェック909を有効化すると、優先処理関数は優先処理として指定される。ユーザ入力部129においてユーザによって設計された処理記述に分岐命令が含まれる場合、処理記述及び優先処理指定は、ストリーム処理システム108へ転送される前にキュー配備システム113へ転送される。
【0040】
なお、
図9の表示の態様は一例であり、適宜に変更されてもよい。例えば、処理記述は
図9に示す入力画面の他、全ての処理記述をコードとして記載してもよい。また、ノードの態様は、
図9に示す態様に限定されない。
【0041】
便宜上、この例では、優先処理する関数(ノード907)を「優先処理」と図示して説明したが、例えば「処理C」のように、優先処理を特定しない単純な態様で、優先処理の候補となるノードが示されてもよい。そして、ユーザが当該ノードを選択して編集画面908を出力させ、当該ノードの優先処理指定を行ってもよい。
【0042】
また、便宜上、この例では、高負荷の処理の関数を「高負荷処理」としたが、例えば、「処理D」のように、高負荷の処理であることを特定しない単純な態様で、当該処理に関するノードが示されてもよい。
【0043】
任意のノードを選択することで、当該ノードに関する編集画面908が出力されてもよい。ここで、ユーザは、関数パレット904に示すノードを選択してもよいし、関数パレット904の外部に示すノードを選択してもよい。
【0044】
次に、キュー配備システム113の動作例について説明する。
図10は、キュー配備システムの動作(ストリーム処理のデプロイ)の一例を示すフローチャートである。なお、
図9に示す処理記述を入力した際の動作例として、フローチャートのステップ(処理)を説明する。
【0045】
先ず、
図11を参照しながら、データの入出力関係について説明する。
図11に示す処理フローはユーザが記載した処理記述1101とその入出力関係の一例をフローで示した図である。
【0046】
入力データ1102はまず処理A1103によって処理され、その後分岐命令1104によって条件分岐が実行される。入力データは条件によって、優先処理1105へ移行しその後データベースA1106へ格納される場合と、処理B1107の後にデータベースB1108に行く場合と、高負荷処理1109からデータベースC1110へ行く場合がある。
【0047】
キュー配備システム113は、ユーザ入力部129より処理記述111及び優先処理指定を受け取る(S1001)。なお、管理テーブル119に関するデータをユーザが入力してもよく、この場合、キュー配備システム113は、管理テーブル119へ入力されるデータを受け取る。処理記述111に分岐命令(この例ではif)が含まれている場合、ステップ1003へ処理が移行する(S1002)。その一方で、分岐命令が含まれていない場合、処理が終了する。
【0048】
キュー配備システム113は、優先処理指定部118により、優先処理指定を読み込み、優先処理として指定された関数及び分岐命令の条件に対して優先処理のフラグをつける(S1003)。そして、キュー配備システム113は、処理記述111に基づいて、処理スループットテーブル120、キュースループットテーブル121、分岐割合テーブル122、演算情報テーブル123を生成する(S1004)。
【0049】
ここで、それぞれのテーブルについて説明する。先ず、
図12を参照しながら、処理スループットテーブル120の一例について説明する。
図12は、処理スループットテーブルの一例を示す。処理スループットテーブルは、各処理のスループットをまとめたデータであり、この例では、処理記述111中の各関数の処理スループット情報1201を持つテーブルである。
【0050】
次に、
図13を参照しながら、キュースループットテーブル121の一例について説明する。
図13は、キュースループットテーブル121の一例を示す。この例では、キュースループットテーブル121は、キュー配備システム113が配備するキューの性能と、キューへデータを転送した際のスループット情報1301を持つテーブルである。例えば、キュー名topic-Aは、ポート番号は9080、容量10MBであり、OSSのkafkaを用いたシステムであることが示されている。キュースループットテーブル121ではスループット情報列は必須であるが、その他のキューの性能情報は任意であってよい。
【0051】
次に、
図14を参照しながら、分岐割合テーブル122について説明する。
図14に分岐割当テーブルの一例を示す。分岐割合テーブルは、ある期間中に処理記述中の分岐命令によって分岐したそれぞれの処理で入力データが処理される割合1401を示す。
図14の例では、ある期間中の入力データのうち30%がif-1分岐として判定され、処理記述中の分岐if-1先の処理が行われることを示している。ここで、当該期間は、ユーザがユーザ入力部129を用いることで、任意に設定することができる。また、この例では、分岐割合は分岐配分取得部117によって取得される。なお、ユーザが同様の割合1501を入力してもよく、この場合、
図15に示すように、テーブルに入力する画面がユーザ入力部129(詳細には、テーブル入力部132)に表示されてもよい。
【0052】
次に、
図16を参照しながら、演算情報テーブル123について説明する。
図16は、演算情報テーブルの一例を示す。演算情報テーブル123は、ワーカー数1601、入力データの単位時間あたりの流入量1602、計測期間1603を保持する。演算においてその他に必要な変数値がある場合、本テーブルは保持することができる。
【0053】
本実施形態では、処理スループットテーブル120、キュースループットテーブル121のスループット情報、演算情報テーブル123の入力データの流入量及び分岐割合テーブル122の割合情報は、処理記述を読み込んだ際にキュー配備演算部114が後述する
図20に示すフローチャートによって計測を行うことで、格納される。また、
図20に示す手法の他、事前にストリーム処理システム上で稼働させた際のスループット情報がある場合にその情報を読み込ませる方法が採用されてもよい。または、ユーザがユーザ入力部129より直接入力する方法によって各情報が生成されてもよい。
【0054】
キュー配備システム113は、処理スループットテーブル120、キュースループットテーブル121、分岐割合テーブル122、演算情報テーブル123より、各キュー配備パタンにおけるスループット改善値を後述する
図21に示すフローチャートによって算出し、キュー配備パタンテーブルへ格納する(S1005)。
【0055】
ここで、キュー配備パタンテーブル124について説明する。
図17は、キュー配備パタンテーブルの一例を示した図である。各列は処理記述内の分岐と優先処理の改善スループットを示し、行はキューを配備するパタンを示している。例えば、行1701は、優先処理と高負荷処理にキューを配備せず、処理Bへキューを配備するパタンと、その時には改善スループットが見込めないことを示す。行1702は、優先処理にキューを配備せず、処理Bと高負荷処理にキューを配備するパタンと改善スループットが11(ms)であることを示している。なお、キューを配備した場合の配備組み合わせ別の配備コストは、配備演算部116により演算される。
【0056】
キュー配備パタンテーブルより、キューを配備する箇所をキュー配備実行部125が決定する。
図17のキュー配備パタンテーブルの例では、行1702の配備コストが11(ms)で最もスループット改善が見込めると考えられるため、処理Bと高負荷処理の分岐先へのキュー配備が決定される(S1006)。
【0057】
キュー配備システム113は、ステップ1006で決定した形で処理記述を分割し、ストリーム処理108へ処理記述を転送し、キューを配備する(S1007)。
図17のキュー配備パタンテーブルの例では、処理B及び高負荷処理へ分岐する分岐命令先に対してキュー配備実行部125がキューを配備する。この時、処理記述は、処理B以降の処理記述、高負荷処理以降の処理記述とそれ以外の優先処理を含む処理記述で切り離される。よって、例えば入力データが高負荷処理を含む分岐先の処理へ移行した場合、まず命令分岐時点のデータがキューへ転送され、ワーカーが開放される。その後に高負荷処理を含む処理記述へワーカーが割り当てられ、キューへ格納されている加工途中のデータを読み込む処理が行われる。
【0058】
キュー配備実行部125が、キューを配備した結果の処理記述と、キューの配備状況をユーザ出力部126の結果表示部128へ転送し、キューを配備した状態に関する情報を表示する(S1008)。
図18は処理記述とキュー配備状況を表示する画面の一例である。ここではif-1queueノード1801が処理Bの前に、if-2 queueノード1802が高負荷処理の前にキューを配備したことを示している。なお、
図18に示すキューの配備状況の他、ユーザ出力部126において、
図19に示すように管理テーブル119がテーブル表示部127に表示されても良いものとする。
【0059】
次に、キュー配備システム113の具体的な処理について説明する。
図20は、キュー配備演算部114が処理スループットテーブル、キュースループットテーブル、分岐割合テーブル、演算情報テーブルの計測を行う場合の処理の一例を示すフローチャートである。このフローチャートは、ステップ1004にて実行される。
【0060】
負荷計測部115は、ストリーム処理システム108へ処理記述を転送する(S2001)。なお、当該処理記述はキューの配備をしない、ユーザ入力部129より受け取ったそのままの処理記述である。
【0061】
負荷計測部115は、処理記述中の各関数を切り分け、スループットを計測する(S2002)。この時の関数の単位の一例としては
図9に示す入力画面で設計した関数ノードレベルとする。また、各関数のスループット値はある期間中の平均値をとるものとする。また、これに加えて、負荷計測部115は、ストリーム処理システム108へのデータ流入量を計測する(S2003)。なお、負荷計測部115は、計測期間における単位時間あたりのデータ流入量を計測してもよい。
【0062】
分岐配分取得部117は、ある期間中、処理記述内の分岐命令において各分岐へどれだけの割合でデータが移行するのか計測する(S2004)。すなわち、分岐配分取得部117は、分岐先の各処理が単位時間あたりどれだけ稼働するかを計測する。
【0063】
負荷計測部115は、ストリーム処理からキューへデータを転送し、キューへ転送されたデータをストリーム処理が受け取るまでのスループットを計測する(S2005)。
【0064】
キュー配備演算部114は、ステップ2002、ステップ2003、ステップ2004、ステップ2005にて計測した結果を処理スループットテーブル120、キュースループットテーブル121、分岐割合テーブル122、演算情報テーブル123へそれぞれ格納する(S2006)。
【0065】
次に、
図21を参照しながら、上記したステップ1005に関する処理について説明する。
図21は、ステップ1005における待ち行列演算のフローチャートの一例を示す。
【0066】
キュー配備システム113は、分岐命令に対してキューを配備する組み合わせを示すキュー配備パタンを生成する(S2101)。この時、ストリーム動作するプロセッサ数に基づいてキューを配備するパタンが生成され、ユーザに優先処理指定された関数を持つ分岐命令に対してキューを配備するパタンは生成しない。なお、演算情報テーブル123のワーカー数1601が参照されてもよい。
【0067】
【0068】
図22は、高負荷処理2202の前にキュー2201を配備するパタンを示している。この時、高負荷処理はユーザ入力時の処理記述より切り離され別の処理記述として稼働する。
図23は、処理B2303と高負荷処理2304を切り離し、各処理の前にキュー2301とキュー2302を配備するパタンを示している。
図22と同様に、処理B2303と、高負荷処理2304は別の処理記述として扱う。
図24では処理B2402の前にのみキュー2401を配備するパタンを示している。
図11に示すキューを配備しないパタンを一番目とし、続いて上記3つのキュー配備をしたパタンをリストとして生成する。
【0069】
キュー配備システム113は、ステップ2101で生成したパタンを1番目から順に演算する(S2102)。ここで、各分岐命令においてバッファの無い処理は処理のスループット値として扱い、バッファのある処理はキューのスループットの値を待ち行列における平均サービス率として扱う(S2103)。例えば、
図11に示す構成のパタンで、
図12に示すスループットの場合、優先処理の平均サービス率は1/10となる。
【0070】
キュー配備システム113は、(入力データの流入量)×(各分岐への分岐割合)を平均到着率として扱う(S2104)。
図11に示すパタンで、
図16に示す入力データ流入量1602、計測時間1603であり、
図14に示す分岐割当テーブルの場合、入力データの単位時間(ms)あたりの流入量は0.1、平均到着率はif-1の分岐では0.1×0.3=0.03となる。
【0071】
キュー配備システム113は、ストリーム処理全体の平均利用率を各処理の平均サービス率と平均到着率の平均から求める(S2105)。
図11に示す場合のステップ2105の例では、if-1の分岐では0.03×10=0.3となり、命令分岐全体を足し合わせ平均すると1.1となる。
【0072】
キュー配備システム113は、優先処理指定された分岐における待ち時間を平均利用率から求め、優先処理のスループット値を加え、優先処理判定があった場合の処理にかかる時間とする(S2106)。
図11に示す場合のステップ2605に続く例では、平均利用率が1を超えているため無限に待ち時間が増加する。
図23に示すストリーム処理の構成例で、
図12に示す処理スループットテーブル、
図13に示すキュースループットテーブル、
図14に示す分割割合テーブル、
図16に示す演算情報テーブルに基づくと、優先処理指定された分岐における待ち時間は11(ms)となる。
【0073】
キュー配備システム113は、キュー配備パタンテーブルへ結果を記録する(S2107)。ステップ2105に続く例では、
図17のキュー配備パタンテーブルに示すように、優先処理指定された分岐におけるスループットでは、処理Bにキューを配備した場合スループットの改善は見込めず、高負荷処理に対してキューを配備した場合13(ms)への改善が見込め、処理Bと高負荷処理に対してキューを配備した場合11(ms)への改善が見込めることとなる。
【0074】
x番目が最大以上ではない場合、ステップ2109へ処理が進み、最大以上の時に処理が終了する(S2108)。ステップ2109では、xへ1加算する処理が行われる。以上によって、各キュー配備パタンにおいて優先処理のスループットが
図11よりどれだけ改善されるかを演算することができる。なお、当該フローにおいて、待ち時間(改善スループット)は配備演算部116の実行により演算される。
【0075】
上記に示すシステムによってユーザの入力した処理記述に適切にキューを配備することで、ストリーム処理において優先処理のスループット改善が実現できる。
【0076】
次に第2実施形態について説明する。既に説明した内容と同様の説明については省略することがある。
<第2実施形態>
図25は第2実施形態のシステムを示した図である。第1実施形態の場合とは異なり、ユーザ出力部の構成が省略され、ユーザ入力部の構成が変更されている。
図25に示したシステムでは、キュー配備システムは、ストリーム処理中で稼働中の処理記述に対して、キュー配備の演算を行い、キュー及び処理記述を再配置する。
【0077】
図を参照しながら、本実施形態における動作例について説明する。
図26は、稼働中のストリーム処理に対するキュー配備システムの動作の一例を示すフローチャートである。
【0078】
キュー配備システム113aは、ユーザ入力部129aより優先出力指定2501の情報を取得する(S2601)。ここで、優先出力指定とは、優先的にストリーム処理の出力を行いたい出力先を指定することである。リアルタイム性を重視する出力先等が例として挙げられる。
【0079】
キュー配備システム113aは、ストリーム処理で稼働中の処理記述を読み込む(S2602)。ここで、処理記述に分岐命令があり、出力先が優先出力指定されている場合、ステップ2604へ処理が移行する(S2603)。そうでない場合、処理が終了する。キュー配備システム113aは、出力先が優先出力指定である分岐命令先の関数を優先処理指定する(S2604)。キュー配備システム113aは、
図10のステップ1004へ移行する(S2605)。続く
図10のステップ1004以降では、第1実施形態と同様の動作によってキューの配備を行う。
【0080】
以上の実施形態によれば、ストリーム処理内に分岐命令を持つ処理に対し、スループット低下を防ぎたい重要な分岐先の処理を指定し、単位時間あたりのデータ流入量、分岐配分の割合、各分岐処理におけるスループット、キューを配置した際のスループット、ワーカー数の値から、重要な分岐処理を除いた各分岐先の処理に対してキューを配置したときに変化する各分岐先の処理のスループットを算出し、算出結果をまとめたキュー配備パタンテーブルを作成し、キュー配備パタンテーブル中、最もコストの低いパタンで分岐処理直後にキューを配置する機能を持つシステムが提供される。本システムによって、リアルタイム性の必要な重要な処理のスループットを改善するキュー配備が可能となる。従って、ストリーム処理を適切に改善することによりデータ処理数の増加が期待され、経済的に良好なデータ処理が行えると考えられる。
【0081】
以上、実施形態について説明されたが、実施形態は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
図面において示す各構成要素の位置などは、発明の理解を容易にするため、実際の位置などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置などに限定されない。
各種情報の例として、「テーブル」、「リスト」等の表現にて説明することがあるが、各種情報はこれら以外のデータ構造で表現されてもよい。例えば、「XXテーブル」、「XXリスト」等の各種情報は、「XX情報」としてもよい。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
適切な処理を行うことができればよく、本発明のシステムは、例えば、1台または複数台のコンピュータにより構成されてもよい。
【0082】
キュー配備システムは、当該キュー配備システムのプロセッサ203が各種プログラムを実行することで、所定の処理を実行する。ここで、キュー配備演算部114、負荷計測部115、配備演算部116、分岐配分取得部117、優先処理指定部118、および、キュー配備実行部125は、プログラムであり、キュー配備システムの適宜の記憶装置に格納されてもよい。また、所定の処理(上記した処理フローに関する処理等)を実行するその他のプログラムが、キュー配備システムの適宜の記憶装置に格納されてもよい。また、キュー配備システムは、外付けされる外部の記憶装置とのデータの入出力を行うインタフェースを備えてもよい。そして、キュー配備システムは、プログラムを格納する外部の記憶装置を用いて処理を実行してもよい。
【符号の説明】
【0083】
113 キュー配備システム
126 ユーザ出力部
127 テーブル表示部
128 結果表示部
129 ユーザ入力部
130 処理記述入力部
131 優先処理入力部
132 テーブル入力部