AWS における Databricks のモニタリングとオブザーバビリティのベストプラクティス
Databricks は、データ分析と AI/ML ワークロードを管理するためのプラットフォームです。このガイドは、AWS のネイティブなオブザーバビリティサービスやマネージド型オープンソースサービスを使用して、AWS 上の Databricks でワークロードを実行しているお客様のモニタリングをサポートすることを目的としています。
Databricks をモニタリングする理由
Databricks クラスターを管理する運用チームは、統合されたカスタマイズ可能なダッシュボードを活用することで、以下のような恩恵を受けることができます:
- ワークロードのステータス、エラー、パフォーマンスのボトルネックの追跡
- 時間経過に伴う総リソース使用量やエラー率など、望ましくない動作に対するアラート設定
- ルート原因分析やカスタマイズされたメトリクスの抽出のための一元化されたログ管理
監視すべき項目
Databricks は、クラスターインスタンスで Apache Spark を実行しており、メトリクスを公開するネイティブ機能を備えています。 これらのメトリクスは、ドライバー、ワーカー、およびクラスターで実行されているワークロードに関する情報を提供します。
Spark を実行しているインスタンスには、ストレージ、CPU、メモリ、ネットワークに関する追加の有用な情報があります。 Databricks クラスターのパフォーマンスにどのような外部要因が影響を与える可能性があるかを理解することが重要です。 多数のインスタンスを持つクラスターの場合、ボトルネックと全体的な健全性を理解することも同様に重要です。
モニタリング方法
コレクターとその依存関係をインストールするには、Databricks の初期化スクリプトが必要です。これらのスクリプトは、Databricks クラスターの各インスタンスで起動時に実行されます。
また、Databricks クラスターには、インスタンスプロファイルを使用してメトリクスとログを送信するための権限が必要です。
最後に、Databricks クラスターの Spark 設定でメトリクス名前空間を設定することがベストプラクティスです。testApp をクラスターの適切な参照に置き換えてください。
図 1: メトリクス名前空間の Spark 設定例
DataBricks における優れたオブザーバビリティソリューションの主要な要素
1) メトリクス: メトリクスは、一定期間にわたって測定されたアクティビティや特定のプロセスを表す数値です。Databricks には以下のような種類のメトリクスがあります:
CPU、メモリ、ディスク、ネットワークなどのシステムリソースレベルのメトリクス。 カスタムメトリクスソース、StreamingQueryListener、QueryExecutionListener を使用したアプリケーションメトリクス。 MetricsSystem によって公開される Spark メトリクス。
2) ログ: ログは発生した一連のイベントを表現し、それらについて線形的なストーリーを語ります。Databricks には以下のような種類のログがあります:
- イベントログ
- 監査ログ
- ドライバーログ:stdout、stderr、log4j カスタムログ(構造化ログを有効化)
- エグゼキュターログ:stdout、stderr、log4j カスタムログ(構造化ログを有効化)
3) トレース: スタックトレースはエンドツーエンドの可視性を提供し、ステージ全体を通したフローを表示します。これは、エラーやパフォーマンスの問題を引き起こすステージやコードを特定するためのデバッグ時に役立ちます。
4) ダッシュボード: ダッシュボードは、アプリケーションやサービスのゴールデンメトリクスの優れた概要ビューを提供します。
5) アラート: アラートは、対応が必要な状況についてエンジニアに通知します。
AWS ネイティブのオブザーバビリティオプション
Ganglia UI や Log Delivery などのネイティブソリューションは、システムメトリクスの収集や Apache Spark™ メトリクスのクエリに優れたソリューションです。しかし、以下のような改善の余地がある領域があります:
- Ganglia はアラートをサポートしていません。
- Ganglia はログから派生し たメトリクス(例:ERROR ログの増加率)の作成をサポートしていません。
- データの正確性、データの鮮度、エンドツーエンドのレイテンシーに関連する SLO (Service Level Objectives) や SLI (Service Level Indicators) を追跡するカスタムダッシュボードを使用して、Ganglia で可視化することができません。
Amazon CloudWatch は、AWS 上の Databricks クラスターを監視・管理するための重要なツールです。クラスターのパフォーマンスに関する貴重な洞察を提供し、問題の迅速な特定と解決を支援します。Databricks と CloudWatch の統合および構造化ログの有効化により、これらの領域を改善することができます。CloudWatch Application Insights はログに含まれるフィールドを自動的に検出し、CloudWatch Logs Insights は目的に特化したクエリ言語を提供してデバッグと分析を迅速化します。
図 2:Databricks CloudWatch アーキテクチャ
CloudWatch を使用して Databricks を監視する方法の詳細については、以下を参照してください: How to Monitor Databricks with Amazon CloudWatch