コンピュートの管理

この記事では、Databricks コンピュートの表示、編集、開始、終了、削除、アクセス制御、パフォーマンスとログのモニタリングなどの管理方法について説明します。 Clusters APIを使用してコンピュートをプログラム的に管理することもできます。

コンピュートを見る

コンピュートを表示するには、クリックしてくださいコンピュートアイコンワークスペースのサイドバーでコンピュートします

左側には、コンピュートがピン留めされているかどうかとコンピュートのステータスを示す 2 つの列があります。 ステータスにカーソルを合わせると、詳細情報が表示されます。

コンピュート構成を JSON ファイルとして表示する

コンピュート構成を JSON として表示すると役立つ場合があります。 これは、 Clusters APIを使用して同様のコンピュートを作成する場合に特に便利です。 既存のコンピュートを表示する場合は、 「構成」タブに移動し、タブの右上にある「JSON 」をクリックし、JSON をコピーして API 呼び出しに貼り付けます。 JSON ビューは読み取り専用です。

コンピュートをピン留め

コンピュートは終了から 30 日後に完全に削除されます。 コンピュートが 30 日以上終了した後でも多目的コンピュート構成を維持するために、管理者はコンピュートをピン留めすることができます。 ピン留めできるコンピュートリソースは最大100個です。

管理者は、コンピュートのリストまたはコンピュートの詳細ページからピン留めアイコンをクリックしてコンピュートをピン留めできます。

コンピュートを編集する

コンピュートの詳細 UI からコンピュートの構成を編集できます。

注:

  • コンピュートにアタッチされていたノートブックとジョブは、編集後もアタッチされたままになります。

  • コンピュートにインストールされているライブラリは、編集後もインストールされたままになります。

  • 実行中のコンピュートの属性 (コンピュートのサイズと権限を除く) を編集した場合は、コンピュートを再起動する必要があります。 これにより、現在コンピュートを使用しているユーザーが中断される可能性があります。

  • 編集できるのは、実行中または終了したコンピュートのみです。 ただし、これらの状態にないコンピュートの権限は、コンピュートの詳細ページで更新できます。

コンピュートのクローンを作成する

既存のコンピュートを複製するには、コンピュートケバブメニューケバブメニュー。

[クローン]を選択すると、コンピュート構成が事前に入力されたコンピュート作成 UI が開きます。 次の属性は、クローンに含まれません。

  • コンピュート権限

  • アタッチされたノートブック

以前にインストールしたライブラリをクローンしたコンピュートに含めない場合は、 「コンピュートの作成」ボタンの横にあるドロップダウン メニューをクリックし、 「ライブラリなしで作成」を選択します。

コンピュート権限

コンピュートには、 NO PERMISSIONS 、 Can Attach To 、 Can Restart 、およびCAN MANAGEの 4 つの権限レベルがあります。 詳細については、 「コンピュート ACL」を参照してください。

注:

シークレット は、クラスターの Spark ドライバーのログ stdout および stderr ストリームから編集されません。 機密データを保護するために、デフォルトでは、Spark ドライバーのログは、ジョブ、シングルユーザーアクセスモード、および共有アクセスモードクラスターに対する CAN MANAGE 権限を持つユーザーのみが表示できます。 Can Attach To または Can Restart のアクセス許可を持つユーザーがこれらのクラスターのログを表示できるようにするには、クラスター構成で Spark 構成プロパティ (spark.databricks.acl.needAdminPermissionToViewLogs false) を設定します。

非分離共有アクセス モード クラスターでは、 Can Attach Toまたは「管理可能」権限を持つユーザーが Spark ドライバーのログを表示できます。 ログを読み取ることができるユーザーを CAN MANAGE 権限を持つユーザーのみに制限するには、 spark.databricks.acl.needAdminPermissionToViewLogstrueに設定します。

Spark プロパティをクラスター構成に追加する方法については、 「Spark 構成」を参照してください。

コンピュート権限を構成する

このセクションでは、ワークスペース UI を使用して権限を管理する方法について説明します。 Permissions APIまたはDatabricks Terraform プロバイダーを使用することもできます。

コンピュート権限を構成するには、コンピュートに対する CAN MANAGE 権限が必要です。

  1. サイドバーで、「コンピュート」をクリックします。

  2. コンピュートの行でケバブメニューをクリックしますケバブメニュー右側にある[権限の編集]を選択します。

  3. [アクセス許可の設定]で、 [ユーザー、グループ、またはサービスプリンシパルの選択]ドロップダウン メニューをクリックし、ユーザー、グループ、またはサービスプリンシパルを選択します。

  4. 権限のドロップダウンメニューから権限を選択します。

  5. 追加 」をクリックし、「 保存」をクリックします。

コンピュートを終了する

コンピュートのリソースを節約するには、コンピュートを終了します。 終了したコンピュートの設定は、後で再利用できるように保存されます (ジョブの場合は自動起動されます)。 コンピュートを手動で終了することも、指定した非アクティブ期間が経過した後に自動的に終了するようにコンピュートを構成することもできます。 終了したコンピュートの数が150を超えると、最も古いコンピュートが削除されます。

コンピュートはピン留めするか再起動しない限り、終了後 30 日後に自動的かつ完全に削除されます。

終了したコンピュートは、コンピュート名の左側に灰色の丸が付いたコンピュート リストに表示されます。

注:

新しいジョブ コンピュート (通常は推奨) でジョブを実行すると、コンピュートは終了し、ジョブが完了したときに再始動できなくなります。 一方、終了した既存の万能コンピュートに対してジョブを実行するようにスケジュールすると、そのコンピュートは 自動開始されます

手動での終了

コンピュートのリスト (コンピュートの行の四角形をクリック) またはコンピュートの詳細ページ ( [終了]をクリック) から手動でコンピュートを終了できます。

自動終了

コンピュートの自動終了を設定することもできます。 コンピュートの作成中に、コンピュートを終了するまでの非アクティブ期間を分単位で指定できます。

現在の時刻とコンピュートで実行された最後のコマンドの差が、指定された非アクティブ期間を超えている場合、Databricks はそのコンピュートを自動的に終了します。

Spark ジョブ、構造化ストリーミング、JDBC 呼び出しなど、コンピュート上のすべてのコマンドの実行が終了すると、コンピュートは非アクティブであるとみなされます。 これには、コンピュートへの SSH 接続によって実行されるコマンドや、bash コマンドを実行するコマンドは含まれません。

警告

  • コンピュートは、DStream の使用から生じるアクティビティを報告しません。 これは、自動終了コンピュートが DStreams の実行中に終了する可能性があることを意味します。 DStream を実行するコンピュートの自動終了をオフにするか、構造化ストリーミングの使用を検討してください。

  • アイドル コンピュートは、終了前の非アクティブ期間中に DBU とクラウド インスタンスの料金を蓄積し続けます。

自動終了を設定する

新しいコンピュート UI で自動終了を設定できます。 チェックボックスがオンになっていることを確認し、[ Terminate after ___ of minutes of inactivity ] 設定に分数を入力します。

自動終了をオプトアウトするには、[自動終了] チェックボックスをオフにするか、非アクティブ期間として0を指定します。

注:

自動終了は、最新の Spark バージョンで最もよくサポートされています。 古い Spark バージョンには既知の制限があり、コンピュート アクティビティの不正確なレポートが発生する可能性があります。 たとえば、JDBC、R、またはストリーミング コマンドを実行するコンピュートは、コンピュートの早期終了につながる古いアクティビティ時間を報告する可能性があります。 バグ修正と自動終了の改善を利用するには、最新の Spark バージョンにアップグレードしてください。

予期せぬ終了

手動終了や設定された自動終了の結果ではなく、コンピュートが予期せず終了することがあります。

終了の原因と修復手順の一覧については、ナレッジベースを参照してください。

コンピュートを削除する

コンピュートを削除すると、コンピュートが終了し、その構成が削除されます。 コンピュートを削除するには、コンピュートのリストから「削除」を選択します。ケバブメニューメニュー。

警告

この操作は元に戻せません。

ピン留めコンピュートを削除するには、まず管理者がピン留めを解除する必要があります。

Clusters APIエンドポイントを呼び出して、プログラムでコンピュートを削除することもできます。

コンピュートを再起動する

コンピュートのリスト、コンピュートの詳細ページ、またはノートブックから、以前に終了したコンピュートを再開できます。 Clusters APIエンドポイントを呼び出して、プログラムでコンピュートを開始することもできます。

Databricks は、一意のクラスター IDを使用してコンピュートを識別します。 終了したコンピュートを開始すると、Databricks は同じ ID でコンピュートを再作成し、すべてのライブラリを自動的にインストールし、ノートブックを再アタッチします。

コンピュートを再起動して最新のイメージで更新します

コンピュートを再起動すると、コンピュート リソース コンテナーと VM ホストの最新のイメージが取得されます。 ストリーミング データの処理に使用されるコンピュートなど、長時間実行されるコンピュートの場合は、定期的な再起動をスケジュールすることが重要です。

すべてのコンピューティングリソースを定期的に再起動して、最新のイメージバージョンでイメージを常に最新の状態に保つようにしてください。

重要

アカウントまたはワークスペースのセキュリティ プロファイルを有効にすると、スケジュールされたメンテナンス ウィンドウ中に、長時間実行されるコンピュート が必要に応じて自動的に再起動されます。 これにより、自動再起動によってスケジュールされたジョブが中断されるリスクが軽減されます。 また、メンテナンス期間中に強制的に再起動することもできます。 自動クラスター更新を参照してください。

ノートブックの例: 長時間実行されているコンピュートを検索する

ワークスペース管理者の場合は、各コンピュートの実行時間を決定するスクリプトを実行でき、指定した日数より古い場合はオプションで再起動できます。 Databricks は、このスクリプトをノートブックとして提供します。

注:

ワークスペースが自動コンピュート更新のパブリックプレビューの一部である場合、このスクリプトは必要ないかもしれません。 コンピュートは、スケジュールされたメンテナンス期間中に必要に応じて自動的に再起動します。

スクリプトの最初の行では、構成パラメーターを定義します。

  • min_age_output: コンピュートが実行できる最大日数。 デフォルトは 1 です。

  • perform_restart: Trueの場合、スクリプトは、 min_age_outputで指定された日数よりも経過したコンピュートを再起動します。 デフォルトはFalseで、長時間実行されているコンピュートを識別しますが、再起動しません。

  • secret_configuration: REPLACE_WITH_SCOPEREPLACE_WITH_KEYを、シークレットスコープおよびキー名に置き換えます。シークレットの設定の詳細については、ノートブックを参照してください。

警告

perform_restartTrueに設定すると、スクリプトは対象となるコンピュートを自動的に再起動します。これにより、アクティブなジョブが失敗し、開いているノートブックがリセットされる可能性があります。 ワークスペースのビジネスクリティカルなジョブが中断されるリスクを軽減するには、スケジュールされたメンテナンス期間を計画し、ワークスペース ユーザーに必ず通知してください。

長時間実行されているコンピュートを特定し、必要に応じて再起動します

ノートブックを新しいタブで開く

ジョブおよび JDBC/ODBC クエリのコンピュート自動起動

終了したコンピュートに割り当てられたジョブが実行スケジュールされている場合、または JDBC/ODBC インターフェースから終了したコンピュートに接続すると、コンピュートは自動的に再起動されます。 「ジョブと JDBC接続 のコンピュートの設定 」を参照してください。

コンピュートの自動開始を使用すると、スケジュールされたジョブのコンピュートを再起動するために手動介入を必要とせずに、コンピュートが自動終了するように構成できます。 さらに、終了したコンピュートで実行するジョブをスケジュールすることで、コンピュートの初期化をスケジュールできます。

コンピュート が自動的に再起動される前に、コンピュートジョブ のアクセス制御権限がチェックされます。

注:

コンピュートが Databricks プラットフォーム バージョン 2.70 以前で作成された場合、自動起動はありません。終了したコンピュートで実行するようにスケジュールされたジョブは失敗します。

Apache Spark UI でコンピュート情報を表示する

コンピュート詳細ページの「Spark UI」タブを選択すると、Spark ジョブに関する詳細情報を表示できます。

終了したコンピュートを再起動すると、Spark UI には、終了したコンピュートの履歴情報ではなく、再起動されたコンピュートに関する情報が表示されます。

Spark UI を使用してコストとパフォーマンスの問題を診断する手順については、「Spark UI を使用してコストとパフォーマンスの問題を診断する」を参照してください。

コンピュートのログを表示する

Databricks は、コンピュート関連のアクティビティの 3 種類のログを提供します。

  • コンピュート イベント ログ。作成、終了、構成編集などのコンピュート ライフサイクル イベントをキャプチャします。

  • Apache Sparkドライバーとワーカーログは、デバッグに使用できます。

  • init スクリプトのログをコンピュートします。これは、init スクリプトのデバッグに役立ちます。

このセクションでは、コンピュート イベント ログ、ドライバーおよびワーカー ログについて説明します。 init スクリプト ログの詳細については、 「init スクリプトのログ記録」を参照してください。

コンピュートイベントログ

コンピュート イベント ログには、ユーザー アクションによって手動でトリガーされるか、Databricks によって自動的にトリガーされる重要なコンピュート ライフサイクル イベントが表示されます。 このようなイベントは、コンピュート全体の動作とコンピュート内で実行されているジョブに影響を与えます。

サポートされているイベントのタイプについては、クラスターAPIのデータ構造を参照してください。

イベントは、Databricksの他のデータ保持期間と同様に、60日間保存されます。

コンピュートのイベント ログを表示する

コンピュートのイベント ログを表示するには、コンピュートの詳細ページで[イベント ログ]タブを選択します。

イベントの詳細については、ログの行をクリックし、[ JSON ] タブをクリックして詳細を表示します。

コンピュートドライバーとワーカーのログ

ノートブック、ジョブ、ライブラリからの直接印刷ステートメントとログ ステートメントは、Spark ドライバーのログに記録されます。 これらのログ ファイルには、コンピュートの詳細ページの[ドライバー ログ]タブからアクセスできます。 ログファイルの名前をクリックしてダウンロードします。

これらのログには、次の3つの出力があります。

  • 標準出力

  • 標準エラー

  • ログ4jログ

Spark ワーカーのログを表示するには、 [Spark UI]タブを使用します。 コンピュートの ログ配信場所を構成することもできます。 ワーカー ログとコンピュート ログは両方とも、指定した場所に配信されます。

パフォーマンスの監視

Databricksのパフォーマンスを監視できるように、 Databricksコンピュートの詳細ページからメトリクスにアクセスできるようにしています。 Databricks Runtime 12.2 以下の場合、 Databricks Gangliametriksへのアクセスを提供します。 Databricks Runtime 13.3 LTS以降では、コンピュート メトリックはDatabricksによって提供されます。

Datadogエージェントをコンピュート ノードにインストールして、Datadog メトリクスを Datadog アカウントに送信することもできます。

コンピュートメトリクス

コンピュートメトリクスは、非サーバレス汎用・ジョブコンピュート用のデフォルトモニタリングツールです。 コンピュート メトリクス UI にアクセスするには、コンピュートの詳細ページの[メトリクス] タブに移動します。

日付ピッカー フィルターを使用して時間範囲を選択すると、過去のメトリクスを表示できます。 メトリクスは 1 分ごとに収集されます。 [更新]ボタンをクリックして、最新のメトリクスを取得することもできます。 詳細については、 「コンピュート メトリクスの表示」を参照してください。

Gangliaメトリクス

注:

Gangliaメトリクスは、Databricks Runtime 12.2以下でのみ使用できます。

Ganglia UI にアクセスするには、コンピュートの詳細ページの [メトリック] タブに移動し、レガシー メトリック設定を有効にします。 GPU 対応コンピュートでは GPU メトリックが利用可能です。

ライブメトリクスを表示するには、Ganglia UIリンクをクリックします。

過去のメトリクスを表示するには、スナップショット ファイルをクリックします。 スナップショットには、選択した時刻の前の時間の集計されたメトリクスが含まれます。

注:

Ganglia は Docker コンテナではサポートされていません。 コンピュートでDocker コンテナを使用する場合、Ganglia メトリクスは利用できません。

Ganglia メトリクス収集の構成

デフォルトでは、Databricks は Ganglia メトリクスを 15 分ごとに収集します。 収集期間を構成するには、 init スクリプトを使用するか、クラスター作成 APIspark_env_varsフィールドでDATABRICKS_GANGLIA_SNAPSHOT_PERIOD_MINUTES環境変数を設定します。

ノートブックの例: Datadog メトリクス

Datadog メトリクス

Datadogエージェントをコンピュート ノードにインストールして、Datadog メトリクスを Datadog アカウントに送信できます。 次のノートブックは、コンピュート スコープの init スクリプトを使用してコンピュートに Datadog エージェントをインストールする方法を示しています。

すべてのコンピュートに Datadog エージェントをインストールするには、コンピュート ポリシーを使用してコンピュート スコープの init スクリプトを管理します。

Datadog Agent initスクリプトノートブックのインストール

ノートブックを新しいタブで開く

スポットインスタンスの廃止

スポット インスタンスはコストを削減できるため、オンデマンド インスタンスではなくスポット インスタンスを使用してコンピュートを作成するのがジョブを実行する一般的な方法です。 ただし、スポット インスタンスは、クラウド プロバイダーのスケジューリング メカニズムによってプリエンプトされる可能性があります。 スポット インスタンスをプリエンプションすると、実行中のジョブに次のような問題が発生する可能性があります。

  • シャッフル・フェッチの失敗

  • データ損失のシャッフル

  • RDDデータ損失

  • ジョブの失敗

使用停止を有効にすると、これらの問題に対処できます。 廃止は、スポットインスタンスが廃止される前にクラウドプロバイダーが通常送信する通知を利用します。 エグゼキューターを含むスポットインスタンスがプリエンプション通知を受信すると、使用停止プロセスはシャッフルと RDD データを正常なエグゼキューターに移行しようとします。 最終的なプリエンプションまでの期間は、クラウドプロバイダーに応じて、通常30秒から2分です。

Databricks では、使用停止も有効になっている場合は、データ移行を有効にすることをお勧めします。 一般に、シャッフル フェッチの失敗、シャッフル データの損失、RDD データの損失など、移行するデータが増えるにつれてエラーの可能性は低くなります。 また、データ移行により、再計算が減り、コストが節約されます。

注:

使用停止はベストエフォートであり、最終的なプリエンプションの前にすべてのデータを移行できることを保証するものではありません。 使用停止では、実行中のタスクがエグゼキューターからシャッフル データを取得しているときに、シャッフル フェッチの失敗を保証できません。

使用停止を有効にすると、スポットインスタンスのプリエンプションによって発生したタスクの失敗は、失敗した試行の合計数に追加されません。 プリエンプションによるタスクの失敗は、失敗の原因がタスクの外部にあり、ジョブの失敗にはならないため、試行の失敗としてカウントされません。

使用停止を有効にする

コンピュートでのデコミッションを有効にするには、コンピュート構成 UI の[詳細オプション][Spark]タブに次のプロパティを入力します。 これらのプロパティの詳細については、 「Spark 構成」を参照してください。

  • アプリケーションの廃止を有効にするには、このプロパティを 「Spark構成 」フィールドに入力します:

    spark.decommission.enabled true
    
  • 使用停止中にシャッフル・データ移行を有効にするには、 Spark構成 フィールドにこのプロパティを入力します。

    spark.storage.decommission.enabled true
    spark.storage.decommission.shuffleBlocks.enabled true
    
  • 使用停止中にRDDキャッシュ・データ移行を有効にするには、 Spark構成 フィールドに次のプロパティを入力します。

    spark.storage.decommission.enabled true
    spark.storage.decommission.rddBlocks.enabled true
    

    注:

    RDD StorageLevel レプリケーションが 1 より大きい値に設定されている場合、レプリカによって RDD のデータが失われないため、Databricks では RDD データ移行を有効にすることはお勧めしません。

  • ワーカーのデコミッションを有効にするには、このプロパティを 「環境変数 」フィールドに入力します。

    SPARK_WORKER_OPTS="-Dspark.decommission.enabled=true"
    

運用停止ステータスと損失理由をUIで表示する

UI からワーカーの廃止ステータスにアクセスするには、 Spark コンピュート UI - マスタータブに移動します。

廃止が完了すると、コンピュート詳細ページのSpark UI > エグゼキュータータブでエグゼキューターの損失理由を確認できます。