(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-09
(45)【発行日】2024-12-17
(54)【発明の名称】データフロー制御装置、データフロー制御方法、及びデータフロー制御プログラム
(51)【国際特許分類】
H04L 67/566 20220101AFI20241210BHJP
【FI】
H04L67/566
(21)【出願番号】P 2022561742
(86)(22)【出願日】2020-11-10
(86)【国際出願番号】 JP2020041987
(87)【国際公開番号】W WO2022102001
(87)【国際公開日】2022-05-19
【審査請求日】2023-03-08
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】石崎 晃朗
(72)【発明者】
【氏名】サンパト プリヤンカラ
【審査官】小林 義晴
(56)【参考文献】
【文献】国際公開第2020/115888(WO,A1)
【文献】特開2017-111533(JP,A)
【文献】特開2008-130048(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/566
(57)【特許請求の範囲】
【請求項1】
データを処理するシステムにおいて稼働中の第1のデータフロー
のユーザにあらかじめ設定された属性情報を基に、前記第1のデータフローの共通化が許可されているか否かを確認する確認部と、
前記第1のデータフローと、入力された第2のデータフローで共通する第1の処理の結果をキューに保存し、前記第2のデータフローにおいて前記第1の処理の結果を利用する第2の処理が、前記キューからデータを取得するよう
な第3のデータフローを
、前記確認部によって前記第1のデータフローの共通化が許可されていることが確認された場合に算出する算出部と、
前記システムに対し、前記第1のデータフローを前記第3のデータフローに切り替えることを指示する指示部と、
を有することを特徴とするデータフロー制御装置。
【請求項2】
データフロー制御装置によって実行されるデータフロー制御方法であって、
データを処理するシステムにおいて稼働中の第1のデータフロー
のユーザにあらかじめ設定された属性情報を基に、前記第1のデータフローの共通化が許可されているか否かを確認する確認工程と、
前記第1のデータフローと、入力された第2のデータフローで共通する第1の処理の結果をキューに保存し、前記第2のデータフローにおいて前記第1の処理の結果を利用する第2の処理が、前記キューからデータを取得するよう
な第3のデータフローを
、前記確認工程によって前記第1のデータフローの共通化が許可されていることが確認された場合に算出する算出工程と、
前記システムに対し、前記第1のデータフローを前記第3のデータフローに切り替えることを指示する指示工程と、
を含むことを特徴とするデータフロー制御方法。
【請求項3】
コンピュータを、請求項
1に記載のデータフロー制御装置として機能させるためのデータフロー制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データフロー制御装置、データフロー制御方法、及びデータフロー制御プログラムに関する。
【背景技術】
【0002】
従来、データ処理を行うワークフローのメタデータを基に、データ転送に関する機能を複数の論理的なレイヤに分けて管理する「Kafon」と呼ばれる手法が知られている(例えば、非特許文献1を参照)。
【0003】
非特許文献1に記載の手法は、システムの各機能を、アプリケーションロジック、転送経路の管理、ノード間の伝送、ミドルウェア実装の4つのレイヤに分けて管理し、転送処理の共通化等によりデータフローの効率化を図るものである。
【先行技術文献】
【非特許文献】
【0004】
【文献】Cyber Agent, "大規模データ処理", https://www.cyberagent.co.jp/techinfo/labo/tech/detail/id=23934
【文献】福田 一郎、他、 "サイバーエージェントのデータ活用のためのR&D体制と取組み", 人工知能学会,30巻3号,pp.318-324.(https://jsai.ixsq.nii.ac.jp/ej/?action=repository_action_common_download&item_id=1892&item_no=1&attribute_id=22&file_no=1)
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来の手法には、システム全体でのデータフローの効率化が困難な場合があるという問題がある。例えば、非特許文献1に記載の手法では、タスクを割り当てる演算器の能力や演算器間のデータ転送等が考慮されておらず、システム全体で必ずしも性能が向上するとは限らない。
【課題を解決するための手段】
【0006】
上述した課題を解決し、目的を達成するために、データフロー制御装置は、データを処理するシステムにおいて稼働中の第1のデータフローと、入力された第2のデータフローと、の少なくとも一部を共通化して統合したデータフローのうち、前記システムにおいて稼働させた場合のリソースの使用量が所定の条件を満たす第3のデータフローを算出する算出部と、前記システムに対し、前記第1のデータフローを前記第3のデータフローに切り替えることを指示する指示部と、を有することを特徴とする。
【発明の効果】
【0007】
本発明によれば、システム全体でデータフローを効率化することができる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、第1の実施形態に係るデータフロー制御装置の構成例を示す図である。
【
図2】
図2は、データフローの一例を示す模式図である。
【
図3】
図3は、データフローの切り替えについて説明する図である。
【
図4】
図4は、第1の実施形態に係るデータフロー制御装置の処理の流れを示すフローチャートである。
【
図5】
図5は、データフロー制御プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【0009】
以下に、本願に係るデータフロー制御装置、データフロー制御方法、及びデータフロー制御プログラムの実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
【0010】
[第1の実施形態の構成]
まず、
図1を用いて、第1の実施形態に係るデータフロー制御装置の構成について説明する。
図1は、第1の実施形態に係るデータフロー制御装置の構成の一例を示す図である。
【0011】
図1に示すように、データフロー制御装置10は、データフローの入力を受け付け、データフローの変更指示をデータ処理システム20に対して出力する。ユーザは、データフローの追加、更新、削除等のためのデータフロー定義情報をデータフロー制御装置10に入力する。データフロー制御装置10は、インタフェース部11、記憶部12及び制御部13を有する。なお、データ処理システム20は、データを処理するシステムの一例である。
【0012】
インタフェース部11は、データの入出力及びデータの通信を行うためのインタフェースである。例えば、インタフェース部11は、キーボード及びマウス等の入力装置からデータの入力を受け付ける。また、例えば、インタフェース部11は、ディスプレイ及びスピーカ等の出力装置にデータを出力する。また、例えば、インタフェース部11はNIC(Network Interface Card)であってもよい。
【0013】
記憶部12は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置である。なお、記憶部12は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等のデータを書き換え可能な半導体メモリであってもよい。記憶部12は、データフロー制御装置10で実行されるOS(Operating System)や各種プログラムを記憶する。また、記憶部12は、フロー情報管理DB121、演算資源割当管理DB122及び回線情報DB123を記憶する。
【0014】
フロー情報管理DB121は、データ処理システム20で稼働中のデータフローに関する情報を保持する。フロー情報管理DB121は、データフローに含まれる各処理のデータ取得元、処理方法及び処理順序等を保持する。また、フロー情報管理DB121は、データ処理システム20が収集するデータ及びデータフローのユーザの属性に関する各種メタデータを保持する。
【0015】
演算資源割当管理DB122は、計算リソースごとの、実行可能な処理、及び各処理への割り当てがされているか否かといった情報を保持する。さらに、演算資源割当管理DB122は、各ユーザに対する計算リソースの割り当てが許可されているか否か、すなわちアクセス制御に関する情報を保持する。
【0016】
回線情報DB123は、サーバ間、ユーザとサーバ間、データ収集元とサーバ間、データセンタ間のネットワークの遅延や帯域に関する情報を保持する。なお、ここでのサーバは、例えばデータ処理システム20を構成する複数のサーバである。
【0017】
制御部13は、データフロー制御装置10全体を制御する。制御部13は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路である。また、制御部13は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部13は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部13は、確認部131、抽出部132、算出部133、指示部134及び更新部135を有する。
【0018】
確認部131は、フロー情報管理DB121を参照し、入力されたデータフローに対応するユーザの属性情報が、データフローの共有を許可するものであるか否かを確認する。さらに、確認部131は、入力されたデータフローと稼働中のデータフローとの間に重複部分があるか否かを確認する。
【0019】
例えば、フロー情報管理DB121に、優先利用の権限を持つユーザが保有するデータフローによって、演算器及びネットワーク資源等のリソースが利用されていることが示されている場合、当該リソースは当該ユーザによって占有される。そのため、確認部131は、優先利用の権限を持つユーザが保有するデータフローと入力されたデータフローとの統合は許可されていないと判断する。
【0020】
ここで、
図2を用いて、データフローについて説明する。
図2は、データフローの一例を示す模式図である。
図2の既存のデータフローは、データ処理システム20で稼働中のデータフローである。また、追加のデータフローは、データフロー制御装置10にユーザによって入力されたデータフローである。
【0021】
図2に示すように、既存のデータフローと、追加のデータフローとで、「Camera→処理P1」の部分が重複している。このため、
図2の例では、確認部131は、入力されたデータフローと稼働中のデータフローとの間に重複部分があることを確認する。
【0022】
抽出部132は、既存のデータフローのうち、共有可能なデータフローを抽出する。例えば、抽出部132は、ユーザの属性情報によって共有が許可されており、かつ重複部分があるデータフローを抽出する。
【0023】
算出部133は、抽出部132によって抽出されたデータフローと、入力されたデータフローと、の少なくとも一部を共通化して統合したデータフローのうちの、データ処理システム20において稼働させた場合のリソースの使用量が所定の条件を満たすような新たなデータフローを算出する。
【0024】
ここで、抽出部132によって抽出されたデータフローは、データを処理するシステムにおいて稼働中の第1のデータフローの一例である。また、入力されたデータフローは第2のデータフローの一例である。また、新たなデータフローは第3のデータフローの一例である。
【0025】
まず、算出部133は、抽出部132によって抽出されたデータフローのそれぞれについて、各データフローを実現可能な空き計算リソース及びネットワークリソースの組み合わせを作成する。このとき、算出部133は、演算資源割当管理DB122及び回線情報DB123を参照して組み合わせを作成することができる。
【0026】
さらに、算出部133は、作成した各組み合わせについてリソースの使用量、すなわちコストを計算し、例えばコストが最も小さい組み合わせを選定する。算出部133は、各組み合わせの演算資源間、データ提供元と演算資源間、及びデータ出力先と演算資源間のデータ転送遅延時間、ネットワークNW帯域情報を基にコストを計算する。
【0027】
演算資源は、例えばデータ処理システム20を構成する情報処理装置の演算装置等である。また、データ提供元は、例えばカメラ及びセンサ等である。また、データ出力先は、例えば他の情報処理装置及びディスプレイ等の出力装置である。
【0028】
また、前述のように、確認部131は、稼働中のデータフローのユーザにあらかじめ設定された属性情報を基に、稼働中のデータフローの共通化が許可されているか否かを確認する。そして、算出部133は、確認部131によって稼働中のデータフローの共通化が許可されていることが確認された場合に、共通化されたデータフローを算出する。
【0029】
指示部134は、システムに対し、抽出部132によって抽出されたデータフローを、算出部133によって算出された新たなデータフローに切り替えることを指示する。
【0030】
図3は、データフローの切り替えについて説明する図である。
図3に示すように、切り替え前のデータフローでは、ユーザU1がアプリケーションAP1を実行した場合に、演算器aによって処理P1が実行されていた。
【0031】
ここで、ユーザU2によるアプリケーションAP1の実行、及びユーザU2によるアプリケーションAP1の実行に関するデータフローが追加されたものとする。切り替え前のデータフローと、追加された2つのデータフローとでは、処理P1を実行する部分が重複している。このため、算出部133は、切り替え前のデータフローと追加されたデータフローを統合した「Camera→処理P1(演算器b)→ユーザU1 AP1」というデータフローを算出する。
【0032】
そして、算出部133によって「Camera→処理P1(演算器b)→ユーザU1 AP1」というデータフローが選定されると、指示部134は、既存のデータフロー「Camera→処理P1(演算器a)→ユーザU1 AP1」を、選定されたデータフロー「Camera→処理P1(演算器b)→ユーザU1 AP1」に切り替えることをデータ処理システム20に指示する。
【0033】
また、切り替え前後では、処理P1を実行する演算器が変化している。例えば、演算器bは、処理P2及び処理P3との間に設けられたキューに、処理P1の実行結果を保存する。
【0034】
このように、算出部133は、既存のデータフローと入力されたデータフローで共通する処理P1の結果をキューに保存し、入力されたデータフローにおいて処理P1の結果を利用する処理P2及び処理P3が、キューからデータを取得するような統合済みのデータフローを算出することができる。言い換えると、演算器c及び演算器dは、それぞれ処理P2及び処理P3を実行する過程で、キューから処理P1の実行結果を取得する。
【0035】
この場合、データ処理システム20は、処理P2及び処理P3の実行の際に、処理P1を実行することなく、キューから実行結果を取得することができる。なお、処理P1の実行結果は、例えば検索によって得られたデータの一覧等である。
【0036】
なお、算出部133は、処理P1の実行主体を演算器aから演算器bに変更した結果、全体のコストが増大すると判断した場合、
図3のようなデータフローの切り替えを選定しないようにすることができる。
【0037】
更新部135は、データフローの新旧切り替えに伴い、各DBの情報を更新する。ここで、切り替え前のデータフローを旧データフローと呼ぶ。また、切り替え後のデータフローを新データフローと呼ぶ。
【0038】
まず、更新部135は、新旧データフローの切り替え前に、新データフローのための計算リソースを確保し、演算資源割当管理DB122を更新する。そして、更新部135は、新旧データフローの切り替え後に、フロー情報管理DB121上に新データフローの情報を追加し、旧データフローの情報を更新する。
【0039】
そして、更新部135は、旧データフローで利用していた計算リソースを解放し演算資源割当管理DB122を更新する。さらに、更新部135は、旧データフローのフロー情報管理DB121を更新する。
【0040】
[第1の実施形態の処理]
図4は、第1の実施形態に係るデータフロー制御装置の処理の流れを示すフローチャートである。まず、データフロー制御装置10は、データフロー情報の入力を受け付ける(ステップS101)。
【0041】
次に、データフロー制御装置10は、ユーザ情報からデータフローを共有するか確認する(ステップS102)。データフローを共有しない場合(ステップS103、No)、データフロー制御装置10はステップS107に進む。一方、データフローを共有する場合(ステップS103、Yes)、データフロー制御装置10はステップS104に進む。
【0042】
続いて、データフロー制御装置10は、入力されたデータフローに既存データフローと重複部分があるか否かを判定する(ステップS104)。入力されたデータフローに既存データフローと重複部分がない場合(ステップS104、No)、データフロー制御装置10はステップS107に進む。一方、入力されたデータフローに既存データフローと重複部分がある場合(ステップS104、Yes)、データフロー制御装置10はステップS105に進む。
【0043】
データフロー制御装置10は、共有可能な既存データフローを抽出する(ステップS105)。そして、データフロー制御装置10は、入力されたデータフローと抽出したデータフローとを統合したデータフローを算出する(ステップS106)。
【0044】
データフロー制御装置10は、算出したデータフローを実現可能な空き計算リソース及びNW(ネットワーク)リソースの組み合わせを作成する(ステップS107)。そして、データフロー制御装置10は、入力から出力までのコストを基に組み合わせを選定する(ステップS108)。
【0045】
ここで、データフロー制御装置10は、計算リソースの確保をし、演算資源割当管理DB122を更新する(ステップS109)。そして、データフロー制御装置10は、データフローの新旧切り替えをデータ処理システム20に指示する(ステップS110)。
【0046】
また、データフロー制御装置10は、フロー情報管理DB121上に新データフローの情報を追加し、旧データフローの情報を更新する(ステップS111)。さらに、データフロー制御装置10は、旧データフローで利用していた計算リソースを解放し演算資源割当管理DB122を更新する(ステップS112)。そして、データフロー制御装置10は、旧データフローのフロー情報管理DB121を更新する(ステップS113)。
【0047】
[第1の実施形態の効果]
これまで説明してきたように、データフロー制御装置10は、データを処理するシステムにおいて稼働中の第1のデータフローと、入力された第2のデータフローと、の一部を共通化して統合したデータフローのうち、システムにおいて稼働させた場合のリソースの使用量が所定の条件を満たすような第3のデータフローを算出する。データフロー制御装置10は、システムに対し、第1のデータフローを第3のデータフローに切り替えることを指示する。このように、データフロー制御装置10は、新旧のデータフローの一部を共通化するだけでなく、システムのリソース状況を考慮した上で切り替えを行う。その結果、本実施形態によれば、システム全体でデータフローを効率化することができる。また、本実施形態によれば、データフローのプラガブルな処理の入れ替えが可能になる。
【0048】
データフロー制御装置10は、第1のデータフローと第2のデータフローで共通する第1の処理の結果をキューに保存し、第2のデータフローにおいて第1の処理の結果を利用する第2の処理が、キューからデータを取得するように第3のデータフローを算出する。この結果、本実施形態によれば、システム全体の処理効率を向上させることができる。
【0049】
データフロー制御装置10は、第1のデータフローのユーザにあらかじめ設定された属性情報を基に、第1のデータフローの共通化が許可されているか否かを確認する。データフロー制御装置10は、確認部131によって第1のデータフローの共通化が許可されていることが確認された場合に、第3のデータフローを算出する。データの出力先が複数のユーザであるマルチテナントのシステムが存在する。そのようなシステムの場合、ユーザの属性によっては、データフローの共通化が許可されていない場合がある。本実施形態では、マルチテナントを考慮した上でシステム全体の処理の効率化を図ることができる。
【0050】
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散及び統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、CPU(Central Processing Unit)及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。なお、プログラムは、CPUだけでなく、GPU等の他のプロセッサによって実行されてもよい。
【0051】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0052】
[プログラム]
一実施形態として、データフロー制御装置10は、パッケージソフトウェアやオンラインソフトウェアとして上記のデータフロー制御処理を実行するデータフロー制御プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記のデータフロー制御プログラムを情報処理装置に実行させることにより、情報処理装置をデータフロー制御装置10として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
【0053】
また、データフロー制御装置10は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記のデータフロー制御処理に関するサービスを提供するデータフロー制御サーバ装置として実装することもできる。例えば、データフロー制御サーバ装置は、データフローを入力とし、データフローの変更指示を出力とするデータフロー制御サービスを提供するサーバ装置として実装される。この場合、データフロー制御サーバ装置は、Webサーバとして実装することとしてもよいし、アウトソーシングによって上記のデータフロー制御処理に関するサービスを提供するクラウドとして実装することとしてもかまわない。
【0054】
図5は、データフロー制御プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0055】
メモリ1010は、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0056】
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、データフロー制御装置10の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、データフロー制御装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0057】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020は、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した実施形態の処理を実行する。
【0058】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【符号の説明】
【0059】
10 データフロー制御装置
11 インタフェース部
12 記憶部
13 制御部
20 データ処理システム
121 フロー情報管理DB
122 演算資源割当管理DB
123 回線情報DB
131 確認部
132 抽出部
133 算出部
134 指示部
135 更新部