データ分析

プロ向けのプロツール: 業界をリードする Dataflow のオブザーバビリティ機能

※この投稿は米国時間 2022 年 9 月 7 日に、Google Cloud blog に投稿されたものの抄訳です。

Dataflow は、業界をリードする統合プラットフォームで、バッチ処理とストリーム処理を可能にします。柔軟な開発オプション(Flex テンプレートと Notebooks から、Java、Python、および Go 用の Apache Beam SDK まで)と豊富な組み込みの管理ツールを備えたフルマネージド サービスです。すべての Google Cloud プロダクト(Pub/Sub、BigQuery、VertexAI、GCS、Spanner、BigTable など)に加えて、サードパーティのサービスやプロダクト(Kafka や AWS S3 など)とシームレスに統合され、データ移動のユースケースに最適です。

お客様は、このような機能を高く評価していますが、常に変化するビジネスニーズに対応するために、より価値のある、最良のバッチ処理サービスおよびストリーミング データ処理サービスの導入と提供を求め続けています。

オブザーバビリティは、Dataflow チームがお客様からのフィードバックに基づいてさらに投資を続けている重要な領域です。ビジネス クリティカルな本番環境パイプラインには、Dataflow ジョブの状態とパフォーマンスの適切な可視性が不可欠です。

今回の投稿では、Dataflow の主要なオブザーバビリティ機能を確認していきます。  

  • Job Visualizer - ジョブグラフと実行の詳細

  • 新しい指標とログ

  • 新しいトラブルシューティング ツール - エラーレポート、プロファイリング、分析情報

  • 新しい Datadog ダッシュボードとモニター

Dataflow オブザーバビリティの概要

構成も手動での設定も必要はありません。ジョブをデプロイした時点から、Dataflow が Google Cloud コンソール内ですぐに利用できるオブザーバビリティを提供します。オブザーバビリティ機能は、Google Cloud Monitoring と Logging、および他の GCP プロダクトとシームレスに統合されます。このインテグレーションにより、複数の GCP プロダクト全体のオブザーバビリティが一か所にまとめられます。これを活用することで、技術的な課題に対応し、ビジネス目標を達成できるようになります。

ジョブの実行の把握: Job Visualizer

質問: パイプラインの様子はどうですか?各ステップで何が起きていますか?どこに時間がかかりますか?

解決策: Dataflow の [ジョブグラフ] タブと [実行の詳細] タブが質問に答え、ジョブ内のさまざまなステージとステップのパフォーマンスを把握できるようになります。

ジョブグラフは、デフォルトのグラフビューで、ジョブの実行にかかわるステップを示します。ステップをステージに融合(最適化)した後、グラフには、Dataflow がパイプラインのコードを実行するのに、どう最適化したか表示されます。テーブルビューは、パイプラインが実行を続行するときに、各ステップ、その関連する融合のステージ、各ステップでかかった時間、および状態についての詳細を知らせます。グラフの各ステップには、入出力コレクション、出力データの鮮度などの詳細情報が表示されます。この情報により、このステップで処理された作業の量(処理済みの要素)とスループットを分析できるようになります。
Fig 1..jpg
図 1. ジョブの DAG と各ステージの主要な指標(右)を示すジョブグラフのタブ。

実行の詳細には、ジョブ内の各ステージの進行状況を把握してデバッグするのに役立つ情報がすべて含まれています。ストリーミング ジョブの場合、各ステージのデータの鮮度を表示できます。[ステージ別のデータの鮮度] のグラフには、異常検出が含まれています。これは、「潜在的な速度低下」と「潜在的な停滞」を強調表示して、調査を特定のステージに絞り込むのに役立ちます。[実行の詳細] タブをバッチとストリーミングに使用する詳細については、こちらをご覧ください。

Fig 2.jpg
図 2. 時間の経過とともにステージ別にデータの鮮度を表示し、データの鮮度における異常を警告する実行の詳細タブ。

指標とログでジョブをモニタリングする

質問:  ジョブの状態とパフォーマンスは正常ですか?エラーはありませんか?

解決策:  Dataflow は、ジョブのモニタリングに有効な指標をいくつか提供します。

Dataflow ジョブの指標の完全なリストは、指標の参照ドキュメントで確認できます。Dataflow サービスの指標に加えて、CPU 使用率やメモリ使用量などのワーカーの指標を表示できます。最後に、コードから Apache Beam カスタム指標を生成できます。

ジョブ指標は、ジョブのパフォーマンスの確認や、ジョブのトラブルシューティングを行うのに最も重要な指標にアクセスできるように、すべてが一か所にまとまっています。または、Metrics Explorer からこのデータにアクセスして、Cloud Monitoring のダッシュボードとアラートを独自に構築できます。

ジョブのログとワーカーのログは、パイプラインをデプロイするときに最初に確認できるものの一つです。[ジョブの詳細] ページの [ログ] パネルで、両方のログタイプにアクセスできます。

ジョブのログには、スタートアップ タスク、Fusion のオペレーション、自動スケーリング イベント、ワーカーの割り振りなどに関する情報が含まれます。ワーカーのログには、パイプラインの各ステップ内で各ワーカーによって処理された作業に関する情報が含まれます。

ロギングレベルの構成と変更、ログのルーティングは、パイプライン ログのドキュメントで提供されているガイダンスを使用して行えます。

ログは、Cloud Logging にシームレスに統合されます。Cloud Logging クエリの記述、ログベースの指標の作成、これらの指標に関するアラートの作成が行えます。

新規: ストリーミング ジョブの指標

質問: パイプラインの速度の低下や停止が発生していませんか?自分のコードがジョブのパフォーマンスにどのように影響しているか把握したいです。自分のリソースとシンクが、ジョブに関してどのように動作しているか確認したいです。

解決策: このような質問に答えられる Streaming Engine ジョブの新しい指標をいくつか導入しました。注目すべき指標を以下に一覧表示しています。この指標のすべてが、[ジョブの指標] タブから即座にアクセスできるようになりました。

graph 202209

デジタル トランスフォーメーションの取り組みの中核として、Renault Group のエンジニアリング チームは、ストリーミング パイプラインに Dataflow を使用しています。

「データ パイプラインのより深いオブザーバビリティは、弊社のアプリケーションの SLO を追跡するのにきわめて重要です」と、Renault のデジタル トランスフォーメーションおよびデータチームのビッグデータ担当テクニカル リードである Elvio Borrelli 氏は述べています。「新しい指標(バックログの秒数やステージ別のデータの鮮度など)により、エンドツーエンドのパイプラインのレイテンシとボトルネックの領域に関する可視性がかなり向上しています。必要なスループットとより低いレイテンシのために、パイプラインのコードとデータソースの調整により集中できるようになりました。」

Cloud コンソールでこのような指標を使用する方法についての詳細は、Dataflow モニタリング インターフェースのドキュメントをご覧ください。
Fig 3.jpg
図 3. ストリーミング ジョブの自動スケーリング チャートとさまざまな指標のカテゴリを示すジョブ指標。

これらの指標を使用して、ジョブ内の一般的な症状をトラブルシューティングする方法については、Dataflow Observability に関するウェブセミナー「Dataflow Observability, Monitoring, and Troubleshooting」をご覧ください。

Cloud Error Reporting を使用して、ジョブの状態をデバッグする

問題: Dataflow ジョブにいくつかのエラーがあります。コード、データ、または他の何かのエラーですか?どれぐらいの頻度で発生していますか?

解決策: Dataflow は Google Cloud の Error Reporting とネイティブに統合されており、ジョブのパフォーマンスに影響を与えるエラーを特定して管理できるようになります。

[ジョブの詳細] ページの [ログ] パネルの [診断] タブでは、最も頻繁に発生するエラーが追跡されます。これは Google Cloud の Error Reporting と統合されており、バグや作業項目の作成や通知の設定で、エラーの管理を行えるようになります。特定の種類の Dataflow エラーの場合は、Error Reporting によりトラブルシューティング ガイドとソリューションへのリンクが提供されます。

Fig 4.jpg
図 4. 上位のエラーとその頻度を表示するログパネルの診断タブ。

新規: Cloud Profiler を使用して、パフォーマンスのボトルネックをトラブルシューティングする

問題: コードのどの部分が、データの処理に、より多くの時間がかかっていますか?何のオペレーションに、より多くの CPU サイクル、またはメモリが消費されていますか?

解決策: Dataflow は Google Cloud Profiler とのネイティブ インテグレーションを提供します。これにより、CPU、メモリ、I/O オペレーションのプロファイリング サポートを使用して、ジョブをプロファイリングし、パフォーマンスのボトルネックを把握できるようになります。

パイプラインのレイテンシは高いですか?そのために、CPU に負荷がかかりませんか?または、I/O オペレーションの待機時間が長くなりませんか?あるいは、メモリに負荷がかかりませんか?その場合、どのオペレーションが問題を引き起こしていますか?フレームグラフは、このような質問の答えを見つけるのに役立ちます。ジョブの作成中、またはジョブの更新中にフラグを指定することで、Dataflow ジョブのプロファイリングを有効にできます。詳細については、パイプライン パフォーマンスのモニタリングのドキュメントをご覧ください。
Fig 5.jpg
図 5. Dataflow ジョブのフレームグラフを示す CPU 時間のプロファイラ。

新規: Dataflow Insights を使用してジョブを最適化する

問題: 作業のパフォーマンスの改善やコストの削減に関して、Dataflow で何がわかりますか?

解決策: Dataflow Insights を確認して、パフォーマンスの改善やコストの削減を行えます。分析情報は、バッチとストリーミング ジョブのデフォルトで有効になっており、ジョブの実行を自動分析することで生成されます。

Dataflow Insights は、Google Active Assist の Recommender サービスを利用しています。すべてのジョブで自動的に有効化され、料金なしで利用できます。分析情報には、自動スケーリングの有効化、ワーカーの最大化、並列処理の増加などの最適化案が含まれます。Dataflow Insights についての詳細は、Dataflow Insights のドキュメントをご覧ください。

Fig 6.jpg
図 6. Dataflow Insights は、アクティブなジョブの横にあるジョブの概要ページに表示されます。

新規: Datadog Dashboards と Recommended Monitors

問題: Datadog などの既存のモニタリング ツールで Dataflow をモニタリングしたいです。

解決策: Dataflow の指標とログは、Google Cloud Monitoring および Logging API を介して、任意のオブザーバビリティ ツールでアクセスできます。Datadog をご利用中のお客様は、すぐに使用できる Dataflow Dashboards と Recommended Monitors を活用して、Datadog コンソール内の他のアプリケーションとともに Dataflow ジョブをモニタリングできるようになりました。Dataflow Dashboards と Recommended Monitors についての詳細は、Datadog を使用して Dataflow パイプラインをモニタリングする方法のブログ投稿をご覧ください。

Fig 7.jpg
図 7. プロジェクト全体で Dataflow ジョブをモニタリングする Datadog ダッシュボード。

ZoomInfo(最新の市場開拓ソフトウェア、データ、インテリジェンスのグローバル リーダー)は、Google Cloud と提携して、お客様が企業間データを Google BigQuery に簡単に統合できるようにします。Dataflow は、データ移動の工程において重要な要素です。

「数百もの同時実行の Dataflow ジョブを管理しています」と、ZoomInfo エンジニアリング フェローの Hasmik Sarkezians 氏は述べています。「Datadog のダッシュボードとモニターにより、すべてのジョブを一か所で大規模に容易くモニタリングできるようになりました。また、特定のジョブをより深く掘り下げる必要がある場合は、実行の詳細、ワーカーログ、ジョブ指標などの Dataflow の詳細なトラブルシューティング ツールを活用して、問題を調査して解決しています。」

次のステップ

Dataflow は、最高水準のオブザーバビリティ体験を提供して、バッチおよびストリーミング データ処理業界をリードしています。

しかし、まだ始まったばかりです。今後数か月にわたって、次のような機能をさらに導入する予定です。

  • メモリ不足エラーの可能性を検出して防止するメモリ オブザーバビリティ。

  • ソースとシンク、エンドツーエンドのレイテンシ、PTransform によって処理されるバイト数などの指標。

  • 詳細な分析情報 - 割り当て、メモリ使用量、ワーカーの構成とサイズ。

  • ジョブ送信前のパイプライン検証。

  • データ サンプリングを使用したユーザーコードとデータの問題のデバッグ。

  • 自動スケーリングのオブザーバビリティの向上。

  • プロジェクトレベルのモニタリング、サンプル ダッシュボード、推奨アラート。


フィードバックやアイデアがございましたら、ご送信ください。または、簡単なアンケート調査にご協力ください。

スタートガイド

Dataflow を開始するには、Cloud Dataflow のクイックスタートをご覧ください。

Dataflow オブザーバビリティについての詳細は、次の記事をご確認ください。


- プロダクト マネージャー Ashwin Kamath