AWS における Databricks のモニタリングとオブザーバビリティのベストプラクティス
Databricks は、データ分析と AI/ML ワークロードを管理するためのプラットフォームです。このガイドは、Databricks on AWS を実行しているお客様が、AWS ネイティブサービスまたはオープンソースマネージドサービスを使用してこれらのワークロードを監視できるよう支援することを目的としています。
Databricks を監視する理由
Databricks クラスターを管理する運用チームは、統合されたカスタマイズされたダッシュボードを使用することで、ワークロードのステータス、エラー、パフォーマンスのボトルネックを追跡し、時間経過に伴う総リソース使用量やエラーの割合などの望ましくない動作に関するアラートを設定し、根本原因分析のための一元化されたログ記録や追加のカスタマイズされたメトリクスの抽出を行うことができます。
監視対象
Databricks はクラスターインスタンスで Apache Spark を実行しており、メトリクスを公開するネイティブ機能を備えています。これらのメトリクスは、ドライバー、ワーカー、およびクラスターで実行されているワークロードに関する情報を提供します。
Spark を実行しているインスタンスには、ストレージ、CPU、メモリ、ネットワーキングに関する追加の有用な情報があります。Databricks クラスターのパフォーマンスに影響を与える可能性のある外部要因を理解することが重要です。多数のインスタンスを持つクラスターの場合、ボトルネックと全体的な健全性を理解することも重要です。
監視方法
コレクターとその依存関係をインストールするには、Databricks init スクリプトが必要です。これらは、起動時に Databricks クラスターの各インスタンスで実行されるスクリプトです。
Databricks クラスターのアクセス許可には、インスタンスプロファ イルを使用してメトリクスとログを送信するためのアクセス許可も必要です。
最後に、Databricks クラスターの Spark 設定でメトリクス名前空間を設定することがベストプラクティスです。 testApp クラスターへの適切な参照を使用します。
図 1: メトリクス名前空間 Spark 設定の例
DataBricks に適した優れた Observability ソリューションの主要な要素
1) メトリクス: メトリクスは、一定期間にわたって測定されたアクティビティまたは特定のプロセスを説明する数値です。Databricks におけるさまざまなタイプのメトリクスは次のとおりです。
CPU、メモリ、ディスク、ネットワークなどのシステムリソースレベルのメトリクス。 Custom Metrics Source、StreamingQueryListener、QueryExecutionListener を使用したアプリケーションメトリクス。 MetricsSystem によって公開される Spark メトリクス。
2) ログ: ログは、発生した一連のイベントを表現したもので、それらについての線形のストーリーを伝えます。Databricks には以下のような異なるタ イプのログがあります。
- イベントログ
- 監査ログ
- ドライバーログ: stdout、stderr、log4j カスタムログ (構造化ログを有効化)
- Executor ログ: 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 を監視する方法の詳細については、次を参照してください。 Amazon CloudWatch で Databricks を監視する方法
オープンソースソフトウェアのオブザーバビリティオプション
Amazon Managed Service for Prometheus は、Prometheus 互換のマネージド型サーバーレス監視サービスで、メトリクスの保存と、これらのメトリクス上に作成されたアラートの管理を担当します。Prometheus は人気のあるオープンソース監視技術であり、Kubernetes に次いで Cloud Native Computing Foundation に属する 2 番目のプロジェクトです。
Amazon Managed Grafana は、Grafana のマネージドサービスです。Grafana は、時系列データの可視化のためのオープンソーステクノロジーであり、一般的にオブザーバビリティのために使用されます。Grafana を使用して、Amazon Managed Service for Prometheus、Amazon CloudWatch など、複数のソースからのデータを可視化できます。これは、Databricks のメトリクスとアラートを可視化するために使用されます。
AWS Distro for OpenTelemetry は、AWS がサポートする OpenTelemetry プロジェクトのディストリビューションであり、トレースとメトリクスを収集するためのオープンソース標準、ライブラリ、およびサービスを提供します。OpenTelemetry を通じて、Prometheus や StatsD などのさまざまなオブザーバビリティデータ形式を収集し、このデータを強化して、CloudWatch や Amazon Managed Service for Prometheus などの複数の送信先に送信できます。