第14章. 構造化ストリーミング・アプリケーションを監視する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
アプリケーションのモニタリング は、堅牢なデプロイに不可欠な要素である。モニタリングは、応答性、リソースの使用状況、タスク固有の指標など、アプリケーションのパフォーマンスのさまざまな側面を定量化するメトリックを収集・処理することで、アプリケーションのパフォーマンス特性に関する洞察を経時的に提供する。
ストリーミング・アプリケーションには、応答時間とスループットに関する厳しい要件がある。 Sparkのような分散アプリケーションの場合、アプリケーションのライフタイム中に考慮する必要がある変数の数は、マシンのクラスタ上で実行する複雑さによって倍増する。 クラスタのコンテキストでは、実行中のアプリケーションの統合ビューだけでなく、各ホストの観点から、異なるホスト間のCPU、メモリ、セカンダリ・ストレージなどのリソースの使用状況をタブで管理する必要がある。
例えば、あるアプリケーションが10台の異なるエクゼキューターで動作しているとする。 メモリ使用量の合計インジケーターは15%の増加を示しており、このアプリケーションにとっては予想される許容範囲内かもしれないが、その増加は単一ノードから生じていることに気づく。 このような不均衡は、そのノードがメモリ不足に陥ったときに障害を引き起こす可能性があるため、調査が必要である。また、ボトルネックの原因となっている作業の不均衡な分配が潜在的に存在することも示唆している。 適切なモニタリングがなければ、そもそもこのような振る舞いを観察することはできないだろう。
構造化ストリーミングの演算子は、3つの異なるチャンネルを通じて公開することができる:
-
Sparkメトリックサブシステム
-
writeStream.startオペレーションによって返されたStreamingQueryインスタンス。 -
StreamingQueryListenerインタフェース
以下のセクションで詳述するように、これらのインタフェースは、異なるモニタリングのニーズに対応するために、異なる詳細度と露出度を提供している。
Spark メトリクスサブシステム
Spark メトリクス・サブシステムは、構成可能なメトリクスの収集とレポート API を提供し、プラグイン可能なシンク・インタフェースを備えている。 Spark には、HTTP、JMX、カンマ区切り値(CSV)ファイルなど、いくつかのシンクが付属している。 それに加えて、ライセンスの制限により追加のコンパイル・フラグが必要な Ganglia シンクもある。
HTTPシンクはデフォルトで有効になっている。 これは、Spark UIと同じポートのドライバホスト上のエンドポイントを登録するサーブレットによって実装されている。メトリックは、/metrics/json エンドポイントでアクセスできる。他のシンクは、設定によって有効にすることができる。所定のシンクの選択は、統合したいモニタリングインフラによって決定される。 例えば、JMXシンクは、Kubernetesクラスタスケジューラで人気のメトリックコレクターであるPrometheusと統合するための一般的なオプションである。
構造化ストリーミングのメトリック
Structured Streamingジョブからメトリックを取得するには、まず、そのようなメトリックの内部レポートを有効にする必要がある。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access