IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ナショナル ユニヴァーシティー オブ シンガポールの特許一覧 ▶ ベイジン ヴォルケーノ エンジン テクノロジー カンパニー リミテッドの特許一覧

特開2025-23847タスク実行時の低速ノードの検出方法、装置、電子機器および媒体
<>
  • 特開-タスク実行時の低速ノードの検出方法、装置、電子機器および媒体 図1
  • 特開-タスク実行時の低速ノードの検出方法、装置、電子機器および媒体 図2
  • 特開-タスク実行時の低速ノードの検出方法、装置、電子機器および媒体 図3
  • 特開-タスク実行時の低速ノードの検出方法、装置、電子機器および媒体 図4
  • 特開-タスク実行時の低速ノードの検出方法、装置、電子機器および媒体 図5
  • 特開-タスク実行時の低速ノードの検出方法、装置、電子機器および媒体 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025023847
(43)【公開日】2025-02-17
(54)【発明の名称】タスク実行時の低速ノードの検出方法、装置、電子機器および媒体
(51)【国際特許分類】
   G06F 9/50 20060101AFI20250207BHJP
【FI】
G06F9/50 120A
G06F9/50 150D
【審査請求】有
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2024127712
(22)【出願日】2024-08-02
(31)【優先権主張番号】202310982104.6
(32)【優先日】2023-08-04
(33)【優先権主張国・地域又は機関】CN
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.KUBERNETES
(71)【出願人】
【識別番号】507335687
【氏名又は名称】ナショナル ユニヴァーシティー オブ シンガポール
(71)【出願人】
【識別番号】524195042
【氏名又は名称】ベイジン ヴォルケーノ エンジン テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Volcano Engine Technology Co., Ltd.
【住所又は居所原語表記】1309, 13th Floor, Building 4, Zijin Digital Park, Haidian District, Beijing 100190, P. R. China
(74)【代理人】
【識別番号】110004381
【氏名又は名称】弁理士法人ITOH
(72)【発明者】
【氏名】イファン ジャン
(72)【発明者】
【氏名】ジャンハオ チェン
(72)【発明者】
【氏名】モン,ワン
(72)【発明者】
【氏名】グアンホォイ ジャン
(72)【発明者】
【氏名】ヨン ファン
(72)【発明者】
【氏名】ルォイ シ
(72)【発明者】
【氏名】ティエンバイ マ
(72)【発明者】
【氏名】イェンツアン マオ
(57)【要約】      (修正有)
【課題】タスク実行時の低速ノードの検出方法、装置、電子機器および記憶媒体を提供する。
【解決手段】方法は、複数のオペレータタイプのサブタスクを含むストリームデータ処理タスクの、実行指標情報を取得するステップと、様々なオペレータタイプの間のトポロジー関係と前記実行指標情報が示す異常原因情報とに基づいて、異常のあるターゲットオペレータタイプを決定するステップと、複数の前記オペレータタイプのサブタスクから前記ターゲットオペレータタイプの各第1サブタスクをフィルタリングし、前記実行指標情報から、各前記第1サブタスクにそれぞれ対応する検出対象の指標情報を決定するステップと、前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定し、前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定するステップと、を含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数のオペレータタイプのサブタスクを含むストリームデータ処理タスクの、実行指標情報を取得するステップと、
様々なオペレータタイプのトポロジー関係と前記実行指標情報が示す異常原因情報とに基づいて、異常のあるターゲットオペレータタイプを決定するステップと、
複数の前記オペレータタイプのサブタスクから、前記ターゲットオペレータタイプの各第1サブタスクをフィルタリングし、前記実行指標情報から、各前記第1サブタスクにそれぞれ対応する検出対象の指標情報を決定するステップと、
前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定し、前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定するステップとを含む、ことを特徴とするタスク実行時の低速ノードの検出方法。
【請求項2】
前記低速ノードマシンを決定した後、
予め設定されたサービス移行インターフェースを使用して、前記低速ノードマシン内の、前記第2サブタスクを実行するための各ターゲット計算ノードに必要なリソースの量に基づいて、各前記ターゲット計算ノードのためにターゲットリソースを事前に申請するステップと、
前記低速ノードマシンに対するブロッキング情報を設定するステップであって、前記ブロッキング情報は、前記ターゲットオペレータタイプの新しいサブタスクが、前記低速ノードマシンの計算ノードによって実行されるようにスケジュールすることができないことを示すために使用される、ステップと、
申請されたターゲットリソースを使用して、前記ターゲット計算ノードを代替するための代替計算ノードを作成し、前記代替計算ノードを使用して、前記ターゲット計算ノードに関連する前記第2サブタスクを実行するステップとを含む、ことを特徴とする請求項1に記載の方法。
【請求項3】
前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定するステップは、
前記第2サブタスクのターゲット数が予め設定された数よりも大きい場合、各前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、各前記実行マシンに対応するタスクの数を決定するステップと、
各前記実行マシンに対応する前記タスクの数と前記ターゲット数との第1比値に基づいて、前記低速ノードマシンを決定するステップとを含む、ことを特徴とする請求項1に記載の方法。
【請求項4】
各前記実行マシンに対応する前記タスクの数と前記ターゲット数との第1比値に基づいて、前記低速ノードマシンを決定するステップは、
第1予め設定された比値以上のターゲット比値がある場合、そのターゲット比値に対応する実行マシンを前記低速ノードマシンとして使用するか、または、
各前記第1比値がいずれも、前記第1予め設定された比値よりも小さい場合、各前記第2サブタスクの前記検出対象の指標情報が示す指標異常度に基づいて、指標異常度が最も大きい第2サブタスクに対応する実行マシンを前記低速ノードマシンとして使用するステップとを含む、ことを特徴とする請求項3に記載の方法。
【請求項5】
各前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、各前記実行マシンに対応するタスクの数を決定するステップは、
前記ターゲットオペレータタイプがデータ消費タイプに属する場合、各前記第2サブタスクがメッセージキューからデータを読み取るときに依存する各データパーティションに基づいて、前記第2サブタスクに対応する検出対象の指標情報から、各前記データパーティションに対応するデータ遅延時間を決定するステップと、
前記データ遅延時間に基づいて、前記データパーティションから複数のターゲットデータパーティションをフィルタリングするステップと、
各前記ターゲットデータパーティションが属するデータ管理サーバに基づいて、各前記データ管理サーバに対応するデータパーティションの数を決定するステップと、
各前記データ管理サーバに対応する前記データパーティションの数と前記ターゲットデータパーティションの第1数との間の第2比値がいずれも、第2予め設定された比値よりも小さい場合、各前記第2サブタスクの計算ノードが存在する実行マシンに基づいて、各前記実行マシンに対応する前記タスクの数を決定するステップとを含む、ことを特徴とする請求項3に記載の方法。
【請求項6】
前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定するステップは、
前記ターゲットオペレータタイプがデータ消費タイプに属する場合、各前記第1サブタスクがメッセージキューからデータを読み取るときに依存する各データパーティションに基づいて、前記第1サブタスクに対応する検出対象の指標情報から、各前記データパーティションに対応するデータ遅延時間を決定するステップと、
前記データ遅延時間に基づいて、データ遅延時間が予め決定された時間よりも大きいデータパーティションの第2数を決定するステップと、
前記第2数とパーティションの総数との第3比値が第3予め設定された比値よりも小さい場合、各前記データパーティションに対応する前記データ遅延時間に基づいて、前記第1サブタスクから前記第2サブタスクを決定するステップであって、前記パーティションの総数が各前記第1サブタスクが依存するデータパーティションの総数である、ステップとを含む、ことを特徴とする請求項1に記載の方法。
【請求項7】
各前記データパーティションに対応する前記データ遅延時間に基づいて、前記第1サブタスクから前記第2サブタスクを決定するステップは、
各前記データパーティションに対応する前記データ遅延時間に基づいて、各前記データパーティションにおいて、データ遅延時間が第1異常条件を満たすフィルタリング対象のデータパーティションがあるか否かを判定するステップと、
そうである場合、前記フィルタリング対象のデータパーティションに依存する前記第1サブタスクのクエリ毎秒に基づいて、前記第2サブタスクを決定するステップとを含む、ことを特徴とする請求項6に記載の方法。
【請求項8】
前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定するステップは、
前記ターゲットオペレータタイプがデータ消費型以外の他のオペレータタイプに属する場合、各前記第1サブタスクの前記検出対象の指標情報が示すタスクのアイドル状態に基づいて、タスクのアイドル状態が第2異常条件を満たす第3サブタスクがあるか否かを判定するステップと、
そうである場合、前記第3サブタスクのクエリ毎秒および予め設定されたクエリレートに基づいて、前記第2サブタスクを決定するステップとを含む、ことを特徴とする請求項1に記載の方法。
【請求項9】
複数のオペレータタイプのサブタスクを含むストリームデータ処理タスクの、実行指標情報を取得するための取得モジュールと、
様々なオペレータタイプのトポロジー関係と前記実行指標情報が示す異常原因情報とに基づいて、異常のあるターゲットオペレータタイプを決定するための第1決定モジュールと、
複数の前記オペレータタイプのサブタスクから前記ターゲットオペレータタイプの各第1サブタスクをフィルタリングし、前記実行指標情報から、各前記第1サブタスクにそれぞれ対応する検出対象の指標情報を決定するための第2決定モジュールと、
前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定し、前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定するための第3決定モジュールとを含む、ことを特徴とするタスク実行時の低速ノード検出装置。
【請求項10】
プロセッサおよびメモリを含み、前記メモリは、前記プロセッサによって実行可能な機械読み取り可能な命令を記憶し、前記プロセッサは、前記メモリに記憶される機械読み取り可能な命令を実行し、前記機械読み取り可能な命令が前記プロセッサによって実行されるとき、前記プロセッサは、請求項1~8のいずれか一項に記載の、タスク実行時の低速ノードの検出方法のステップを実行する、ことを特徴とする電子機器。
【請求項11】
コンピュータ読み取り可能な記憶媒体であって、前記コンピュータ読み取り可能な記憶媒体には、コンピュータプログラムが記憶され、前記コンピュータプログラムが電子機器によって実行されるとき、前記電子機器が請求項1~8のいずれか一項に記載のタスク実行時の低速ノードの検出方法のステップを実行する、ことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ技術の分野に関し、具体的には、タスク実行時の低速ノードの検出方法、装置、電子機器および媒体に関する。
【背景技術】
【0002】
ビジネスの発展に伴い、ストリームデータの処理がますます一般的になっている。業界で一般的に使用されているビッグデータストリーム処理エンジンとして、Flinkエンジンを使用して様々なFlinkタスクを処理できる。Flinkエンジン管理は、Flinkタスクに対応するサブタスクを処理するための複数の計算ノードを有し、複数の計算ノードがサービスクラスター内の異なるマシンで実行できる。ただし、多くの場合、同じマシンで複数の計算ノードに対応する複数タイプのサブタスクを実行でき、さらには他のエンジンに対応するタスクを実行することもできるため、様々なタスクを継続的に実行すると、マシンで実行されている特定のサブタスクの実行が遅くなり、タスクの実行効率に影響を与える可能性がある。同時に、当該サブタスクに対して、当該マシンには低速ノードの問題が発生する。
【0003】
したがって、低速ノードの問題があるマシンをタイムリーに検出して処理できれば、Flinkタスクの実行効率を大幅に向上することができ、しかし、従来の低速ノード検出ソリューションでは、検出結果の精度が低く、検出効果が少ない問題がよくある。
【発明の概要】
【0004】
本開示の実施例は、少なくともタスク実行時の低速ノードの検出方法、装置、電子機器および媒体を提供する。
【0005】
第1態様では、本開示の実施例は、
複数のオペレータタイプのサブタスクを含むストリームデータ処理タスクの、実行指標情報を取得するステップと、
様々なオペレータタイプのトポロジー関係と前記実行指標情報が示す異常原因情報とに基づいて、異常のあるターゲットオペレータタイプを決定するステップと、
複数の前記オペレータタイプのサブタスクから、前記ターゲットオペレータタイプの各第1サブタスクを選択し、前記実行指標情報から各前記第1サブタスクのそれぞれに対応する検出対象の指標情報を決定するステップと、
前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定し、前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定するステップとを含む、タスク実行時の低速ノードの検出方法を提供する。
【0006】
可能な実施形態において、前記低速ノードマシンを決定した後、
予め設定されたサービス移行インターフェースを使用して、前記低速ノードマシン内の、前記第2サブタスクを実行するための各ターゲット計算ノードに必要なリソースの量に基づいて、各前記ターゲット計算ノードのためにターゲットリソースを事前に申請するステップと、
前記低速ノードマシンに対するブロッキング情報を設定するステップであって、前記ブロッキング情報は、前記ターゲットオペレータタイプの新しいサブタスクが、前記低速ノードマシンの計算ノードによって実行されるようにスケジュールすることができないことを示すために使用される、ステップと、
申請されたターゲットリソースを使用して、前記ターゲット計算ノードを代替するための代替計算ノードを作成し、前記代替計算ノードを使用して、前記ターゲット計算ノードに関連する前記第2サブタスクを実行するステップとを含む。
【0007】
可能な実施形態において、前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定するステップは、
各前記第2サブタスクのターゲット数が予め設定された数よりも大きい場合、各前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、各前記実行マシンに対応するタスクの数を決定するステップと、
各前記実行マシンに対応する前記タスクの数と前記ターゲット数との第1比値に基づいて、前記低速ノードマシンを決定するステップとを含む。
【0008】
可能な実施形態において、各前記実行マシンに対応する前記タスクの数と前記ターゲット数との第1比値に基づいて、前記低速ノードマシンを決定するステップは、
第1予め設定された比値以上のターゲット比値がある場合、そのターゲット比値に対応する実行マシンを前記低速ノードマシンとして使用するか、または、
各前記第1比値がいずれも、前記第1予め設定された比値よりも小さい場合、各前記第2サブタスクの前記検出対象の指標情報が示す指標異常度に基づいて、指標異常度が最も大きい第2サブタスクに対応する実行マシンを前記低速ノードマシンとして使用するステップとを含む。
【0009】
可能な実施形態において、各前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、各前記実行マシンに対応するタスクの数を決定するステップは、
前記ターゲットオペレータタイプがデータ消費タイプに属する場合、各前記第2サブタスクがメッセージキューからデータを読み取るときに依存する各データパーティションに基づいて、前記第2サブタスクに対応する検出対象の指標情報から、各データパーティションに対応するデータ遅延時間を決定するステップと、
前記データ遅延時間に基づいて、前記データパーティションから複数のターゲットデータパーティションをフィルタリングするステップと、
各前記ターゲットデータパーティションが属するデータ管理サーバに基づいて、各前記データ管理サーバに対応するデータパーティションの数を決定するステップと、
各前記データ管理サーバに対応する前記データパーティションの数と前記ターゲットデータパーティションの第1数との第2比値がいずれも、第2予め設定された比値よりも小さい場合、各前記第2サブタスクの計算ノードが存在する実行マシンに基づいて、各前記実行マシンに対応する前記タスクの数を決定するステップとを含む。
【0010】
可能な実施形態において、前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定するステップは、
前記ターゲットオペレータタイプがデータ消費タイプに属する場合、各前記第1サブタスクがメッセージキューからデータを読み取るときに依存する各データパーティションに基づいて、前記第1サブタスクに対応する検出対象の指標情報から、各データパーティションに対応するデータ遅延時間を決定するステップと、
前記データ遅延時間に基づいて、データ遅延時間が予め決定された時間より大きいデータパーティションの第2数を決定するステップと、
前記第2数とパーティションの総数との第3比値が第3予め設定された比値よりも小さい場合、各前記データパーティションに対応する前記データ遅延時間に基づいて、前記第1サブタスクから前記第2サブタスクを決定するステップであって、前記パーティションの総数が各前記第1サブタスクが依存するデータパーティションの総数である、ステップとを含む。
【0011】
可能な実施形態において、各前記データパーティションに対応する前記データ遅延時間に基づいて、前記第1サブタスクから前記第2サブタスクを決定するステップは、
各前記データパーティションに対応する前記データ遅延時間に基づいて、各前記データパーティションにおいて、データ遅延時間が第1異常条件を満たすフィルタリング対象のデータパーティションがあるか否かを判定するステップと、
そうである場合、前記フィルタリング対象のデータパーティションが依存する前記第1サブタスクのクエリ毎秒に基づいて、前記第2サブタスクを決定するステップとを含む。
【0012】
可能な実施形態において、前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定するステップは、
前記ターゲットオペレータタイプがデータ消費型以外の他のオペレータタイプに属する場合、各前記第1サブタスクの前記検出対象の指標情報が示すタスクのアイドル状態に基づいて、タスクのアイドル状態が第2異常条件を満たす第3サブタスクがあるか否かを判定するステップと、
そうである場合、前記第3サブタスクのクエリ毎秒および予め設定されたクエリレートに基づいて、前記第2サブタスクを決定するステップとを含む。
【0013】
第2態様では、本開示の実施例は、
複数のオペレータタイプのサブタスクを含むストリームデータ処理タスクの、実行指標情報を取得するための取得モジュールと、
様々なオペレータタイプのトポロジー関係と前記実行指標情報が示す異常原因情報とに基づいて、異常のあるターゲットオペレータタイプを決定するための第1決定モジュールと、
複数のオペレータタイプのサブタスクから前記ターゲットオペレータタイプの各第1サブタスクをフィルタリングし、前記実行指標情報から、各前記第1サブタスクにそれぞれ対応する検出対象の指標情報を決定するための第2決定モジュールと、
前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定し、前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定するための第3決定モジュールとを含む、タスク実行時の低速ノードの検出装置をさらに提供する。
【0014】
第3態様では、本開示の選択可能な実現形態は、プロセッサおよびメモリを含む電子機器をさらに提供し、前記メモリは、前記プロセッサによって実行可能な機械読み取り可能な命令を記憶し、前記プロセッサは、前記メモリに記憶される機械読み取り可能な命令を実行し、前記機械読み取り可能な命令が前記プロセッサによって実行されるとき、上記第1態様、または第1態様の任意可能な実施形態のステップを実行する。
【0015】
第4態様では、本開示の選択可能な実現形態は、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体をさらに提供し、当該コンピュータプログラムが実行されるとき、上述の第1態様、または第1態様の任意の可能な実施形態におけるステップを実行する。
【0016】
上記のタスク実行時の低速ノードの検出装置、電子機器、コンピュータ読み取り可能な記憶媒体の効果については、上記タスク実行時の低速ノードの検出方法の説明を参照し、ここでは繰り返して説明しない。
【0017】
本開示の実施例によって提供される、タスクの実行時の低速ノードの検出方法、装置、電子機器、および記憶媒体は、実行指標情報が、ストリームデータ処理タスクの実行中に各オペレータタイプの各サブタスクに関する指標情報を含むことができるため、取得した実行指標情報を低速ノードの検出に利用することで、様々な指標情報の総合的な分析および検出を実現し、決定された低速ノードマシンの精度を高めることができる。オペレータタイプ間のトポロジー構造と異常原因情報に基づいて、そのオペレータタイプのタスク異常が他のオペレータタイプのタスク異常によって引き起こされるか否かを正確に判断することができ、さらに複数のオペレータタイプから、低速ノードの問題が発生可能なターゲットオペレータタイプを正確にフィルタリングすることができる。低速ノードの問題があるか否かを分析する場合、異なるオペレータタイプのサブタスクが異なる指標情報を使用する必要があるため、ターゲットオペレータタイプを決定した後、実行指標情報から各第1サブタスクのそれぞれに対応する検出対象の指標情報をフィルタリングし、検出対象の指標情報を使用して低速ノードを検出し、各第1サブタスクから、実行速度の遅い第2サブタスクを正確に決定することができる。そして、サブタスクがサービスクラスターに含まれるマシンの計算ノードによって実行できるため、第2サブタスクを決定した後は、第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードの問題を伴う低速ノードマシンを正確に決定できるため、低速ノードの問題を正確に検出できる。また、ストリームデータ処理タスクの実行中に、実行マシンにより実行指標情報をリアルタイムにアップロードできるため、実行指標情報をリアルタイムに取得でき、さらにその実行指標情報を利用して低速ノードの問題をリアルタイムで把握でき、検出のリアルタイム性が向上した。
【0018】
本開示の上述の目的、特徴および利点をより明白かつ理解しやすくするために、以下に好ましい実施例を挙げ、添付の図面を参照しながら詳細に説明する。
【図面の簡単な説明】
【0019】
本開示の実施例の技術的解決手段をより明確に説明するために、実施例で使用される図面を以下に簡単に紹介する。これらの図面は本明細書に組み込まれ、本明細書の一部を構成する。これらの図面は、本開示と一致する実施例を示し、明細書とともに、本開示の技術的解決手段を説明するために使用される。以下の図面は、本開示の特定の実施例を示すだけであり、したがって、範囲を限定するものとはみなされず、当業者であれば、創造的な努力をすることなく、これらの図面に基づいて、他の関連する図面を取得することもできることを理解されたい。
【0020】
図1図1は、本開示の実施例によって提供される、タスク実行時の低速ノードの検出方法のフローチャートを示す。
図2図2は、本開示の実施例によって提供される、実行速度の遅い第2サブタスクを決定するための特定のフローチャートを示す。
図3図3は、本開示の実施例によって提供される、低速ノードマシンを決定するための特定のフローチャートを示す。
図4図4は、本開示の実施例によって提供される、低速ノード検出方法のインタラクション概略図を示す。
図5図5は、本開示の実施例によって提供される、タスク実行時の低速ノードの検出装置の概略図を示す。
図6図6は、本開示の実施例によって提供される電子機器の概略構造図である。
【発明を実施するための形態】
【0021】
本開示の実施例の目的、技術的解決手段、および利点をより明確にするために、本開示の実施例における技術的解決手段を、本開示の実施例における添付図面を参照して以下に明確かつ完全に説明し、明らかに、説明される実施例は、本開示の実施例のすべてではなく、一部にすぎない。本明細書で一般的に説明および図示される本開示の実施例の構成要素は、様々な異なる構成で配置および設計することができる。したがって、本開示の実施例に関する以下の詳細な説明は、請求される本開示の範囲を限定することを意図するものではなく、単に本開示の選択された実施例を表すものである。本開示の実施例に基づいて、創造な努力なしに当業者によって得られる他のすべての実施例は、本開示の保護の範囲内に含まれる。
【0022】
また、本開示の実施例の明細書および特許請求の範囲、ならびに上述の図面における「第1」、「第2」などの用語は、類似したオブジェクトを区別するために使用されるが、必ずしも特定の順序またはシーケンスを説明するために使用されるわけではない。このように使用されるデータは、本明細書で説明される実施例が、本明細書で図示または説明される内容以外の順序で実施できるように、適切な状況下で交換可能であることを理解されたい。
本明細書で言及される「複数またはいくつかの」とは、2つ以上を意味する。「および/または」は、関連付けられたオブジェクト間の関係を表し、3つの関係が存在する可能性があることを意味し、例えば、Aおよび/またはBは、Aが単独で存在し、AとBが同時に存在し、Bが単独で存在するという3つの場合を表すことができる。文字「/」は通常、関連するオブジェクトが「または」の関係にあることを表す。
【0023】
調査によると、ストリームデータ処理シナリオにおける低速ノードの検出に対して、一般的な検出方法は、いくつかのマシン監視サービスを使用して、マシンの中央処理装置(Central Processing Unit,CPU)の使用率など、マシンのコア指標を検出し、使用率が閾値に達すると、マシンに低速ノードの問題があると見なされる。この方法では、低速ノードの問題を検出できるが、通常、検出が不正確になるという問題がある。例えば、通常の状況では、控えめな閾値を設定する必要があるが、ストリームデータ処理タスクが遅延に非常に敏感であり、ストリームデータ処理タスクのタイプによって感度も異なるため、控えめな閾値ですべてのタイプのストリームデータ処理タスクをカバーすることはできず、検出の精度に影響する。また、この方法では、クラスターの動作環境を監視する機能がなく、例えば、特定のネットワークセグメントのマシンネットワークに突然の変動や遅延が発生した場合、この方法ではそれを検出できず、検出結果にずれが生じる。
【0024】
上記の研究に基づいて、本開示は、タスクの実行時の低速ノードの検出方法、装置、電子機器、および記憶媒体を提供する。実行指標情報が、ストリームデータ処理タスクの実行中に各オペレータタイプの各サブタスクに関する指標情報を含むことができるため、取得した実行指標情報を低速ノードの検出に利用することで、様々な指標情報の総合的な分析および検出を実現し、決定された低速ノードマシンの精度を高めることができる。オペレータタイプ間のトポロジー構造と異常原因情報に基づいて、そのオペレータタイプのタスク異常が他のオペレータタイプのタスク異常によって引き起こされるか否かを正確に判断し、複数のオペレータタイプから、低速ノードの問題が発生可能なターゲットオペレータタイプを正確にフィルタリングすることができる。低速ノードの問題があるか否かを分析する場合、異なるオペレータタイプのサブタスクが異なる指標情報を使用する必要があるため、ターゲットオペレータタイプを決定した後、実行指標情報から各第1サブタスクのそれぞれ対応する検出対象の指標情報をフィルタリングし、検出対象の指標情報を使用して低速ノードを検出し、各第1サブタスクから、実行速度の遅い第2サブタスクを正確に決定することができる。そして、サブタスクがサービスクラスターに含まれるマシンの計算ノードによって実行できるため、第2サブタスクを決定した後は、第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードの問題を伴う低速ノードマシンを正確に決定できるため、低速ノードの問題を正確に検出できる。また、ストリームデータ処理タスクの実行中に、実行マシンにより実行指標情報をリアルタイムにアップロードできるため、実行指標情報をリアルタイムに取得でき、さらにその実行指標情報を利用して低速ノードの問題をリアルタイムに把握でき、検出のリアルタイム性が向上した。
【0025】
上記の解決手段における欠陥はすべて、発明者が実践と慎重な研究の後に得た結果であるため、上記の問題の発見プロセスおよび上記の問題に対して本開示によって提案される以下の解決手段は、本開示の過程において発明者が本開示に貢献するものである。
【0026】
以下の図において同様の符号および文字が類似の項目を表すため、ある図で項目を定義したら、後続の図ではそれ以上の定義および説明を必要としないことに留意されたい。
【0027】
本開示の各実施例で開示される技術的解決手段を使用する前に、本開示に係る個人情報の種類、利用範囲、利用シーンなどを、関係法令に従い適切な手段によりご利用者に通知し、ご本人の同意を得るものとする。
【0028】
なお、本開示の実施例で言及される特定の名詞は、以下を含む。
Flink:中国語名はフリンクで、オープンソースのストリーム処理フレームワークであり、そのコアがJavaとScalaで書かれた分散ストリームデータフローエンジンであり、Flinkは、任意のストリームデータプログラムをデータ並列およびパイプライン方式で実行する。
Kubernetesは、K8sと略称され、クラウドプラットフォーム内の複数のホスト上でコンテナ化されたアプリケーションを管理するために使用されるオープンソースアプリケーションであり、Kubernetesの目標が、コンテナ化されたサービスクラスターの分散配置をシンプルかつ効率的にすることである。
Yarn:上位層アプリケーションに統合されたリソース管理とスケジューリングを提供する一般的なリソース管理システムである。
【0029】
本実施例の理解を容易にするために、まず、本開示の実施例で開示される、タスク実行時の低速ノードの検出方法について、詳細に説明する。本開示の実施例によって提供される、タスク実行時の低速ノードの検出方法の実行主体は、一般に、特定のコンピューティング能力を備えた端末機器、または他の処理機器であり、端末機器は、ユーザー機器(User Equipment,UE)、モバイル装置、ユーザー端末、端末、パーソナルデジタルアシスタント(Personal Digital Assistant,PDA)、ハンドヘルドデバイス、電子機器などであってもよく、いくつかの可能な実現形態において、当該タスク実行時の低速ノードの検出方法は、プロセッサによってメモリに記憶されたコンピュータ読み取り可能な命令を呼び出すことによって実現することができる。
【0030】
以下、実行主体が電子機器であることを例として、本開示の実施例によって提供される、タスク実行時の低速ノードの検出方法について説明する。
【0031】
図1に示すように、本開示の実施例によって提供される、タスク実行時の低速ノードの検出方法のフローチャートであり、以下のステップを含むことができる。
【0032】
S101:複数のオペレータタイプのサブタスクを含むストリームデータ処理タスクの、実行指標情報を取得する。
【0033】
ここで、ストリームデータ処理タスクは、Flinkエンジンを利用してデータ処理要件に従って、連続的なストリームデータを処理するタスクであってもよい。ストリームデータ処理シナリオでは、多くの場合、複数タイプのストリームデータ処理タスクを含むことができ、異なるタイプのストリームデータ処理タスクが異なるデータ処理要件に対応する。1つタイプのストリームデータ処理タスクは、1つタイプのFlinkタスクと呼ばれ、以下のFlinkタスクはすべて、ストリームデータ処理タスクを指す。本開示の実施例によって提供される、タスクの実行時の低速ノードの検出方法は、あらゆるタイプのストリームデータ処理タスクに対して、低速ノードを検出するために使用することができる。例示的に、Flinkタスクは、例えば、リスト計算タスク、注文数計算タスク、インタラクション情報計算タスク、情報推奨タスクなどであってもよい。
【0034】
ストリームデータ処理タスクの場合、複数のオペレータタイプのサブタスクを含むことができ、各オペレータタイプのサブタスクは、少なくとも1つを含むことができ、各オペレータタイプのサブタスクの数は、当該オペレータタイプに対応するタスクの並列性に基づいて決定できる。各サブタスクは、サービスクラスターに含まれるマシン内の計算ノードによって実行されてもよく、1つのサービスクラスターは、少なくとも1つのマシンを含むことができ、1つのマシンは、少なくとも1つの計算ノードを含むことができる。Flinkタスクは、少なくとも1つのサービスクラスターによって実行可能であり、各Flinkクラスターは、1つのFlinkエンジンが配置され、1つのFlinkエンジンは、1つのジョブマネージャー(JobManager,JMと略称する)と複数のタスクマネージャー(TaskManager,TMと略称する)に対応でき、1つのTMは、マシン内の1つの計算ノードであり、1つのTMは少なくとも1つのサブタスクを実行でき、JMは、各TMを管理し、TMに対して実行する必要があるサブタスクをスケジュールするために使用される。
【0035】
様々なオペレータタイプのサブタスクは、多くの場合、異なるコンピューティング能力と異なるデータ処理機能を備えており、ストリームデータを異なる方法で処理するために使用される。例示的に、オペレータタイプは、例えば、データ消費タイプのソースsourceオペレータ、データ出力タイプのシンクsinkオペレータ、データ反復タイプのマップmapオペレータ、データ同期タイプの同期syncオペレータなどを含むことができる。様々なオペレータタイプのサブタスクには通信機能があり、様々なオペレータタイプ間にはトポロジー関係が存在し、トポロジー関係は、様々なオペレータタイプのサブタスク間の通信関係と実行シーケンスを示すために使用され、例えば、トポロジー関係は、sourceオペレータ->syncオペレータ->sinkオペレータであってもよく、当該トポロジー関係が示す通信関係は、次の通りであり、sourceオペレータタイプのサブタスクとsyncオペレータのサブタスクとの間には通信関係があり、syncオペレータのサブタスクとsinkオペレータのサブタスクとの間には通信関係があり、示される実行順序は、sourceオペレータタイプのサブタスクを実行した後、syncオペレータのサブタスクを実行し、syncオペレータのサブタスクを実行した後、sinkオペレータタイプのサブタスクを実行することである。
【0036】
選択可能に、1つのオペレータタイプを複数のサブタイプに再分割でき、各サブタイプには当該サブタイプのサブタスクが含まれる。例えば、データ出力タイプのシンクsinkオペレータの場合、データ出力タイプ1に対応するsink1オペレータ、データ出力タイプ2に対応するsink2オペレータ、データ出力タイプ3に対応するsink3オペレータという3つのサブタイプを含むことができる。この場合、オペレータタイプ間のトポロジー関係は、様々なオペレータタイプとサブタイプとの間のトポロジー関係であってもよい。例えば、トポロジー関係は、sourceオペレータ->syncオペレータ->sink1オペレータ->sink2オペレータ->sink3オペレータであってもよく、syncオペレータの後にsink1のほか、sink3オペレータを接続してもよい。
【0037】
実行指標情報は、低速ノードの問題があるか否かを判断するための指標情報であり、ストリームデータ処理タスクの実行中に、ストリームデータ処理タスクに関連した各Flinkエンジンの各タイプのエンジン指標情報を示すことができ、具体的には、ストリームデータ処理タスクを実行している中に、各オペレータタイプの各サブタスクに関連する指標情報、およびストリームデータ処理タスク全体に関連するいくつかの指標情報を含むことができる。理解を容易にするために、Flinkタスクの実行指標情報は、例えば、Flinkタスク全体に関連するいくつかの指標情報、および各TMで実行されるサブタスクに関連する指標情報を含むことができる。
【0038】
例示的に、実行指標情報は、Flinkタスクのデータ遅延時間、Flinkタスクに含まれる各サブタスクのデータ遅延指標(即ち、遅延時間lagtime指標)、様々なオペレータタイプの異常原因指標(即ち、バックプレッシャbackpressured指標)、各サブタスクのアイドル状態指標(即ち、ビジーbusy指標)を含むことができ、このうち、データ遅延指標は、タスクのデータ遅延時間を示すために使用され、異常原因指標は、各オペレータタイプのバックプレッシャ度合いを示すために使用され、あるオペレータタイプのbackpressured指標に対応するバックプレッシャ度合いがバックプレッシャ閾値よりも大きい場合、当該オペレータタイプのサブタスクは、トポロジー関係を持つ他のオペレータタイプのサブタスクによってバックプレッシャがかけられることを意味し、したがって、異常原因指標は、様々なオペレータタイプの異常原因情報を表すために使用され、アイドル状態指標は、タスクのビジー度合いを表すために使用される。
【0039】
具体的に実施するとき、Flinkタスクに関連する各サービスクラスター内のマシンは、Flinkタスクの実行中に生成された実行指標情報を指標データベースにアップロードできる。このうち、指標データベースは、低速ノード自動検出サービスを提供するマシンと各サービスクラスターから独立した外部記憶システムであってもよく、Flinkタスクの実行時に各サービスクラスターによって生成される実行指標情報を動的に維持するために使用される。Flinkタスクを実行するサービスクラスターに対して低速ノードの検出が必要であると判断した場合、指標データベースから、対応する実行時間内にサービスクラスターによって生成された実行指標情報を取得できる。ここで、実行時間は、過去15分、過去30分などの予め設定された期間であってもよく、サービスクラスターがFlinkタスクを実行していた持続時間であってもよい。
【0040】
なお、本開示の実施例によって提供される、タスク実行時の低速ノードの検出方法は、低速ノードの自動検出サービスの形式でマシンに設定可能であり、検出する必要があるストリームデータ処理タスクが大規模または超大規模タスクである場合、低速ノード自動検出サービスを少なくとも1つのサービスクラスターに分散して設定できる。あらゆるタイプのFlinkタスクに対して低速ノードの検出を実行する必要がある場合、負荷分散戦略に従ってサービスクラスターからアイドル状態の任意のマシンを決定でき、当該マシンを使用して、設定された低速ノードの自動検出サービスに基づいて、本開示の実施例によって提供される、タスク実行時の低速ノードの検出方法に従って、当該Flinkタスクに対して低速ノードを検出する。例えば、検出周期を予め設定しておき、予め設定された検出周期に従って、Flinkタスクに対応するサービスクラスターに対して、低速ノードの検出を行うことができる。検出された低速ノードは、具体的には、サービスクラスター内の1つ以上のマシンであってもよい。
【0041】
S102:様々なオペレータタイプの間のトポロジー関係と実行指標情報が示す異常原因情報とに基づいて、異常のあるターゲットオペレータタイプを決定する。
【0042】
ここで、トポロジー関係とは、各オペレータタイプのタスク間の通信関係および実行順序を示すために使用される。異常原因情報は、特定のオペレータタイプのタスク異常および他のオペレータタイプのタスク異常との間の関連関係を示すために使用され、当該関連関係は、特定のオペレータタイプのタスク異常が他のオペレータタイプのタスク異常によって引き起こされるか否かを反映できる。異常原因情報は、実行指標情報における様々なのオペレータタイプのバックプレッシャ指標が示す情報であり、オペレータタイプのバックプレッシャ指標に対応するバックプレッシャの度合いがバックプレッシャ閾値よりも大きい場合、オペレータタイプのサブタスク異常がトポロジー関係を持つ他のオペレータタイプのサブタスクからの異常なバックプレッシャによって引き起こされるか否かを示すことができるため、バックプレッシャ指標が示す異常原因情報は、オペレータタイプのタスク異常が、トポロジー関係を持つ他のオペレータタイプのタスク異常に関連しているか否かを示すことができる。
【0043】
1つのオペレータタイプは、異常原因情報に対応することができ、当該オペレータタイプのバックプレッシャ指標が示すバックプレッシャの度合いによって決定される。
【0044】
例示的に、トポロジー関係は、sourceオペレータ->syncオペレータ->sink1オペレータ->sink2オペレータであってもよく、sourceオペレータおよびsyncオペレータに対応するバックプレッシャ指標はいずれも、バックプレッシャ閾値よりも大きく、sink1オペレータ指標により示されるバックプレッシャの度合いがバックプレッシャ閾値よりも小さい場合、sourceオペレータタイプのサブタスクの異常は、syncオペレータタイプのサブタスクのバックプレッシャの異常によって引き起こされ、syncオペレータタイプのサブタスクの異常は、sink1オペレータタイプのサブタスクの異常なバックプレッシャによって引き起こされると決定できる。したがって、sourceオペレータタイプに対応する異常原因情報は、「はい」であってもよく、syncオペレータは、「はい」であってもよく、sink1オペレータタイプとsink2オペレータタイプに対応する異常原因情報はいずれも、「いいえ」となる。
【0045】
具体的に実施するとき、Flinkタスクの実行指標情報を取得した後、実行指標情報内の、Flinkタスクに関連するデータ遅延指標に基づいて、Flinkタスクに対応するタスク遅延時間を決定することができる。タスク遅延時間がタスク遅延時間閾値以下の場合、低速ノードの問題はないと判断できる。逆に、タスク遅延時間がタスク遅延時間閾値よりも大きい場合、Flinkタスクには大きな遅延問題があると判断でき、Flinkエンジンのアイドル状態のアプリケーションプログラミングインターフェース(Application Programming Interface,APIと略称する)を使用して、実行指標情報における各オペレータタイプに対応するバックプレッシャ指標が示すバックプレッシャの度合いに基づいて、各オペレータタイプに対応する異常原因情報を決定する。
【0046】
そして、様々なオペレータタイプに対応する異常原因情報に基づいて、各オペレータタイプのサブタスクにバックプレッシャが存在するか否か、即ち様々なオペレータタイプに対応する異常原因情報には、特定のオペレータタイプのタスク異常が他のオペレータタイプのタスク異常に関連することを示す異常原因情報があるか否かを決定する。そうであれば、サブタスクのバックプレッシャがあると判断でき、様々なオペレータタイプ間のトポロジー関係に基づいて、複数のオペレータタイプからバックプレッシャの原因となるルートタイプを決定し、当該タイプをターゲットオペレータタイプとして使用する。例えば、トポロジー関係がsourceオペレータ->syncオペレータ->sink1オペレータ->sink2オペレータ->sink3オペレータである場合、sourceオペレータタイプとsyncオペレータに対応する異常原因情報がいずれも、バックプレッシャがかけられたことを示す場合、sink1オペレータタイプ、sink2オペレータタイプ、およびsink3オペレータタイプに対応する異常原因情報がいずれも、バックプレッシャがかけられていないことを示す場合、ルートタイプがsink1オペレータタイプであると決定でき、即ち、sink1オペレータタイプが、ターゲットオペレータタイプであると決定できる。ターゲットオペレータタイプに対応する異常は、当該オペレータタイプのサブタスクに異常があることを示すために使用される。
【0047】
各オペレータタイプの異常原因情報がいずれも、バックプレッシャがかけられていないことを示すと決定した場合、即ち、様々なオペレータタイプのサブタスクに対してバックプレッシャがかけられていないと決定した場合、ターゲットオペレータタイプが、データ消費タイプ(即ち、sourceオペレータタイプ)であると決定することができる。
【0048】
S103:複数のオペレータタイプのサブタスクから、ターゲットオペレータタイプの各第1サブタスクをフィルタリングし、実行指標情報から各第1サブタスクのそれぞれに対応する検出対象の指標情報を決定する。
【0049】
ここで、第1サブタスクは、ターゲットオペレータタイプを有するサブタスクである。検出対象の指標情報は、実行指標情報において、ターゲットオペレータタイプの第1サブタスクに低速ノードの問題があるか否かかを判断するための指標情報であってもよい。
【0050】
異なるオペレータタイプのサブタスクには、異なる低速ノード指標情報が必要であり、即ち、異なるオペレータタイプのサブタスクに低速ノードの問題があるか否かを検出するときに、異なる実行指標情報を使用する。例えば、ターゲットオペレータタイプがsourceオペレータタイプである場合、データ遅延指標が示すデータ遅延時間で判断でき、ターゲットオペレータタイプがsourceオペレータタイプ以外の他のオペレータタイプである場合、アイドル状態指標が示すタスクアイドル状態で判断できる。
【0051】
例示的に、ターゲットオペレータタイプがsourceオペレータタイプである場合、実行指標情報から、sourceオペレータタイプの各第1サブタスクのそれぞれに対応するデータ遅延指標を取得でき、ターゲットオペレータタイプがsourceオペレータタイプ以外のオペレータタイプの場合、実行指標情報から、各第1サブタスクのそれぞれに対応するアイドル状態指標を取得する。
【0052】
S104:検出対象の指標情報を使用して、第1サブタスクから実行速度が遅い第2サブタスクを決定し、第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定する。
【0053】
ここで、第2サブタスクは、TM内の実行速度が遅い第1サブタスクであってもよく、実行マシンは、第2サブタスクを実行するTMが配置されたマシンである。低速ノードマシンは、Flinkタスクを実行する各サービスクラスターに含まれるマシンのうちの、低速ノードの問題があるマシンであってもよい。
【0054】
具体的に実施するとき、各第1サブタスクに対し、第1サブタスクの検出対象の指標情報に異常があるか否かを判断することができ、異常がある場合には、当該第1サブタスクを第2サブタスクとして使用することができ、異常がない場合、当該第1サブタスクが正常に実行されると決定できる。あるいは、第1サブタスクごとについて、第1サブタスクのターゲットオペレータタイプに基づいて、当該ターゲットオペレータタイプの低速ノードの検出方法を決定することができ、その低速ノードの検出方法を使用して、第1サブタスクの検出対象の指標情報を検出し、第1サブタスクが第2サブタスクとして使用できるか否かを決定する。様々なターゲットオペレータタイプに対応する低速ノードの検出方法について、後ほど詳しく説明する。
【0055】
第2サブタスクを決定した後、第2サブタスクを実行するためのTMが配置される実行マシンを先に決定することができ、その後、その実行マシンを低速ノードマシンとして直接使用することができる。あるいは、第2サブタスクを実行するTMが配置される実行マシンを決定した後、検出対象の指標を使用して実行マシンをさらに検出して、実行マシンに低速ノードの問題があるか否かを決定し、それによって正確な低速ノードマシンを決定することもできる。
【0056】
選択可能に、Flink自体に低速ノードの問題がない場合、決定された第2サブタスクの数が0であってもよく、低速ノードマシンの数も0であってもよい。
【0057】
一実施例において、S104の「第2サブタスクを決定する」ステップについて、ターゲットオペレータタイプが異なる場合、異なる低速ノードの検出方法を使用してそれを完了することができる。具体的には、ターゲットオペレータタイプがデータ消費タイプである場合、以下のS104-1~S104-3が示す低速ノードの検出方法に従って、第2サブタスクを決定することができる。
【0058】
S104-1:ターゲットオペレータタイプがデータ消費タイプに属する場合、各第1サブタスクがメッセージキューからデータを読み取るときに依存する各データパーティション基づいて、第1サブタスクに対応する検出対象の指標情報から、各データパーティションに対応するデータ遅延時間を決定する。
【0059】
ここで、sourceオペレータタイプの第1サブタスクは、メッセージキュー((Message Queue,MQと略称する)からデータを読み取るために使用され、メッセージキューには複数のデータパーティションが存在することができ、異なるデータパーティションが異なるトピックのストリームデータを記憶するために使用される。メッセージキューは、従来の技術における任意のタイプのメッセージキュー、例えば、ウサギのメッセージキュー(RabbitMQ)、ロケットメッセージキュー(RocketMQ)、アクティブなメッセージキュー(ActiveMQ)、カフカメッセージキュー(kafka)などであってもよい。以下では、例としてkafkaキューをメッセージキューとして使用して説明する。データパーティションは、kafkaキュー内の各Partitionであってもよい。
【0060】
1つのサブタスクは、メッセージキューの少なくとも1つのデータパーティション内にデータを読み取んで消費でき、メッセージキューからデータを読み取るとき、異なるサブタスクが異なるデータパーティションに依存する。
【0061】
ターゲットオペレータタイプがsourceオペレータタイプに属する場合、検出対象の指標情報は、各第1サブタスクが依存する各データパーティションのそれぞれに対応するデータ遅延指標を含むことができ、データ遅延指標は、データパーティションに対応するデータ遅延時間を示すことができ、データパーティションのデータ遅延時間が、パーティション遅延Partition lagで表現できる。
【0062】
具体的に実施するとき、ターゲットオペレータタイプがsourceオペレータタイプである場合、kafkaキューからストリームデータを読み取るときに、sourceオペレータタイプの各第1サブタスクで使用されるデータパーティションを先に決定できる。ここで、1つのサブタスクは、少なくとも1つのデータパーティションに対応する。次に、各サブタスクについて、当該第1サブタスクの検出対象の指標情報から、当該第1サブタスクで使用される各データパーティションに対応するデータ遅延指標を決定し、データ遅延指標に基づいて、各データパーティションに対応するデータ遅延時間を決定し、即ち、各PartitionのPartition lagを決定する。
【0063】
S104-2:データ遅延時間に基づいて、データ遅延時間が予め決定された時間より大きいデータパーティションの第2数を決定する。
【0064】
ここで、予め設定された時間は、経験に基づいて設定することができ、本開示の実施例では具体的に限定されない。例示的に、予め設定された時間は、0であってもよい。第2数は、Partition lagが予め設定された時間よりも大きいデータパーティションの数である。
【0065】
具体的に実施するとき、各第1サブタスクに対応する各データパーティションのPartition lagを取得した後、Partition lagが予め設定された時間よりも大きいデータパーティションがあるか否かを判断し、即ち、遅れているデータパーティションがあるか否かを判断することができる。そうでない場合、各第1サブタスクはいずれも、正常に実行されており、実行速度が遅いという問題はないと決定できる。そうである場合、Partition lagが予め設定された時間よりも大きいデータパーティションの第2数を決定することができる。
【0066】
S104-3:第2数とパーティションの総数との第3比値が第3予め設定された比値よりも小さい場合、各データパーティションに対応するデータ遅延時間に基づいて、第1サブタスクから第2サブタスクを決定し、パーティションの総数が各第1サブタスクが依存するデータパーティションの総数である。
【0067】
ここで、パーティションの総数は、各第1サブタスクがそれぞれ依存するデータパーティションの数の合計である。ここで、第3予め設定された比値は、経験に基づいて設定することができ、本開示の実施例では具体的に限定されない。例示的に、第3予め設定された比値は、1/5であってもよい。
【0068】
具体的に実施するとき、第2数を決定した後、第2数とパーティションの総数との第3比値が第3予め設定された比値よりも小さいか否かを判断する。そうでない場合、Flinkタスクにはマシンとは関係のない大きな遅れが発生すると判断でき、第1サブタスク内に第2サブタスクが存在しないと決定できる。そうである場合、第2数のデータパーティションのデータ遅延は、第1サブタスクを実行するマシンによって引き起こされる可能性があると決定でき、各第1サブタスクに対応するデータパーティションのPartition lagに基づいて、第1サブタスクから第2サブタスクをフィルタリングする。例えば、Partition lagがが予め設定されたパーティション時間より大きいデータパーティションに対応する第1サブタスクは、フィルタリングされた第2サブタスクとして使用できる。
【0069】
一実施例において、S104-3における「各データパーティションに対応するデータ遅延時間に基づいて、第1サブタスクから第2サブタスクを決定する」ステップは、次のステップに従って実施することができる。
【0070】
S104-3-1:各データパーティションに対応するデータ遅延時間に基づいて、各データパーティションにおいて、データ遅延時間が第1異常条件を満たすフィルタリング対象のデータパーティションがあるか否かを判定する。
【0071】
ここで、第1異常条件は、各データパーティションのデータ遅延時間から、異常な遅延時間をフィルタリングするために使用される。例示的に、第1異常条件は、データ遅延時間が第1指定時間より大きいか、または各データパーティションのデータ遅延時間の中央値との差が第2指定時間よりも大きいことなどであってもよい。具体的に実施するとき、第1異常条件は、経験に基づいて設定することができ、本開示の実施例では具体的に限定されない。
【0072】
具体的に実施するとき、異常値フィルタリングアルゴリズムを使用して、各データパーティションに対応するデータ遅延時間に対して異常のフィルタリングを実行し、第1異常条件を満たすターゲット遅延時間があるか否かを決定できる。そうである場合、ターゲット遅延時間に対応するデータパーティションをフィルタリング対象のデータパーティションとして使用することができ、以下のS104-3-2を実行することができる。決定されたフィルタリング対象のデータパーティションの数は、1つ以上であってもよい。そうでない場合、各第1サブタスクの通常な遅れと考えられ、実行速度が遅いという問題はないとみなすことができる。
【0073】
例えば、データパーティション1~10のそれぞれに対応するデータ遅延時間が10、10、10、100、1000、および10000である場合、ターゲット遅延時間が100、1000、および10000であると決定でき、これら3つのターゲット遅延時間のそれぞれに対応するデータパーティションを、フィルタリング対象のデータパーティションとして使用することができる。
【0074】
S104-3-2:そうである場合、フィルタリング対象のデータパーティションに依存する第1サブタスクのクエリ毎秒に基づいて、第2サブタスクを決定する。
【0075】
ここで、クエリ毎秒Queries-per-second、略してQPSは、タスクを実行するマシンによって1秒間に処理されるタスクトラフィックの量を示すために使用される。
【0076】
具体的に実施するとき、データ遅延時間が異常なフィルタリング対象のデータパーティションがあると決定した後、フィルタリング対象のデータパーティションのストリームデータを使用する第1サブタスクの入流QPSを決定し、その後、入流QPSが第1サブタスクの平均QPSの所定の倍数以上であるか否かを判断できる。そうでない場合は、当該入流QPSを持つ第1サブタスクを第2サブタスクとして使用し、そうである場合、当該入流QPSを持つ第1サブタスクのPartition lagがデータの不均衡によって引き起こされると決定でき、マシンを移行しても遅延の問題を解決できないため、当該第1サブタスクを通常実行中のサブタスクとして決定し、処理しない。
【0077】
このようにして、データ遅延時間の異常値をフィルタリングすることにより、遅延が大きいサブタスクを決定し、遅延が大きいサブタスクに基づいて、低速ノードの問題がある低速ノードマシンを正確に決定できる。
【0078】
別の実施例において、S104の「第2サブタスクを決定する」ステップについて、ターゲットオペレータタイプがデータ消費タイプ以外の他のオペレータタイプに属する場合、ステップ1およびステップ2に示される低速ノードの検出方法に従って、第2サブタスクを決定する。
【0079】
ステップ1、ターゲットオペレータタイプがデータ消費型以外の他のオペレータタイプに属する場合、各第1サブタスクの検出対象の指標情報が示すタスクのアイドル状態に基づいて、タスクのアイドル状態が第2異常条件を満たす第3サブタスクがあるか否かを判定する。
【0080】
ここで、ターゲットオペレータタイプがsourceオペレータタイプに属さない場合、ターゲットオペレータタイプがsourceオペレータタイプ以外の他のオペレータタイプのうちのどのオペレータタイプに属することに関わらず、第1サブタスクの検出対象の指標情報はいずれも、各第1サブタスクのアイドル状態指標であってもよい。
【0081】
第2異常条件は、第1サブタスクから、異常にビジーな第3サブタスクをフィルタリングするために使用され、例示的に、第2異常条件は、タスクのアイドル状態が第1予め決定された度合いよりも小さいか、または各第1サブタスクのアイドル状態の中央値との差が第2予め決定された度合いなどよりも大きいことであってもよい。具体的に実施するとき、第2異常条件は、経験に基づいて設定することができ、本開示の実施例では具体的に限定されない。
【0082】
具体的に実施するとき、ターゲットオペレータタイプがsourceオペレータタイプに属さない場合、異常値フィルタリングアルゴリズムを使用して、各第1サブタスクの検出対象の指標情報が示すタスクアイドル状態に基づいて、アイドル状態が第2異常条件を満たす第3サブタスクがあるか否かを判定することができる。そうである場合、異常にビジーな第3サブタスクがあると決定することができ、決定された第3サブタスクに基づいて次のステップ2を実行することができる。
【0083】
そうでない場合、各第1サブタスクがいずれも、比較的アイドル状態にあってもよく、各サブタスクのバックプレッシャが通常の範囲内にあり、各第1サブタスクを通常実行中のサブタスクと見なすことができ、低速ノードの問題がないため、処理しなくてもよい。
【0084】
ステップ2、そうである場合、第3サブタスクのクエリ毎秒および予め設定されたクエリレートに基づいて、第2サブタスクを決定する。
【0085】
ここで、予め設定されたクエリレートは、第3サブタスクの平均QPSの予め設定された倍数であってもよく、予め設定された倍数は、経験に基づいて設定することができ、ここでは特に限定されない。例示的に、予め設定された倍数は、1.5であってもよい。
【0086】
具体的に実施するとき、異常にビジーな第3サブタスクがあると決定した後、第3サブタスクの入流QPSを決定でき、入流QPSが予め設定されたクエリレート以上であるか否かを判断できる。そうである場合、第3サブタスクがデータスキューによりビジーであると決定でき、マシンを移行しても遅延の問題を解決できず、したがって、当該第3サブタスクが正常に実行されているサブタスクであると決定でき、処理しなく、そうでない場合、第3サブタスクを、実行速度が遅い第2サブタスクとして決定することができる。
【0087】
このようにして、タスクのアイドル状態の異常値をフィルタリングすることに基づいて、異常にビジーな第3サブタスクを決定することができ、第3サブタスクに基づいて、低速ノードの問題がある低速ノードマシンを正確に決定することができる。
【0088】
図2に示すように、本開示の実施例によって提供される、実行速度が遅い第2サブタスクを決定するための特定のフローチャートを示し、以下のステップを含むことができる。
【0089】
S201:Flinkタスクのデータ遅延指標に基づいて、Flinkタスクには非常に大きな遅延があるか否かを判断する。
【0090】
そうでない場合、低速ノードの問題はないと決定でき、そうである場合、次のS202以降のステップを実行する。
【0091】
S202:各オペレータタイプのサブタスクにバックプレッシャがあるか否かを判断する。
【0092】
そうでない場合、S203~S205を実行し、そうである場合、S206~S208を実行する。
【0093】
S203:遅延されたデータパーティションとパーティションの総数との比値が第3予め決定された比値よりも小さいか否かを判定する。
【0094】
そうでない場合、第1サブタスクが広範囲で遅れて、低速ノードの問題がないと決定でき、そうである場合、次のS204を実行する。
【0095】
S204:データ遅延時間が異常なフィルタリング対象のデータパーティションがあるか否かを判定する。
【0096】
そうでない場合、第1サブタスクが通常に遅れて、低速ノードの問題がないと決定でき、そうである場合、次のS205を実行する。
【0097】
S205:フィルタリング対象のデータパーティションに対応する第1サブタスクのクエリ毎秒QPSが、平均QPSの予め決定された倍数以上であるか否かを判断する。
【0098】
そうでない場合、第1サブタスクが実行速度の遅い第2サブタスクであると決定でき、そうでない場合、データの不均衡によって引き起こされた遅延であると決定でき、処理しないままで済む。
【0099】
上述のS203~S205の具体的な実施ステップに関しては、上述のS104-1~S104-3を参照することができ、ここでは繰り返して説明しない。
【0100】
S206:様々なオペレータタイプ間のトポロジー関係に基づいて、ターゲットオペレータタイプの第1サブタスクを決定する。
【0101】
このステップの具体的な実施プロセスについては、S102を参照することができ、ここでは繰り返して説明しない。
【0102】
S207:第1サブタスク内に異常にビジーな第3サブタスクがあるか否かを判定する。
【0103】
そうでない場合、第1サブタスクが通常なバックプレッシャ状態になると決定でき、処理しなく、そうである場合、次のS208を実行する。
【0104】
S208:第3サブタスクのクエリ毎秒QPSが、平均QPSの予め決定された倍数以上であるか否かを判断する。
【0105】
そうである場合、データスキューが存在すると決定でき、処理しなく、そうでない場合、第3サブタスクを、実行速度が遅い第2サブタスクとして決定する。
【0106】
上述のS207~S208の具体的な実施ステップに関しては、上述のステップ1およびステップ2を参照することができ、ここでは繰り返して説明しない。
【0107】
一実施例において、S104の「低速ノードの問題がある低速ノードマシンを決定する」ステップは、次のステップに従って実施することができる。
【0108】
S1:第2サブタスクのターゲット数が予め設定された数よりも大きい場合、各第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、各実行マシンに対応するタスクの数を決定する。
【0109】
ここで、ターゲット数とは、決定された第2サブタスクの総数である。ここで、予め設定された数は、経験に基づいて設定することができ、本開示の実施例では具体的に限定されない。例示的に、予め設定された数は、1であってもよい。1つの実行マシンに対応するタスクの数は、当該実行マシンによって実行される第2サブタスクの総数である。
【0110】
具体的に実施するとき、第2サブタスクを決定した後、まず第2サブタスクの数が1より大きいか否かを判断でき、そうでない場合は、当該第2サブタスクを実行する計算ノードが存在する実行マシンを、低速ノードマシンとして使用する。そうである場合、複数の第2サブタスクのうちのそれぞれを実行する計算ノードが存在する実行マシンに基づいて、各実行マシンに対応するタスクの数を決定する。
【0111】
選択可能に、第2サブタスクの数が1の場合、集約なし移行機能が設定されているか否かをさらに決定することもできる。当該機能は、第2サブタスクの数が1の場合に、唯一の第2サブタスクに対応するマシンを移行するか、または第2サブタスクが複数ある場合、決定された第2サブタスクが1台のマシン上に多数存在しなくても、マシンを移行する。集約なし移行機能が設定された場合、当該唯一の第2サブタスクを実行するTMが配置される実行マシンは、低速ノードマシンであると決定できる。集約なし移行機能が設定されていない場合、低速ノードマシンが存在しないと決定でき、実行速度の遅い第2サブタスクを処理しない。
【0112】
S2:各実行マシンに対応するタスクの数とターゲット数との第1比値に基づいて、低速ノードマシンを決定する。
【0113】
具体的に実施するとき、第2サブタスクを実行するための実行マシンごとについて、当該実行マシンに対応するタスクの数とターゲット数との第1比値を決定することができる。各実行マシンに対応する第1比値を取得した後、各第1比値に基づいて、低速ノードマシンを決定することができる。例えば、最大の第1比値に対応する実行マシンを低速ノードマシンとして使用することができる。
【0114】
一実施例において、各実行マシンのそれぞれに対応する第1比値を取得した後、第1比値と第1予め決定された比値との間の大小関係を決定することができ、低速ノードマシンを様々な方法で決定することができる。ここで、第1予め設定された比値は、経験に基づいて設定することができ、本開示の実施例では具体的に限定されない。例示的に、第1予め設定された比値は、2/3であってもよい。
【0115】
具体的には、第1予め設定された比値以上のターゲット比値がある場合、そのターゲット比値に対応する実行マシンを低速ノードマシンとして使用する。
【0116】
ここで、ターゲット比値は、第1予め設定された比値以上の第1比値であってもよい。具体的には、ターゲット比値がある場合、ターゲット比値に対応する実行マシンを低速ノードマシンとして使用することができる。このように、ターゲット比値が第1予め設定された比値以上であるため、ターゲット比値に対応する実行マシンは、実行速度の遅い第2サブタスクが多いマシンであり、当該マシンを低速ノードマシンとして扱い、次のステップを使用して移行することにより、マシン移行の合理性と複数の第2サブタスクの実行効率を向上することができる。
【0117】
または、各第1比値のそれぞれが第1予め設定された比値よりも小さい場合、各第2サブタスクの検出対象の指標情報が示す指標異常度に基づいて、指標異常度が最も大きい第2サブタスクに対応する実行マシンを、低速ノードマシンとして使用する。
【0118】
ここで、指標異常度は、検出対象の指標情報における指標値の異常度であってもよい。例えば、ターゲットオペレータタイプがsourceオペレータタイプである場合、検出対象の指標情報が示す指標異常度は、各データパーティションに対応するデータ遅延時間の長さを反映することができる。ソースオペレータタイプがsourceオペレータタイプに属さない場合、検出対象の指標情報が示す指標異常度は、各第1サブタスクのタスクアイドル状態の度合いを反映することができる。
【0119】
具体的に実施するとき、各第1比値が第1予め設定された比値よりも小さい場合、つまり、第1予め設定された比値以上の第1比値が存在しない場合、ターゲット数の第2サブタスクには、マシンの集約(即ち、ターゲット数の第2サブタスクが同じマシンに多数集められていることがない)がないと示す。この場合、各第2サブタスクの検出対象の指標情報が示す指標異常度に基づいて、指標異常度が最も大きい第2サブタスクに対応する実行マシンを、低速ノードマシンとして使用する。例えば、第2サブタスクがsourceオペレータタイプのサブタスクである場合、データ遅延時間が最も長いデータパーティションに対応する第2サブタスクが存在する実行マシンを、低速ノードマシンとして使用することができる。第2サブタスクがsourceオペレータタイプのサブタスクに属しない場合、タスクのアイドル状態の最も少ない第2サブタスクが存在する実行マシンを、低速ノードマシンとして使用することができる。このようにして、マシンの集約および異常値フィルタリングアルゴリズムを通じて、マシンエンジン以外の実行速度の遅い状況をフィルタリングすることができ、決定された実行速度の遅い第2サブタスクの精度を向上させることができる。
【0120】
選択可能に、各第1比値がいずれも、第1予め決定された比値よりも小さい場合、集約なし移行機能が設定されているか否かも判定でき、そうであれば、最大の指標異常度を有する第2サブタスクに対応する実行マシンを低速ノードマシンとして使用し、そうでない場合、第2サブタスクが同じマシンに多数集められていない場合、タスクの実行速度の遅いことは妥当な範囲内であると決定でき、低速ノードマシンがないと決定でき、実行速度の遅い各サブタスクを処理しない。
【0121】
一実施例において、S1は、次のステップに従って実施することができる。
【0122】
S1-1:ターゲットオペレータタイプがデータ消費タイプに属する場合、各第2サブタスクがメッセージキューからデータを読み取るときに依存する各データパーティションに基づいて、第2サブタスクに対応する検出対象の指標情報から、各データパーティションに対応するデータ遅延時間を決定する。
【0123】
具体的に実施するとき、S1を実行する前に、ターゲットオペレータタイプがデータ消費タイプに属するか否かを先に判断することもでき、そうである場合、まずS1-1~S1-4を順番に実行してS2を実行し、そうでない場合、S1とS2を直接実行できるが、このときのS1にはS1-1~S1-4が含まれない。
【0124】
S1-1の具体的な実施プロセスは、上述のS104-1の実施プロセスと類似であるため、ここでは繰り返して説明しない。例示的に、ターゲットオペレータタイプがsourceオペレータタイプに属する場合、検出対象の指標情報から、各第2サブタスクが依存するデータパーティションに対応するPartition lagを取得することができる。
【0125】
S1-2:データ遅延時間に基づいて、データパーティションから複数のターゲットデータパーティションをフィルタリングする。
【0126】
具体的に実施するとき、各データパーティションのPartition lagを使用して、各データパーティションを最長時間から最短時間への順に並べ替えて、各データパーティションの並べ替え順序を取得できる。そして、予め設定された順序よりも並べ替え順序が小さいデータパーティションをターゲットデータパーティションとして使用することができる。このようにして、データパーティションから、Partition lagのより長い複数のパーティションをフィルタリングすることができる。例えば、プリセット順序は11であってもよく、即ち、Partition lagの上位10個の各データパーティションをフィルタリングすることができる。
【0127】
データパーティションの総数が予め設定された順序に対応する値よりも小さい場合、各データパーティションをターゲットデータパーティションとして使用できることが理解できる。
【0128】
S1-3:各ターゲットデータパーティションが属するデータ管理サーバに基づいて、各データ管理サーバに対応するデータパーティションの数を決定する。
【0129】
ここで、異なるデータパーティションは、異なるデータ管理サーバによって管理でき、データ管理サーバは、メッセージキューに対応する各brokerである。データパーティションの数は、即ち、各brokerによって管理されるターゲットデータパーティションの数である。
【0130】
具体的に実施するとき、各ターゲットデータパーティションをフィルタリングした後、各ターゲットデータパーティションが属するデータ管理サーバを決定でき、次に、各データ管理サーバが管理するターゲットデータパーティションの数(つまり、データパーティションの数)をさらに決定できる。
【0131】
S1-4:各データ管理サーバに対応するデータパーティションの数とターゲットデータパーティションの第1数との第2比値がいずれも、第2予め設定された比値よりも小さい場合、各第2サブタスクの計算ノードが存在する実行マシンに基づいて、各実行マシンに対応する前記タスクの数を決定する。
【0132】
ここで、第2予め設定された比値は、経験に基づいて設定することができ、本開示の実施例では具体的に限定されない。例示的に、第2予め設定された比値は、2/3であってもよい。第1数は、即ち、ターゲットデータパーティションの数である。
【0133】
具体的に実施するとき、各データ管理サーバに対応するデータパーティションの数および第1数に従って、各データ管理サーバに対応する第2比値を決定できる。次に、第2予め決定された比値よりも大きい第2比値があるか否かを決定し、そうである場合、Flinkタスクの実行が遅いのは、マシンに起因するものではなく、第2予め決定された比値以上の第2比値に対応するデータ管理サーバ自体の問題によって引き起こされた可能性があり、したがって、低速ノードマシンが存在しないと決定でき、第2サブタスクを処理しない。そうでない場合、つまり、各第2比値がいずれも、第2予め決定された比値よりも小さい場合、現時点でFlinkタスクの実行が遅い理由は、データ管理サーバ自体の問題によって引き起こされたのではなく、マシンによって引き起こされたと示し、したがって、各実行マシンに対応するタスクの数とターゲット数との第1比値、および第1比値と第1予め設定された比値との間の大小関係に基づいて、低速ノードマシンを決定することができる。
【0134】
このように、データ管理サーバに対応する第2比値を利用して、データ管理サーバ自体の不具合によりタスクの実行が遅くなる問題を排除でき、低速ノードを決定する精度を向上させる。
【0135】
図3に示すように、本開示の実施例によって提供される、低速ノードマシンを決定するための特定のフローチャートを示し、以下のステップを含むことができる。
【0136】
S301:第2サブタスクの数が1よりも大きいか否かを判定する。
【0137】
そうでない場合、S302を実行し、そうである場合、S303を実行する。
【0138】
S302:集約なし移行機能が設定されているか否かを判定する。
【0139】
そうである場合、第2サブタスクが存在する実行マシンを低速ノードマシンとして使用し、そうでない場合、低速ノードマシンが存在しないと決定し、処理しない。
【0140】
S303:ターゲットオペレータタイプがデータ消費タイプに属するか否かを判定する。
【0141】
そうである場合、S304~S306を実行し、そうでない場合、S307を実行する。
【0142】
S304:各第2サブタスクが依存するデータパーティションから、複数のターゲットデータパーティションをフィルタリングする。
【0143】
このステップの具体的な実施プロセスについては、上述のS1-1およびS1-2を参照することができる。
【0144】
S305:同じデータ管理サーバに関連付けられたターゲットデータパーティションの第2比値が第2予め決定された比値以上であるか否かを判定する。
【0145】
そうである場合、低速ノードマシンが存在しないと決定し、何も処理を行わず、そうでない場合、S306を実行する。
【0146】
このステップの具体的な実施プロセスについては、S1-1およびS1-4を参照することができる。
【0147】
S306:同じ実行マシンによって実行される第2サブタスクの数の第1比値が、第1予め決定された比値以上であるか否かを判定する。
【0148】
そうである場合、マシンの集約が存在すると決定し、多数の第2サブタスクが集められている実行マシンを低速ノードマシンとして使用し、そうでない場合、集約なし移行機能が設定されていると、データ遅延時間が最も長い第2サブタスクに対応する実行マシンを低速ノードマシンとして使用する。
【0149】
S307:同じ実行マシンによって実行される第2サブタスクの数の第1比値が、第1予め決定された比値以上であるか否かを判定する。
【0150】
そうである場合、マシンの集約が存在すると決定し、多数の第2サブタスクが集められている実行マシンを低速ノードマシンとして使用し、そうでない場合、集約なし移行機能が設定されていると、タスクのアイドル状態の最も少ない第2サブタスクに対応する実行マシンを低速ノードマシンとして使用する。
【0151】
上述のS301~S307の具体的な実施ステップについて、上述の各実施例を参照することができ、ここでは繰り返して説明しない。
【0152】
一実施例において、低速ノードマシンを決定した後、低速ノードマシンを移行して、低速ノード問題を解決することもできる。具体的には、次のステップに従ってマシンの移行を実行できる。
【0153】
P1:予め設定されたサービス移行インターフェースを使用して、低速ノードマシン内の、第2サブタスクを実行するための各ターゲット計算ノードに必要なリソースの量に基づいて、各ターゲット計算ノードのためににターゲットリソースを事前に申請する。
【0154】
ここで、サービス移行インターフェースは、マシン移行機能を呼び出す能力を持つ、Flinkエンジン内で事前に開発されたAPIであってもよい。マシン移行機能は、第2サブタスクを実行するTMを新しいマシンに移行でき、即ち、低速ノードの問題がある低速ノードマシンでの実行速度が遅い第2サブタスクを、新しいマシンに移行して実行できる。
【0155】
なお、マシンの移行機能は、従来の技術に既に存在する機能ではなく、低速ノードの問題を解決するために特別に開発された機能であり、マシンの移行を実現するだけでなく、「ブロッキング+リソースの事前申請」などの最適化機能も備え、移行作業を最適化する。ブロッキングは、即ち、以下ではブロッキング情報を設定することであり、リソースの事前申請は、即ち、ターゲットリソースを事前に申請することである。
【0156】
ターゲット計算ノードは、低速ノードマシンにおける、実行速度が遅い第2サブタスクを実行するための計算ノードであり、即ち、低速ノードマシンにおける、第2サブタスクを実行するためのTMである。
【0157】
ターゲット計算ノードに必要なリソース量は、1つのターゲット計算ノードを実行するために必要なコンテナリソースのことであり、例えば、K8sにおけるPodコンテナリソースやContainerコンテナリソースなどであり、ターゲットリソースは、事前に申請して取得したコンテナリソースである。
【0158】
具体的に実施するとき、サービス移行インターフェースを通じてマシン移行機能を呼び出して、まず、各ターゲット計算ノードに必要なリソースの量を決定し、次にそのリソース量に基づいて、K8sにおいて、各ターゲット計算ノードのために、対応する量のコンテナリソースを事前に申請することができる。
【0159】
P2:低速ノードマシンに対するブロッキング情報を設定し、ブロッキング情報は、ターゲットオペレータタイプの新しいサブタスクが、前記低速ノードマシンの計算ノードによって実行されるようにスケジュールすることができないことを示すために使用される。
【0160】
ここで、新しいサブタスクは、ブロッキング情報を設定することを決定した後、ターゲットオペレータタイプを有するサブタスクを新しく生成することができる。例えば、新しいsourceオペレータタイプのサブタスクと、新しいsinkオペレータタイプのサブタスクである。ブロッキング情報は、ターゲットオペレータタイプの新しいサブタスクが低速ノードマシンの計算ノードによって実行されるようにスケジュールすることができないことを示すために使用される。即ち、ブロッキング情報は、低速ノードマシンに対して、Flinkタスクの下でターゲットオペレータタイプのサブタスクをブロッキングするように指示し、後に新しいターゲットオペレータタイプのサブタスクが生成された後、低速ノードマシンにスケジュールされず、低速ノード検出用のFlinkタスクも低速ノードマシンにスケジュールされないように確保する。
【0161】
選択可能に、ブロッキング情報にはブロッキング期間が含まれることができ、ブロッキング期間内に、ターゲットオペレータタイプの新しいサブタスクが、低速ノードマシンの計算ノードによって実行されるようにスケジュールすることができない。ブロッキング期間の後、ターゲットオペレータタイプの新しいサブタスクが低速ノードマシンの計算ノードに再びスケジュールされて実行されることができる。
【0162】
具体的に実施するとき、低速ノードマシンを決定した後、呼び出されたマシンの移行機能を使用して、低速ノードマシンに対し、低速ノードの検出を現在実行しているFlinkタスク、および当該Flinkタスク下のターゲットオペレータタイプの新しいサブタスクのブロッキング情報を設定できる。このようにして、Flinkタスクに対応する低速ノードマシンを検出した後、低速ノードマシンをブロッキングし、ブロッキング期間中に低速ノードマシンが再びFlinkタスクを実行するように呼び出されないようにすることができる。
【0163】
上記のP1とP2には厳密な実行順序はなく、同期または非同期で実行できることを理解できる。
【0164】
なお、低速ノードマシンの場合、ブロッキング情報に関連するタスクが低速ノードマシンによって実行されるようにスケジュールされないことに加えて、低速ノードマシンでの実行速度が遅い第2サブタスクが代替ノードマシンに移行して実行され、低速ノードマシンによって既に実行されている他のエンジンタイプのタスク(第2サブタスク以外のタスク)は影響を受けず、低速ノードマシンがオフラインになる前に引き続き低速ノードマシンによって実行することができる。
【0165】
P3:申請されたターゲットリソースを使用して、ターゲット計算ノードを代替するための代替計算ノードを作成し、代替計算ノードを使用して、ターゲット計算ノードに関連する第2サブタスクを実行する。
【0166】
具体的に実施するとき、ターゲットリソースの事前申請が成功した後、新しいマシンがオンラインになると、呼び出されたマシン移行機能を利用し、申請されたターゲットリソースを使用して、新たにオンラインになるマシン内に、各ターゲット計算ノードを代替するための各代替計算ノードを作成する。さらに、Flinkエンジンのフェイルオーバー(failover)メカニズムに基づいて、代替計算ノードを使用して、ターゲット計算ノードに関連する第2サブタスクの実行を再開することができ、同時に、代替計算ノードを使用して、ターゲットオペレータタイプの新しいサブタスクを実行することもできる。また、低速ノードマシン内の各ターゲット計算ノードを解放することもでき、具体的な解放ステップは、ターゲット計算ノード(TMまたはContainer)上で開発されたリソース解放インターフェースを使用して、JMによってターゲット計算ノードのリソース解放を実現するように、TMを管理するJM側に要求する。
【0167】
このように、サービス移行インターフェースを使用して、マシン移行プロセス全体をサービスクラスター内で非同期に実行できるだけでなく、ターゲットリソースの事前申請方法を使用して、移行が必要なマシン内のTMリソースの事前申請を実現することもでき、最後にfailoverメカニズムと事前に申請されたターゲットリソースに基づいて、マシンを移行し、移行が通常数秒で完了し、これにより、低速ノードの移行速度と安定性を大幅に向上させ、低速ノードの問題を解決する効率を向上させる。
【0168】
選択可能に、サービス移行インターフェースを使用してマシン移行機能を呼び出した後、ブロッキング情報設定せず、およびリソースの事前申請を行わずに、マシン移行作業を直接実行して、実行速度の遅い第2サブタスクを新しいマシンに移行して実行することができる。具体的なプロセスは次のとおりである。新しいマシンがオンラインになると、マシン移行機能を使用して新しいマシンにおいてターゲットリソースを申請し、申請されたターゲットリソースに基づいて代替実行ノードを作成し、次に、failoverメカニズムに基づいて、ターゲット計算ノードに関連する第2サブタスクの実行を再開し、ターゲットオペレータタイプを有する新しいサブタスクを実行する。同時に、マシンの移行が完了した後、リソース解放インターフェースを使用して、JMによってターゲット計算ノードのリソース解放を実現するように、TMを管理するJM側に要求することができる。このように、ブロッキング情報の設定やリソースの事前申請といった技術的手段を使わずに、マシン移行機能を利用して、低速ノードマシン上で実行される第2サブタスクを新しいマシンに移行して実行することができ、低速ノードの問題を解決できる。同時に、マシン移行機能を利用してマシン移行を行うプロセスにおいて、補助手段としてブロッキング情報およびリソースの事前申請を利用すると、移行効率を向上させ、移行効果をさらに向上させることができる。
【0169】
図4に示すように、本開示の実施例によって提供される低速ノード検出方法のインタラクション概略図であり、図4において、3つの異なるタイプのFlinkタスクを示し、リソースクラスターがK8sクラスターまたはYarnであってもよい。各Flinkタスクのサービスクラスターは、Flinkタスクの実行中に生成された実行指標情報を、指標データベースに発送して記憶できる。具体的には、低速ノード自動検出サービスは、指標データベースから、検出対象のFlinkタスクの実行指標情報を取得できる。次に、実行指標情報に基づいて、低速ノード分析を実行し、低速ノードの問題がある低速ノードマシンを決定することができる。低速ノードの分析には、1、異常値フィルタリングアルゴリズムを使用して、実行速度が遅い第2サブタスクを決定するステップと、2、マシンの集約に基づいて、低速ノードマシンを決定するステップとを含むことができる。低速ノード分析ステップの具体的な実施プロセスに関しては、上記の各実施例を参照することができる。低速ノードマシンを取得した後、ブロッキング操作と移行操作を実行でき、ブロッキング操作により、低速ノードマシンに対してブロッキング情報を生成することができ、移行操作により、ターゲットリソースの事前申請とフェイルオーバー(failover)メカニズムに基づいて、低速ノードマシンを移行することができる。ブロッキング操作は、短期間にFlinkタスクが低速ノードマシンに呼び出して実行することがなく、ターゲットリソースを事前に申請することは、移行作業を最適化して移行速度を向上させるために使用される。選択可能に、ターゲットリソースを事前に申請したりせず、および/または、ブロッキング情報を設定したりせずに、低速ノードマシンを移行することもできない。ブロッキングおよび移行操作の具体的な実施プロセスに関しては、上述のP1~P3を参照することができ、ここでは繰り返して説明しない。
【0170】
当業者であれば、具体的な実施形態の上述の方法において、各ステップの記述順序は、厳密な実行順序ではなく、実施プロセスに対していかなる制限も構成せず、各ステップの具体的な実行順序がその機能と可能な内部ロジックによって決定される。
【0171】
同様の発明概念に基づいて、本開示の実施例は、タスク実行時の低速ノードの検出方法に対応するタスク実行時の低速ノードの検出装置をさらに提供し、本開示の実施例おける装置の問題解決原理が、本開示の実施例で上述したタスク実行中の低速ノード検出方法と類似しているため、装置の実施について、方法の実施を参照することができ、繰り返す詳細を省略する。
【0172】
図5は、本開示の実施例によって提供される、タスク実行時の低速ノードの検出装置の概略図であり、当該装置は、
複数のオペレータタイプのサブタスクを含むストリームデータ処理タスクの、実行指標情報を取得するために用いられる、取得モジュール501と、
様々なオペレータタイプのトポロジー関係と前記実行指標情報が示す異常原因情報とに基づいて、異常のあるターゲットオペレータタイプを決定するために用いられる、第1決定モジュール502と、
複数の前記オペレータタイプのサブタスクから、前記ターゲットオペレータタイプの各第1サブタスクをフィルタリングし、前記実行指標情報から、各前記第1サブタスクにそれぞれ対応する検出対象の指標情報を決定するために用いられる、第2決定モジュール503と、
前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定し、前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定するために用いられる、第3決定モジュール504と、
を含む。
【0173】
可能な実施形態において、前記装置は、
移行モジュール505をさらに含み、
前記移行モジュール505は、前記低速ノードマシンを決定した後、
予め設定されたサービス移行インターフェースを使用して、前記低速ノードマシン内の、第2サブタスクを実行するための各ターゲット計算ノードに必要なリソースの量に基づいて、各前記ターゲット計算ノードのためにターゲットリソースを事前に申請し、
前記低速ノードマシンに対するブロッキング情報を設定し、前記ブロッキング情報が、前記ターゲットオペレータタイプの新しいサブタスクが前記低速ノードマシンの計算ノードによって実行されるようにスケジュールすることができないことを示すために使用され、
申請されたターゲットリソースを使用して、前記ターゲット計算ノードを代替するための代替計算ノードを作成し、前記代替計算ノードを使用して、前記ターゲット計算ノードに関連する前記第2サブタスクを実行する、
ために用いられる。
【0174】
可能な実施形態において、前記第3決定モジュール504は、前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定するとき、
前記第2サブタスクのターゲット数が予め設定された数よりも大きい場合、各前記第2サブタスクのそれぞれを実行する計算ノードが存在する実行マシンに基づいて、各前記実行マシンに対応するタスクの数を決定し、
各前記実行マシンに対応する前記タスクの数と前記ターゲット数との第1比値に基づいて、前記低速ノードマシンを決定する、
ために用いられる。
【0175】
可能な実施形態において、前記第3決定モジュール504は、各前記実行マシンに対応する前記タスクの数と前記ターゲット数との第1比値に基づいて、前記低速ノードマシンを決定するとき、
第1予め設定された比値以上のターゲット比値がある場合、ターゲット比値に対応する実行マシンを前記低速ノードマシンとして使用するか、または、
各前記第1比値がいずれも、前記第1予め設定された比値よりも小さい場合、各前記第2サブタスクの前記検出対象の指標情報が示す指標異常度に基づいて、指標異常度が最も大きい第2サブタスクに対応する実行マシンを前記低速ノードマシンとして使用する、
ために用いられる。
【0176】
可能な実施形態において、前記第3決定モジュール504は、各前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、各前記実行マシンに対応するタスクの数を決定するとき、
前記ターゲットオペレータタイプがデータ消費タイプに属する場合、各前記第2サブタスクがメッセージキューからデータを読み取るときに依存する各データパーティションに基づいて、前記第2サブタスクに対応する検出対象の指標情報から、各前記データパーティションに対応するデータ遅延時間を決定し、
前記データ遅延時間に基づいて、前記データパーティションから複数のターゲットデータパーティションをフィルタリングし、
各前記ターゲットデータパーティションが属するデータ管理サーバに基づいて、各前記データ管理サーバに対応するデータパーティションの数を決定し、
各前記データ管理サーバに対応する前記データパーティションの数と前記ターゲットデータパーティションの第1数との第2比値がいずれも、第2予め設定された比値よりも小さい場合、各前記第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、各実行マシンに対応する前記タスクの数を決定する、
ために用いられる。
【0177】
可能な実施形態において、前記第3決定モジュール504は、前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定するとき、
前記ターゲットオペレータタイプがデータ消費タイプに属する場合、各前記第1サブタスクがメッセージキューからデータを読み取るときに依存する各データパーティションに基づいて、前記第1サブタスクに対応する検出対象の指標情報から、各前記データパーティションに対応するデータ遅延時間を決定し、
前記データ遅延時間に応じて、データ遅延時間が予め決定された時間よりも大きいデータパーティションの第2数を決定し、
前記第2数とパーティションの総数との第3比値が第3予め設定された比値よりも小さい場合、各前記データパーティションに対応する前記データ遅延時間に基づいて、前記第1サブタスクから前記第2サブタスクを決定し、前記パーティションの総数は、各前記第1サブタスクが依存するデータパーティションの総数である、
ために用いられる。
【0178】
可能な実施形態において、前記第3決定モジュール504は、各前記データパーティションに対応する前記データ遅延時間に基づいて、前記第1サブタスクから前記第2サブタスクを決定するとき、
各前記データパーティションに対応する前記データ遅延時間に基づいて、各前記データパーティションにおいて、データ遅延時間が第1異常条件を満たすフィルタリング対象のデータパーティションがあるか否かを判定し、
そうである場合、前記フィルタリング対象のデータパーティションに依存する前記第1サブタスクのクエリ毎秒に基づいて、前記第2サブタスクを決定する、
ために用いられる。
【0179】
可能な実施形態において、前記第3決定モジュール504は、前記検出対象の指標情報を使用して、前記第1サブタスクから実行速度が遅い第2サブタスクを決定するとき、
前記ターゲットオペレータタイプがデータ消費型以外の他のオペレータタイプに属する場合、各前記第1サブタスクの前記検出対象の指標情報が示すタスクのアイドル状態に基づいて、タスクのアイドル状態が第2異常条件を満たす第3サブタスクがあるか否かを判定し、
そうである場合、前記第3サブタスクのクエリ毎秒および予め設定されたクエリレートに基づいて、前記第2サブタスクを決定する、
ために用いられる。
【0180】
装置内の各モジュールの処理フローおよび各モジュール間のインタラクションフローの説明については、上記の方法の実施例における関連する説明を参照し、ここでは詳細に説明しない。
【0181】
同じ技術概念に基づいて、本願の実施例は、電子機器をさらに提供する。図6に示すように、本願の実施例によって提供される電子機器の概略構造図であり、当該電子機器は、
プロセッサ601、メモリ602、およびバス603を含む。メモリ602には、プロセッサ601によって実行可能な機械読み取り可能な命令を記憶し、プロセッサ601は、メモリ602に記憶された機械読み取り可能な命令を実行するために使用され、前記機械読み取り可能な命令がプロセッサ601によって実行されるとき、プロセッサ601は、S101、複数のオペレータタイプのサブタスクを含むストリームデータ処理タスクの、実行指標情報を取得するステップと、S102、様々なオペレータタイプのトポロジー関係と実行指標情報が示す異常原因情報とに基づいて、異常のあるターゲットオペレータタイプを決定するステップと、S103、複数のオペレータタイプのサブタスクからターゲットオペレータタイプの各第1サブタスクをフィルタリングし、実行指標情報から、各第1サブタスクのそれぞれに対応する検出対象の指標情報を決定するステップと、S104、検出対象の指標情報を使用して、第1サブタスクから実行速度が遅い第2サブタスクを決定し、第2サブタスクを実行する計算ノードが存在する実行マシンに基づいて、低速ノードマシンを決定するステップとを実行する。
【0182】
上記メモリ602は、内部メモリ6021と外部メモリ6022とを含み、ここで内部メモリ6021は、内部ストレージとも呼ばれ、プロセッサ601内の演算データおよびハードディスクなどの外部メモリ6022と交換されるデータを一時的に記憶するために使用される。プロセッサ601は、内部メモリ6021を介して外部メモリ6022とデータを交換し、電子機器の動作中、プロセッサ601とメモリ602は、バス603を介して通信し、これにより、プロセッサ601が、上記の方法の実施例で述べた実行命令を実行する。
【0183】
本開示の実施例は、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体をさらに提供し、当該コンピュータプログラムがプロセッサによって実行されるとき、上述の方法の実施例に記載の、タスク実行時の低速ノードの検出方法のステップを実行する。当該記憶媒体は、揮発性または不揮発性のコンピュータ読み取り可能な記憶媒体であってもよい。
【0184】
本開示の実施例によって提供される、タスク実行時の低速ノードの検出方法のコンピュータプログラム製品は、プログラムコードを記憶したコンピュータ読み取り可能な記憶媒体を含み、前記プログラムコードに含まれる命令が、上記の方法の実施例に記載の、タスク実行時の低速ノードの検出方法のステップを実行し、具体的には、上記の方法の実施例を参照することができ、ここでは繰り返して説明しない。
【0185】
当該コンピュータプログラム製品は、具体的にはハードウェア、ソフトウェア、またはそれらの組み合わせを通じて実現することができる。1つの選択可能な実施例において、前記コンピュータプログラム製品は、コンピュータ記憶媒体として実現され、別の選択可能な実施例において、コンピュータプログラム製品は、ソフトウェア開発キット(Software Development Kit,SDK)などのソフトウェア製品として実現される。
【0186】
当業者であれば、説明の便宜および単純化のため、上述のシステムおよび装置の具体的な動作プロセスは、前述の方法の実施例における対応するプロセスを参照することができ、ここでは繰り返して説明しないことを明確に理解することができる。本開示によって提供されるいくつかの実施例において、開示されるシステム、装置、および方法は、他の方法で実現できることを理解されたい。上述した装置の実施例は単なる例示であり、例えば、前記ユニットの分割は、論理的な機能分割に過ぎず、実際に実現されるとき、他の分割方法があってもよく、また、例えば、複数のユニットまたはコンポーネントが別のシステムに結合または統合されてもよく、または一部の特徴が省略されても実行されなくてもよい。一方、表示または説明される互いの間の結合または直接結合または通信接続は、いくつかの通信インターフェース、装置またはユニットを介した間接的結合または通信接続であってもよく、電気的、機械的、または他の形式であってもよい。
【0187】
別個のコンポーネントとして説明される前記ユニットは、物理的に分離されてもよく、物理的に分離されなくてもよく、ユニットとして示されるコンポーネントは、物理ユニットであっても、でなくてもよく、即ち、1か所に配置されても、複数のネットワークユニットに分散されてもよい。本実施例の解決手段の目的を達成するために、実際のニーズに応じてユニットの一部またはすべてを選択することができる。
【0188】
さらに、本開示の各実施例における各機能ユニットは、1つの処理ユニットに統合されてもよく、各ユニットは、物理的に単独で存在してもよく、または2つ以上のユニットが1つのユニットに統合されてもよい。
【0189】
前記機能がソフトウェア機能ユニットの形式で実現され、独立した製品として販売または使用される場合、プロセッサによって実行可能な不揮発性のコンピュータ読み取り可能な記憶媒体に記憶することができる。このような理解に基づいて、本開示の技術的解決手段は本質的に、従来の技術に寄与する部分、または当該技術的解決手段の一部をソフトウェア製品の形で実現することができ、当該コンピュータソフトウェア製品が、記憶媒体に記憶され、電子機器(パーソナルコンピュータ、サーバ、またはネットワークデバイスなどであってもよい)に、本開示の各実施例に記載の方法のステップのすべてまたは一部を実行させるための、いくつかの命令を含む。前述の記憶媒体は、Uディスク、モバイルハードディスク、読み取り専用メモリ(Read-Only Memory,ROM)、ランダムアクセスメモリ(Random Access Memory,RAM)、磁気ディスクまたは光ディスクなど、プログラムコードを記憶できる様々な媒体を含む。
【0190】
本願の技術的解決手段に個人情報が含まれる場合、本願の技術的解決手段を使用する製品は、個人情報を処理する前に、個人情報の処理ルールを明確に通知し、個人の独立した同意を取得した。本願の技術的解決手段が機密の個人情報に関し、本願の技術的解決手段を使用する製品は、機密の個人情報を処理する前に、個別の同意を取得し、同時に「明示的な同意」の要件も満たした。例えば、カメラなどの個人情報収集装置に、個人情報収集範囲に入って、個人情報を収集することを知らせるために明確で目立つ標識を設置し、個人が自発的に収集範囲に入った場合、その個人情報の収集を同意したものとみなされ、または、個人情報を処理する装置上で個人情報処理ルールを通知するために目立つロゴ/情報を使用する場合、ポップアップメッセージを通じて、または個人に個人情報をアップロードするように求めることで、個人の許可を取得し、ここで、個人情報処理ルールは、個人情報処理者、個人情報処理目的、処理方法、処理される個人情報の種類などを含む。
【0191】
最後に、上述の実施例は、本開示の具体的な実施形態にすぎず、本開示の技術的解決手段を限定するものではなく、本開示の技術的解決手段を説明するために使用され、本開示の保護範囲がそれらに限定されず、前述の実施例を参照して本開示を詳細に説明したが、当業者は、技術分野に精通した者であれば、本明細書で開示される技術的範囲内で前述の実施例に記録された技術的解決手段を、修正したり、変更を容易に思いついたり、あるいはその一部の技術的特徴を同等に置き換えたりすることは依然として可能であり、これらの修正、変更、または置換によって、対応する技術的解決手段の本質が本開示の実施例による技術的解決手段の精神および範囲から逸脱するものではなく、本開示の保護範囲に含まれるものとする。したがって、本開示の保護範囲は、特許請求の範囲の保護範囲に従うべきである。
図1
図2
図3
図4
図5
図6