(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2021-12-08
(45)【発行日】2022-01-12
(54)【発明の名称】Sparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20220104BHJP
【FI】
G06F9/50 120Z
(21)【出願番号】P 2021533418
(86)(22)【出願日】2020-04-07
(86)【国際出願番号】 CN2020083593
(87)【国際公開番号】W WO2020233262
(87)【国際公開日】2020-11-26
【審査請求日】2021-06-10
(31)【優先権主張番号】201910629253.8
(32)【優先日】2019-07-12
(33)【優先権主張国・地域又は機関】CN
【早期審査対象出願】
(73)【特許権者】
【識別番号】521162399
【氏名又は名称】之江実験室
(74)【代理人】
【識別番号】100128347
【氏名又は名称】西内 盛二
(72)【発明者】
【氏名】李 ▲勁▼松
(72)【発明者】
【氏名】李 ▲潤▼▲澤▼
(72)【発明者】
【氏名】▲陸▼ 遥
(72)【発明者】
【氏名】王 ▲ユー▼
(72)【発明者】
【氏名】▲趙▼ 英浩
【審査官】坂庭 剛史
(56)【参考文献】
【文献】中国特許出願公開第101009642(CN,A)
【文献】中国特許出願公開第107870763(CN,A)
【文献】米国特許出願公開第2017/0060641(US,A1)
【文献】米国特許出願公開第2016/0335135(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
Sparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法であって、
当該方法は、マルチセンターのデータ協調コンピューティングシステムで実施されるものであり、前記マルチセンターのデータ協調コンピューティングシステムは、複数のクライアント及び一つのコンピューティング端末を含み、前記クライアントは、ユーザーによるコンピューティングタスク要求を生成してコンピューティング端末に送信するためのものであり、前記コンピューティング端末は、要求を解析して、コンピューティング命令を生成して実行するためのものであり、
当該方法は、
クライアント及びコンピューティング端末にRESTFulサービスを構築し、コンピューティングタスクキューを
とし、LがコンピューティングタスクキューQの長さであり、いずれか一つのクライアントc
kがコンピューティング端末に一つの新たなコンピューティングタスク要求t
kを送信し、当該要求には、コンピューティングのスレッドリソース要求nt
k、メモリーをコンピューティングする要求nm
k、このタスクに対応するコンピューティングすべきデータD
kを含む、ステップ(1)と、
コンピューティング端末は、クライアントc
kから送信されたコンピューティングタスク要求を解析して、
を取得する、ステップ(2)と、
コンピューティング端末は、
を一つのエレメントとして、コンピューティングタスクキューQに挿入してから、Scheduling計算を始め、Scheduling計算では、タスクキューQにおける各エレメントのコンピューティング要求の値をクライアントを単位とするマクシミン規準に従って最適化し、各エレメントのnt
k及びnm
kを更新する、ステップ(3)と、
キューQの長さ
をコンピューティングし、Lを循環境界条件として、Spark.Streaming Contextにより、L個のストリームを作成し、Spark.Confにより各ストリームに割り当てられたリソースを宣言し、Sparkに実際のストリームタスクkを順次送信することについて、データD
kをロードし、コンピューティングタスクt
kを実行し、コンピューティングのスレッドリソース要求nt
kが満たされるスレッド数を割り当て、コンピューティングメモリーが満たされる要求nm
kを割り当て、ただし、D
kに中間結果及びコンピューティングタスクメタデータが存在すれば、直接に、それに対応するステップからタスクをコンピューティングし始める、ステップ(4)と、
ストリーム処理されているタスク
について、Streaming Context.Check Pointingにより、ストリーム処理過程におけるHDFSへのデータの読み取り、データの前処理キャッシュ、コンピューティング、戻りという四つのステップにおいて、データストリームを持続化させる操作を実行し、中間結果及びコンピューティングタスクメタデータをD
lに記憶し、同時に、キューの更新状況を監視し、キューの更新を監視した場合、Streaming Context.stopにより、当該ストリームを停止させ、ステップ(4)に戻り、ストリーム処理過程におけるコンピューティングタスクが完了した場合に、当該ストリーム処理タスクに対応するクライアントにタスク処理結果を返し、タスクをキューQから取り出す、ステップ(5)と、を含むことを特徴とするSparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法。
【請求項2】
前記ステップ(3)において、クライアントに基づくScheduling計算の流れは、以下の通りであり、
ステップ(3.1):キュー
であり、LがコンピューティングキューQの長さであることについて、クライアントに複数の記録が存在している場合に、まず、クライアントに従って加算し、クライアントを単位とする新たなキュー
を取得し、L
midがQ
mid長さであり、s
jが各クライアントによって送信されたタスク総数であり、nt
j
mid、nm
j
midがそれぞれクライアントc
jによって要求されたスレッドリソース総数及びメモリーリソース総数であり、
ステップ(3.2):スレッドリソースについて、以下のように最適化割り当ての流れを実行しており、
ステップ(3.2.1):すべてのクライアントのスレッドリソース要求総数キュー
について、サイズに従ってソートして
及び添え字マッピングM=
を取得し、コンピューティングセンターのコンピューティングリソースプールの総スレッドリソースをNTとすると、予めnt
j
midに与えられるリソースが
となり、
ステップ(3.2.2):
が存在している場合に、この集合が
とし、ステップ(3.2.3)に移行し、それ以外の場合は、最終的なスレッドリソース割り当てポリシー
を出力し、添え字マッピングにより、ソートする前に戻す順序に対応するスレッドリソース割り当てポリシー
を取得し、ステップ(3.2.4)に移行し、
ステップ(3.2.3):再割り当てする必要があるスレッドリソースが
であり、ただし、
がJのエレメントの数であり、ステップ(3.2.2)に戻り、
ステップ(3.2.4):同じクライアントに割り当てられたスレッドリソースを、当該クライアントと対応するすべてのタスクに均一に割り当て、同じc
jにタスク
を対応させ、ただし、
がユーザーc
jが実際に提出した一つのタスクt
zに割り当てられたスレッドリソースであり、nt
j
midがステップ(3.2.2)で得られた当該ユーザーに割り当てられたすべてのスレッドリソースであり、s
jがユーザーc
jによって送信されたタスクの総数であり、
ステップ(3.3):メモリーリソースについて、以下のように最適化割り当ての流れを実行しており、
ステップ(3.3.1):すべてのクライアントのメモリーリソース要求総数キュー
について、サイズに従ってソートして、
及び添え字マッピングM=
を取得し、コンピューティングセンターのコンピューティングリソースプールの総メモリーリソースをNMとすると、予めnm
j
midに与えられるリソースが
となり、
ステップ(3.3.2):
が存在している場合に、この集合を
として、ステップ(3.2.3)に移行し、それ以外の場合は、最終的なメモリーリソース割り当てポリシー
を出力し、添え字マッピングにより、ソートする前に戻す順序に対応するメモリーリソース割り当てポリシー
を取得し、ステップ(3.2.4)に移行し、
ステップ(3.3.3):再割り当てする必要があるメモリーリソースが
であり、ただし、
がJのエレメントの数であり、ステップ(3.3.2)に戻り、
ステップ(3.3.4):同じクライアントに割り当てられたメモリーリソースを当該クライアントと対応するすべてのタスクに均一に割り当て、同一c
jにタスク
,
を対応させ、ただし、
がユーザーc
jが実際に提出した一つのタスクt
zに割り当てられたメモリーリソースであり、nm
j
midがステップ(3.2.2)で得られた当該ユーザーに割り当てられたすべてのメモリーリソースであり、s
jがユーザーc
jによって送信されたタスクの総数であり、
ステップ(3.4):ステップ(3.2)及びステップ(3.3)で得られた[nt
k]及び[nm
k]から、
]を再構成することを特徴とする請求項1に記載のSparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストリーム処理の技術分野に関し、特に、Sparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法に関する。
【背景技術】
【0002】
ストリーム処理技術(Stream Processing)は、コンピュータプログラミングのパラダイムであり、データストリームプログラミングやインタラクティブプログラミングとも呼ばれ、コンピューティングアプリケーションを、限られた並行処理モデルでより効率的に使用できるようにする技術である。このタイプの技術的なアプリケーションは、例えばグラフィックスプロセッシングユニット(Graphic Processing Unit、GPU)又は現場でプログラム可能なゲートアレイ(Field-programmable Gate Arrays、FPGA)などの様々な計算ユニットに存在することが可能であり、しかも、メモリの割り当て、同期及びユニット間のコミュニケーションを明示的に管理しない。Spark streamingは、SparkのコアAPIの拡張の一つであり、それがリアルタイムストリーミングデータの処理に対して、拡張性、高いスループット、フォールト・トレラントなどの特性を有している。提供される主なインタフェースは、コンテキストの作成Streaming Context、ストリーム開始start、ストリーム終了stop、キャッシュcache、Check pointingなどである。
【0003】
マルチセンターのデータ協調コンピューティングは、ビッグデータの背景に現れている応用シナリオであり、マルチパーティデータセンターは、より使用しやすく強力なデータ処理プラットフォームのリソースを個々の単一のユーザーに提供するために、データリソースとデータ処理の要求を統括する必要がある。個々の単一のユーザーは、自分のデータリソースと複数のデータリソースとを統合して集中的に解析することを選択してもよいし、複数の種類の演算要求を選択して、マルチセンター背景で並行コンピューティングを行ってもよい。
【0004】
従来のマルチセンターにおける協調分析プラットフォームは、実質的な単一センターであることが多く、つまり、マルチパーティデータベースを同一箇所のデータノードにキャッシュし、さらに様々な分析要求を一つずつ処理し、実際にすべての並行を一つのストリームにデフォルトして行うことに等価であり、このような形態により、数多くのスレッドによって引き起こされるブロッキング遅延をもたらし、各パッチのキューにおける待ち時間が延長され、新たなユーザーからのコンピューティング要求が即時のフィードバックと満足を得ることが困難であり、データリアルタイム性も保持しにくい。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、従来技術における欠陥に対して、Sparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法を提供することを目的とする。本発明は、リソース管理ログ及びSparkのストリームコンピューティングにより、マルチセンターのデータ協調コンピューティングへのストリーム処理を実現し、ストリーム処理のリソース割り当ての利点及びマルチセンター化のヘテロジニアスコンピューティング要求を結合し、マルチセンターの協調コンピューティングのリソース割り当ての公平性及びデータ分析効率を向上させ、コンピューティングキュータスクの待ち時間を短縮する。
【課題を解決するための手段】
【0006】
本発明の目的は、以下のような技術手段により実現される。
Sparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法であって、
当該方法は、マルチセンターのデータ協調コンピューティングシステムで実施されるものであり、前記マルチセンターのデータ協調コンピューティングシステムは、複数のクライアント及び一つのコンピューティング端末を含み、前記クライアントは、ユーザーによるコンピューティングタスク要求を生成してコンピューティング端末に送信するためのものであり、前記コンピューティング端末は、要求を解析して、コンピューティング命令を生成して実行するためのものであり、
当該方法は、
クライアント及びコンピューティング端末にRESTFulサービスを構築し、コンピューティングタスクキューを
とし、LがコンピューティングタスクキューQの長さであり、いずれか一つのクライアントc
kがコンピューティング端末に一つの新たなコンピューティングタスク要求t
kを送信し、当該要求には、コンピューティングのスレッドリソース要求nt
k、メモリーをコンピューティングする要求nm
k、このタスクに対応するコンピューティングすべきデータD
kを含む、ステップ(1)と、
コンピューティング端末は、クライアントc
kから送信されたコンピューティングタスク要求を解析して、
を取得する、ステップ(2)と、
コンピューティング端末は、
を一つのエレメントとして、コンピューティングタスクキューQに挿入してから、Scheduling計算を始め、Scheduling計算では、タスクキューQにおける各エレメントのコンピューティング要求の値をクライアントを単位とするマクシミン規準に従って最適化し、各エレメントのnt
k及びnm
kを更新する、ステップ(3)と、
キュー
の長さ
をコンピューティングし、Lを循環境界条件として、Spark.Streaming Context(Spark.Streaming ContextがSparkフレームワークにおけるストリーム処理タスクの作成命令インタフェースである)により、
個のストリームを作成し、Spark.Conf(Spark.ConfがSparkフレームワークにおけるストリーム処理タスクの配置命令インタフェースである)により、各ストリームに割り当てられたリソースを宣言し、Sparkに実際のストリームタスクを順次送信することについて、データD
kをロードし、データをコンピューティングタスクt
kを実行し、割り当てられたスレッドリソースがnt
kとなり、メモリーリソースがnm
kとなり、ただし、D
kには、中間結果及びコンピューティングタスクメタデータが存在すれば、直接にそれに対応するステップからタスクをコンピューティングし始め、
ストリーム1:データD
1をロードし、データに対してコンピューティングタスクt
1を実行し、割り当てられたスレッドリソースがnt
1となり、メモリーリソースがnm
1となり、
ストリーム2:データD
2をロードし、データに対してコンピューティングタスクt
2を実行し、割り当てられたスレッドリソースがnt
2となり、メモリーリソースがnm
2となり、
…
ストリームL:データD
Lをロードし、データに対してコンピューティングタスクt
Lを実行し、割り当てられたスレッドリソースがnt
Lとなり、メモリーリソースがnm
Lとなるステップ(4)と、
ストリーム処理されているタスク
について、Streaming Context.Check Pointing(Streaming Context.Check PointingがSparkフレームワークにおけるストリーム処理タスクのデータ持続化命令インタフェースである)により、ストリーム処理過程におけるHDFSへのデータの読み取り、データの前処理キャッシュ、コンピューティング、戻りという四つのステップにおいて、データストリームを持続化させる操作を実行し、中間結果及びコンピューティングタスクメタデータをD
lに記憶し、同時に、キューの更新状況を監視し、キューの更新を監視した場合、Streaming Context.stop(Streaming Context.stopがSparkフレームワークにおけるストリーム処理タスクの中止命令インタフェースである)により、当該ストリームを停止させ、ステップ(4)に戻り、ストリーム処理過程におけるコンピューティングタスクが完了した場合に、当該ストリーム処理タスクに対応するクライアントにタスク処理結果を返し、タスクをキューQから取り出す、ステップ(5)とを含む、Sparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法。
【0007】
さらに、前記ステップ(3)において、クライアントに基づくScheduling計算の流れは、以下の通りであり、
ステップ(3.1):キュー
であり、LがコンピューティングキューQの長さであることについて、クライアントに複数の記録が存在している場合に、まず、クライアントに従って加算し、クライアントを単位とする新たなキュー
を取得し、L
midがQ
mid長さであり、s
jが各クライアントによって送信されたタスク総数であり、nt
j
mid、nm
j
midがそれぞれクライアントc
jによって要求されたスレッドリソース総数及びメモリーリソース総数であり、
ステップ(3.2):スレッドリソースについて、以下のように最適化割り当ての流れを実行しており、
ステップ(3.2.1):すべてのクライアントのスレッドリソース要求総数キュー
について、サイズに従ってソートして
及び添え字マッピングM=
を取得し、コンピューティングセンターのコンピューティングリソースプールの総スレッドリソースをNTとすると、予めnt
j
midに与えられるリソースが
となり、
ステップ(3.2.2):
が存在している場合に、この集合が
とし、ステップ(3.2.3)に移行し、それ以外の場合は、最終的なスレッドリソース割り当てポリシー
を出力し、添え字マッピングにより、ソートする前に戻す順序に対応するスレッドリソース割り当てポリシー
を取得し、ステップ(3.2.4)に移行し、
ステップ(3.2.3):再割り当てする必要があるスレッドリソースが
であり、ただし、
がJのエレメントの数であり、ステップ(3.2.2)に戻り、
ステップ(3.2.4):同じクライアントに割り当てられたスレッドリソースを、当該クライアントと対応するすべてのタスクに均一に割り当て、同じc
jにタスク
を対応させ、ただし、
がユーザーc
jが実際に提出した一つのタスクt
zに割り当てられたスレッドリソースであり、nt
j
midがステップ(3.2.2)で得られた当該ユーザーに割り当てられたすべてのスレッドリソースであり、s
jがユーザーc
jによって送信されたタスクの総数であり、
ステップ(3.3):メモリーリソースについて、以下のように最適化割り当ての流れを実行しており、
ステップ(3.3.1):すべてのクライアントのメモリーリソース要求総数キュー
について、サイズに従ってソートして、
及び添え字マッピングM=
を取得し、コンピューティングセンターのコンピューティングリソースプールの総メモリーリソースをNMとすると、予めnm
j
midに与えられるリソースが
となり、
ステップ(3.3.2):
が存在している場合に、この集合を
として、ステップ(3.2.3)に移行し、それ以外の場合は、最終的なメモリーリソース割り当てポリシー
を出力し、添え字マッピングにより、ソートする前に戻す順序に対応するメモリーリソース割り当てポリシー
を取得し、ステップ(3.2.4)に移行し、
ステップ(3.3.3):再割り当てする必要があるメモリーリソースが
であり、ただし、
がJのエレメントの数であり、ステップ(3.3.2)に戻り、
ステップ(3.3.4):同じクライアントに割り当てられたメモリーリソースを当該クライアントと対応するすべてのタスクに均一に割り当て、同一c
jにタスク
,
を対応させ、ただし、
がユーザーc
jが実際に提出した一つのタスクt
zに割り当てられたメモリーリソースであり、nm
j
midがステップ(3.2.2)で得られた当該ユーザーに割り当てられたすべてのメモリーリソースであり、s
jがユーザーc
jによって送信されたタスクの総数であり、
ステップ(3.4):ステップ(3.2)及びステップ(3.3)で得られた[nt
k]及び[nm
k]から、
]を再構成する。
【発明の効果】
【0008】
本発明による有益な効果は、以下の通りである。
本発明は、マルチセンターのデータコンピューティングの要求及び操作の、ストリーム処理コンピューティングを実行することにより、プログラム実行性能及びリソース割り当て効率を改善する。リソース管理ログとRESTFulを設定し、マルチセンターからのSpark要求タスクに占められ、要求されるメモリー及びスレッドリソースを正確に制御し記録する。マクシミン規準のポリシーを用いて、ストリームコンピューティングにおける各テップのリソース割り当てを実行する。本発明は、マルチセンターのデータ協調コンピューティングにおける数多くのスレッドによって引き起こされるブロッキング遅延という問題を解決して、単一のユーザーの待ち時間を減らし、リソース割り当ての柔軟性及び公平性を改善する。
【図面の簡単な説明】
【0009】
【
図1】本発明に係るセンター協調コンピューティングのストリーム処理方法のフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面及び具体的な実施例を参照しつつ、本発明をより詳しく説明する。
図1に示すように、本発明は、Sparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法を提供しており、当該方法は、マルチセンターのデータ協調コンピューティングシステムで実施されるものであり、前記マルチセンターのデータ協調コンピューティングシステムは、複数のクライアント及び一つのコンピューティング端末を含み、前記クライアントは、ユーザーによるコンピューティングタスク要求を生成してコンピューティング端末に送信するためのものであり、前記コンピューティング端末は、要求を解析して、コンピューティング命令を生成して実行するためのものであり、
当該方法は、
クライアント及びコンピューティング端末にRESTFulサービスを構築し、コンピューティングタスクキューを
とし、LがコンピューティングタスクキューQの長さであり、いずれか一つのクライアントc
kがコンピューティング端末に一つの新たなコンピューティングタスク要求t
kを送信し、当該要求には、コンピューティングのスレッドリソース要求nt
k、メモリーをコンピューティングする要求nm
k、このタスクに対応するコンピューティングすべきデータD
kを含む、ステップ(1)と、
コンピューティング端末は、クライアントc
kから送信されたコンピューティングタスク要求を解析して、
を取得する、ステップ(2)と、
コンピューティング端末は、
を一つのエレメントとして、コンピューティングタスクキューQに挿入してから、Scheduling計算を始め、Scheduling計算では、タスクキューQにおける各エレメントのコンピューティング要求の値をクライアントを単位とするマクシミン規準に従って最適化し、各エレメントのnt
k及びnm
kを更新する、ステップ(3)と、
キュー
の長さ
をコンピューティングし、Lを循環境界条件として、Spark.Streaming Context(Spark.Streaming ContextがSparkフレームワークにおけるストリーム処理タスクの作成命令インタフェースである)により、
個のストリームを作成し、Spark.Conf(Spark.ConfがSparkフレームワークにおけるストリーム処理タスクの配置命令インタフェースである)により、各ストリームに割り当てられたリソースを宣言し、Sparkに実際のストリームタスクを順次送信することについて、データD
kをロードし、データをコンピューティングタスクt
kを実行し、割り当てられたスレッドリソースがnt
kとなり、メモリーリソースがnm
kとなり、ただし、D
kには、中間結果及びコンピューティングタスクメタデータが存在すれば、直接にそれに対応するステップからタスクをコンピューティングし始め、
ストリーム1:データD
1をロードし、データに対してコンピューティングタスクt
1を実行し、割り当てられたスレッドリソースがnt
1となり、メモリーリソースがnm
1となり、
ストリーム2:データD
2をロードし、データに対してコンピューティングタスクt
2を実行し、割り当てられたスレッドリソースがnt
2となり、メモリーリソースがnm
2となり、
…
ストリームL:データD
Lをロードし、データに対してコンピューティングタスクt
Lを実行し、割り当てられたスレッドリソースがnt
Lとなり、メモリーリソースがnm
Lとなるステップ(4)と、
ストリーム処理されているタスク
について、Streaming Context.Check Pointing(Streaming Context.Check PointingがSparkフレームワークにおけるストリーム処理タスクのデータ持続化命令インタフェースである)により、ストリーム処理過程におけるHDFSへのデータの読み取り、データの前処理キャッシュ、コンピューティング、戻りという四つのステップにおいて、データストリームを持続化させる操作を実行し、中間結果及びコンピューティングタスクメタデータをD
lに記憶し、同時に、キューの更新状況を監視し、キューの更新を監視した場合、Streaming Context.stop(Streaming Context.stopがSparkフレームワークにおけるストリーム処理タスクの中止命令インタフェースである)により、当該ストリームを停止させ、ステップ(4)に戻り、ストリーム処理過程におけるコンピューティングタスクが完了した場合に、当該ストリーム処理タスクに対応するクライアントにタスク処理結果を返し、タスクをキューQから取り出す、ステップ(5)とを含む。
【0011】
さらに、前記ステップ(3)において、クライアントに基づくScheduling計算流れは、以下の通りである。
ステップ(3.1):キュー
であり、LがコンピューティングキューQの長さであることについて、クライアントに複数の記録が存在している場合に、まず、クライアントに従って加算し、クライアントを単位とする新たなキュー
を取得し、L
midがQ
mid長さであり、s
jが各クライアントによって送信されたタスク総数であり、nt
j
mid、nm
j
midがそれぞれクライアントc
jによって要求されたスレッドリソース総数及びメモリーリソース総数であり、
ステップ(3.2):スレッドリソースについて、以下のように最適化割り当ての流れを実行しており、
ステップ(3.2.1):すべてのクライアントのスレッドリソース要求総数キュー
について、サイズに従ってソートして
及び添え字マッピングM=
を取得し、コンピューティングセンターのコンピューティングリソースプールの総スレッドリソースをNTとすると、予めnt
j
midに与えられるリソースが
となり、
ステップ(3.2.2):
が存在している場合に、この集合が
とし、ステップ(3.2.3)に移行し、それ以外の場合は、最終的なスレッドリソース割り当てポリシー
を出力し、添え字マッピングにより、ソートする前に戻す順序に対応するスレッドリソース割り当てポリシー
を取得し、ステップ(3.2.4)に移行し、
ステップ(3.2.3):再割り当てする必要があるスレッドリソースが
であり、ただし、
がJのエレメントの数であり、ステップ(3.2.2)に戻り、
ステップ(3.2.4):同じクライアントに割り当てられたスレッドリソースを、当該クライアントと対応するすべてのタスクに均一に割り当て、同じc
jにタスク
を対応させ、ただし、
がユーザーc
jが実際に提出した一つのタスクt
zに割り当てられたスレッドリソースであり、nt
j
midがステップ(3.2.2)で得られた当該ユーザーに割り当てられたすべてのスレッドリソースであり、s
jがユーザーc
jによって送信されたタスクの総数であり、
ステップ(3.3):メモリーリソースについて、以下のように最適化割り当ての流れを実行しており、
ステップ(3.3.1):すべてのクライアントのメモリーリソース要求総数キュー
について、サイズに従ってソートして、
及び添え字マッピングM=
を取得し、コンピューティングセンターのコンピューティングリソースプールの総メモリーリソースをNMとすると、予めnm
j
midに与えられるリソースが
となり、
ステップ(3.3.2):
が存在している場合に、この集合を
として、ステップ(3.2.3)に移行し、それ以外の場合は、最終的なメモリーリソース割り当てポリシー
を出力し、添え字マッピングにより、ソートする前に戻す順序に対応するメモリーリソース割り当てポリシー
を取得し、ステップ(3.2.4)に移行し、
ステップ(3.3.3):再割り当てする必要があるメモリーリソースが
であり、ただし、
がJのエレメントの数であり、ステップ(3.3.2)に戻り、
ステップ(3.3.4):同じクライアントに割り当てられたメモリーリソースを当該クライアントと対応するすべてのタスクに均一に割り当て、同一c
jにタスク
,
を対応させ、ただし、
がユーザーc
jが実際に提出した一つのタスクt
zに割り当てられたメモリーリソースであり、nm
j
midがステップ(3.2.2)で得られた当該ユーザーに割り当てられたすべてのメモリーリソースであり、s
jがユーザーc
jによって送信されたタスクの総数であり、
ステップ(3.4):ステップ(3.2)及びステップ(3.3)で得られた[nt
k]及び[nm
k]から、
]を再構成する。
【0012】
以下に、本発明に係るSparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法を、マルチセンターの医学データ協調コンピューティングプラットフォーム上に適用する一つの具体的な実施例を示し、当該実施例は、具体的に、以下のステップを含む。
ステップ(1):クライアント(三つの病院)及びコンピューティング端末(データセンター)に、RESTFulサービスを構築し、コンピューティングタスクキューを、以下の式とする。
【数1】
L=3であり、三番目の病院“hospital3”は、コンピューティング端末に一つの新たなコンピューティングタスク要求“task4”を送信し、当該要求には、コンピューティングのスレッドリソース要求16、コンピューティングメモリーの要求16、そのタスクに対応するコンピューティングすべきデータ“path4”を含む。
ステップ(2):コンピューティング端末は、クライアントc
iから送信されたコンピューティングタスク要求を解析して、
を取得する。
ステップ(3):コンピューティング端末は、
を一つのエレメントとして、コンピューティングタスクキュー
に挿入する。
【数2】
その後に、Scheduling計算を始め、Scheduling計算では、タスクキューQにおける各エレメントのコンピューティング要求の値をクライアントを単位とするマクシミン規準に従って最適化し、各エレメントのnt
k及びnm
kを更新し、キューQの値が次の式になり、
【数3】
ただし、Scheduling計算の流れは、以下の通りである。
ステップ(3.1):次のキューについて
【数4】
LがコンピューティングキューQの長さであり、L=4であり、クライアント“hospital2”には複数の記録が存在している場合に、まず、クライアントに従って加算し、次の式を取得し、
【数5】
L
midがQ
mid長さであり、L
mid=3である。
ステップ(3.2):スレッドリソースについて、次のように最適化割り当ての流れを実行しており、
ステップ(3.2.1):すべてのクライアントのスレッドリソース要求総数キュー[8,12,16]について、サイズに従ってソートして、[8,12,16]及び添え字マッピングM=[1,2,3]を取得し、コンピューティングセンターのコンピューティングリソースプールの総スレッドリソースをNT=32とすると、予め[8,12,16]に与えられるリソースが[10,10,12]となる。
ステップ(3.2.2):
が存在している場合に、この集合を
とし、ステップ(3.2.3)に移行する。
ステップ(3.2.3):再割り当てする必要があるスレッドリソースが
であり、ただし、
がJのエレメントの数であり、
であり、ステップ(3.2.2)に戻る。
ステップ(3.2.2):
が存在していない場合、最終的なスレッドリソース割り当てポリシー
を出力し、添え字マッピングにより、ソートする前に戻す順序に対応するメモリーリソース割り当てポリシー
を取得し、ステップ(3.2.4)に移行する。
ステップ(3.2.4):同一“hospital2”にタスク
を対応させる。
ステップ(3.3):メモリーリソースについて、以下のように、最適化割り当ての流れを実行しており、
ステップ(3.3.1):すべてのクライアントのメモリーリソース要求総数キュー
について、サイズに従ってソートして、
及び添え字マッピングM=
を取得し、コンピューティングセンターのコンピューティングリソースプールの総メモリーリソースを
、予め
に与えられるリソースが
となる。
ステップ(3.3.2):
が存在している場合、この集合を、
とし、ステップ(3.3.3)に移行する。
ステップ(3.3.3):再割り当てする必要があるメモリーリソースが
,
であり、ただし、
がJのエレメントの数であり、ステップ(3.3.2)に戻る。
ステップ(3.3.2):
が存在していない場合、最終的なスレッドリソース割り当てポリシー
を出力し、添え字マッピングにより、ソートする前に戻す順序に対応するメモリーリソース割り当てポリシー
を取得し、ステップ(3.3.4)に移行する。
ステップ(3.3.4):同一の“hospital2”にタスク
,
を対応させる。
ステップ(3.4):ステップ(3.2)及びステップ(3.3)で得られた[nt
k]及び[nm
k]から、次の式を再構成する。
【数6】
ステップ(4):コンピューティングキューQの長さをコンピューティングし、
であり、4を循環境界条件として、Spark.Streaming Context(Spark.Streaming ContextがSparkフレームワークにおけるストリーム処理タスクの作成命令インタフェースである)により、4個のストリームを作成し、Spark.Conf(Spark.ConfがSparkフレームワークにおけるストリーム処理タスクの配置命令インタフェースである)により、各ストリームに割り当てられたリソースを宣言し、Sparkに実際のストリームタスクを順次送信することについて、
ストリーム1:データ“path1”をロードし、データに対してコンピューティングタスク“task1”を実行し、割り当てられたスレッドリソースが9となり、メモリーリソースが4となる。
ストリーム2:データ“path2”をロードし、データに対してコンピューティングタスク“task2”を実行し、割り当てられたスレッドリソースが9となり、メモリーリソースが9となる。
ストリーム3:データ“path3”をロードし、データにコンピューティングタス“task3”を実行し、割り当てられたスレッドリソースが4となり、メモリーリソースが9となる。
ストリーム4:データ“path4”をロードし、データにコンピューティングタスク“task4”を実行し、割り当てられたスレッドリソースが10となり、メモリーリソースが10となる。
ただし、ストリーム1、ストリーム2、ストリーム3を検査すると、中間結果及びコンピューティングタスクメタデータが存在している場合に、直接に、それに対応するステップからタスクをコンピューティングし始める。
(5):ストリーム処理されているタスクについて、
【数7】
Streaming Context.Check Pointing(Streaming Context.Check PointingがSparkフレームワークにおけるストリーム処理タスクのデータ持続化命令インタフェースである)により、ストリーム処理過程におけるHDFSへのデータの読み取り、データの前処理キャッシュ、コンピューティング、戻りという四つのステップにおいて、データストリームを持続化させる操作を実行し、中間結果及びコンピューティングタスクメタデータをpath1、path2、path3、path4に記憶し、同時に、キューの更新状況を監視し、キューの更新を監視した場合に、Streaming Context.stop(Streaming Context.stopがSparkフレームワークにおけるストリーム処理タスクの中止命令インタフェースである)により、当該ストリームを停止させ、ステップ(4)に戻り、ストリーム処理におけるコンピューティングタスクが完了した場合に、当該ストリーム処理タスクに対応するクライアントに、タスク処理結果を返し、タスクをキューQから取り出す。
【0013】
以上は、本発明の実施例に過ぎず、本発明の保護範囲を限定するものではない。本発明の趣旨及び原則を逸脱しない限り創造的労働を経ずに行われたいかなる修正、均等置換や改良などは、いずれも本発明の保護範囲に含まれる。
【要約】
【課題】本発明は、Sparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法を提供する。
【解決手段】複数のクライアントは、ユーザーによるコンピューティングタスク要求を生成してコンピューティング端末に送信し、コンピューティング端末は、要求を解析し、コンピューティング命令を生成して実行する。本発明は、マルチセンターのデータコンピューティングの要求及び操作の、ストリーム処理コンピューティングを実行することにより、プログラム実行性能及びリソース割り当て効率を改善する。リソース管理ログとRESTFulを設定し、マルチセンターからのSpark要求タスクに占められ、要求されるメモリー及びスレッドリソースを正確に制御し記録する。マクシミン規準のポリシーを用いて、ストリームコンピューティングにおける各テップのリソース割り当てを実行する。本発明は、マルチセンターのデータ協調コンピューティングにおける数多くのスレッドによって引き起こされるブロッキング遅延という問題を解決して、単一のユーザーの待ち時間を減らし、リソース割り当ての柔軟性及び公平性を改善する。
【選択図】
図1