Databricks でのオーケストレーションの概要

Databricks には、データ処理ワークロード を調整する ための組み込みエクスペリエンスが用意されているため、大規模なワークフローの一部として複数のタスクを調整して実行できます。 頻繁で反復可能なタスクの実行を合理化、最適化、スケジュールできるため、複雑なワークフローの管理が容易になります。

この記事では、 Databricks ジョブを使用した本番運用ワークロードの管理に関連する概念と選択肢について説明します。

ジョブとは?

Databricks では、ジョブを使用して、 ワークフロー内の Databricks 上のタスクをスケジュールおよび調整します。 一般的なデータ処理ワークフローには、ETL ワークフロー、ノートブックの実行、機械学習 (ML) ワークフロー、dbt などの外部システムとの統合などがあります。

ジョブは 1 つ以上のタスクで構成され、ビジュアル オーサリング UI を使用した分岐 (if / else ステートメント) やループ (for each ステートメント) などのカスタム制御フロー ロジックをサポートします。 タスクは、ETL ワークフローでデータを読み込んだり変換したり、機械学習パイプラインの一部として制御された反復可能な方法で ML モデルを構築、トレーニング、デプロイしたりできます。

例: 日次データ処理および検証ジョブ

次の例は、Databricks のジョブを示しています。

Databricks インターフェイスのジョブと、4 つのタスクと毎日実行するトリガーを示す例。

このサンプル・ジョブには、以下の特性があります。

  1. 最初のタスクでは、収益データを取り込みます。

  2. 2 番目のタスクは、null の if / else チェックです。

  3. そうでない場合は、変換タスクが実行されます。

  4. それ以外の場合は、データ品質検証を使用してノートブック タスクを実行します。

  5. 毎日午前 11 時 29 分に実行される予定です。

独自のジョブの作成について簡単に紹介するには、「 Databricks ジョブを使用して最初のワークフローを作成する」を参照してください。

一般的な使用例

データエンジニアリングの基本的な原則から高度な機械学習、シームレスなツール統合まで、これらの一般的なユースケースは、最新のアナリティクス、ワークフローの自動化、インフラストラクチャのスケーラビリティを推進する幅広い機能を示しています。

データエンジニアリング

ETL (抽出, 変換, ロード) パイプライン: さまざまなソースからのデータの抽出を自動化し、データを適切な形式に変換して、データウェアハウスまたはデータレイクにロードします。「Databricks で初めての ETL ワークロードを実行する」を参照してください

データ移行: あるシステムから別のシステムにデータを移動します。

継続的なデータ処理: ジョブは、Kafka などのソースからのデータのストリーミングや Delta テーブルへのデータの書き込みなど、継続的なデータ処理タスクに使用します。

データサイエンスと機械学習

モデル トレーニング: 機械学習モデルのトレーニング ジョブをスケジュールして実行し、モデルが最新のデータでトレーニングされるようにします。

バッチ推論: バッチ推論ジョブを実行するプロセスを自動化して、トレーニング済みのモデルから予測を生成します。

ハイパーパラメーターチューニング: Orchestrate ハイパーパラメーターチューニング ジョブ to optimize 機械学習モデル.

アナリティクスとレポーティング

スケジュールされたクエリ: スケジュールに従ってジョブ SQL クエリ を実行し、レポートの生成またはダッシュボードの更新を行います。

データ集約: 定期的なデータ集約タスクを実行して、分析用のデータを準備します。

タスクの自動化

Multi-タスク ワークフロー: 一連のノートブック、 JAR ファイル、 SQL クエリ、 Delta Live Tables パイプラインの実行など、複数のタスクを含む複雑なワークフローを作成します。

条件付きロジック: 条件付きロジックを使用して、前のタスクの成功または失敗に基づいてタスク のフローを制御します

通知とモニタリング

Databricks の UI、CLI、API を使用するか、Slack や Webhook などのツールとの統合を使用して、通知を設定し、 ジョブの実行結果を監視し ます。

他のツールとの統合

Apache Airflow: Apache Airflow などの外部オーケストレーションツールを使用して Databricks ジョブをトリガーし、より複雑で統合されたワークフローを可能にします。

コードとしてのインフラストラクチャ (IaC)

Databricks アセットバンドル: ジョブやその他のリソースをコードとして管理し、バージョン管理、コードレビュー、CI/CD (継続的インテグレーション/継続的デプロイメント) のプラクティスを容易にします。

オーケストレーションの概念

Databricks でオーケストレーションを使用する場合、ジョブ、タスク、トリガーの 3 つの主要な概念があります。

ジョブ - ジョブは、操作の調整、スケジュール設定、および実行のための主要なリソースです。 ジョブの複雑さは、 Databricks ノートブックを実行する 1 つのタスクから、条件付きロジックと依存関係を持つ数百のタスクまでさまざまです。 ジョブ内のタスクは、有向非巡回グラフ (DAG) によって視覚的に表されます。 ジョブには、次のようなプロパティを指定できます。

  • トリガー - ジョブをいつ実行するかを定義します。

  • パラメーター - ジョブ内のタスクに自動的にプッシュされる実行-time パラメーター。

  • 通知 - ジョブが失敗したとき、または時間がかかりすぎたときに送信されるEメールまたはWebhook。

  • Git - ジョブ タスクのソース管理設定。

タスク - タスクは、ジョブ内の特定の作業単位です。 各タスクは、次のようなさまざまな操作を実行できます。

  • ノートブック タスクは、Databricks ノートブックを実行します。 ノートブックへのパスと、ノートブックに必要なパラメーターを指定します。

  • パイプライン タスクはパイプラインを実行します。 既存の Delta Live Tables パイプライン (具体化されたビューやストリーミング テーブルなど) を指定できます。

  • A Python スクリプト タスク Python ファイルを実行します。 ファイルへのパスと必要なパラメーターを指定します。

タスクには多くの種類があります。 完全なリストについては、「 タスクの種類」を参照してください。 タスクは、他のタスクに依存したり、条件付きで他のタスクを実行したりできるため、条件付きロジックと依存関係を持つ複雑なワークフローを作成できます。

トリガー - トリガーは、特定の条件またはイベントに基づいてジョブの実行を開始するメカニズムです。 トリガーは、スケジュールされた時刻 (たとえば、毎日午前 2 時) にジョブを実行するなどの時間ベースのものもあれば、新しいデータがクラウド ストレージに到着したときにジョブを実行するなどのイベントベースのものもあります。

モニタリングとオブザーバビリティ

ジョブは、モニタリングと可観測性のための組み込みサポートを提供します。 次のトピックでは、このサポートの概要について説明します。 モニタリング ジョブとオーケストレーションの詳細については、「Databricks ジョブのモニタリングと可観測性」を参照してください。

UI でのジョブ モニタリングと可観測性 - Databricks UI では、ジョブの所有者や最後の実行結果などの詳細を含むジョブを表示したり、ジョブのプロパティでフィルタリングしたりできます。 ジョブの実行履歴を表示し、ジョブ内の各タスクに関する詳細情報を取得できます。

ジョブ 実行のステータスとメトリクス - Databricks は、ジョブの実行の成功と、ジョブ実行内の各タスクのログとメトリクスを報告し、問題を診断してパフォーマンスを把握します。

通知とアラート - Eメール、Slack、カスタムWebhook、その他多くのオプションを使用して、ジョブイベントの通知を設定できます。

システムテーブルを介したカスタムクエリ - Databricks には、アカウント全体のジョブ実行とタスクを記録するシステムテーブルが用意されています。 これらのテーブルを使用して、ジョブのパフォーマンスとコストをクエリおよび分析できます。 ダッシュボードを作成してジョブのメトリクスと傾向を視覚化し、ワークフローの正常性とパフォーマンスを監視できます。

制限事項

次の制限があります。

  • ワークスペースの並列実行タスク数は 2000 に制限されています。 すぐに開始できない実行を要求すると、 429 Too Many Requests 応答が返されます。

  • ワークスペースが 1 時間に作成できるジョブの数は 10000 に制限されています(「実行の送信」を含む)。この制限は、REST API およびノートブックワークフローによって作成されたジョブにも影響します。

  • ワークスペースには最大 12,000 個の保存されたジョブを含めることができます。

  • ジョブには最大 100 個のタスクを含めることができます。

ワークフローをプログラムで管理できますか?

Databricks には、次のようなツールと APIs があり、プログラムによってワークフローをスケジュールおよび調整できます。

ツールと APIs を使用してジョブを作成および管理する例については、「 ジョブの作成と管理の自動化」を参照してください。 使用可能なすべての開発者ツールのドキュメントについては、「 ローカル開発ツール」を参照してください。

外部ツールは、 Databricks ツールと APIs を使用して、プログラムによってワークフローをスケジュールします。 たとえば、 Apache Airflow などのツールを使用してジョブをスケジュールすることもできます。 「Apache Airflow を使用した Databricks ジョブのオーケストレーション」を参照してください。