メインコンテンツまでスキップ

コンピュートの管理

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

コンピュートを見る

コンピュートを表示するには、ワークスペースサイドバー コンピュートアイコンコンピュート 」をクリックします。

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

コンピュートの設定を JSON ファイルとして表示

コンピュートの設定を JSONとして表示すると便利な場合があります。 これは、 クラスター APIを使用して同様のコンピュートを作成する場合に特に便利です。 既存のコンピュートを表示する場合は、 構成 タブに移動し、タブの右上にある JSON をクリックして、JSONをコピーし、API通話に貼り付けます。JSON ビューは読み取り専用です。

コンピュートのピン留め

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

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

コンピュートの編集

コンピュートの設定は、コンピュートの詳細UIから編集できます。

注記
  • コンピュートに添付されていたノートブックとジョブは、編集後も添付されたままになります。
  • コンピュートにインストールしたライブラリは、編集後もインストールされたままになります。
  • 実行中のコンピュートの属性 (コンピュートのサイズと権限を除く) を編集した場合は、コンピュートを再起動する必要があります。 これにより、現在コンピュートを使用しているユーザーに支障をきたす可能性があります。
  • 編集できるのは、実行中または終了したコンピュートのみです。 ただし、コンピュートの詳細ページで、それらの状態にないコンピュートの 権限 を更新することはできます。

コンピュートのクローン

既存のコンピュートをクローンするには、コンピュートの ケバブメニューから クローン ケバブメニュー を選択します。

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

  • コンピュートの権限
  • アタッチされたノートブック

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

コンピュートの権限

コンピュートには、 NO PERMISSIONS、 Can Attach To、 Can Restart、 CAN MANAGEの 4 つのアクセス許可レベルがあります。 詳細については、コンピュートのACLを参照してください。

注記

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

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

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

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

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

コンピュートのアクセス許可を構成するには、コンピュートに対する CAN MANAGE アクセス許可が必要です。

  1. サイドバーで、 コンピュート をクリックします。
  2. コンピュートの行で、右側のケバブメニュー ケバブメニュー をクリックし、[ アクセス許可の編集 ] を選択します。
  3. 権限設定 で、 ユーザー、グループ、サービスプリンシパルを選択... ドロップダウンメニューをクリックし、ユーザー、グループ、またはサービスプリンシパルを選択します。
  4. 権限のドロップダウンメニューから権限を選択します。
  5. 追加 をクリックし、 保存 をクリックします。

コンピュートを終了

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

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

終了したコンピュートは、コンピュート名の横に灰色の円でコンピュートリストに表示されます。

注記

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

手動終了

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

自動終了

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

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

コンピュートは、 Spark ジョブ、構造化ストリーミング、 JDBCコール、 Databricks Webターミナルアクティビティなど、コンピュート上のすべてのコマンドの実行が終了したときに非アクティブと見なされます。 これには、コンピュートにSSH接続してコマンドを実行したり、 Databricks Webターミナルの外部でbashコマンドを実行したりすることは含まれません。

警告
  • コンピュートは、DStreams の使用に起因するアクティビティを報告しません。 これは、自動終了コンピュートが DStreams の実行中に終了できることを意味します。 DStreams を実行しているコンピュートの自動終了をオフにするか、構造化ストリーミングの使用を検討してください。
  • アイドル状態のコンピュートは、終了前の非アクティブ期間中、 DBU とクラウドインスタンスの料金を蓄積し続けます。

自動終了を構成する

新しいコンピュート UI で自動終了を構成できます。 このボックスがオンになっていることを確認し、[ 非アクティブな状態が ___ 分経過したら終了する ] 設定に分数を入力します。

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

注記

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

予期しない終了

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

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

コンピュートを削除する

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

警告

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

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

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

コンピュートを再起動します

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

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

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

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

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

important

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

ノートブック サンプル: 長時間稼働しているコンピュートの特定

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

注記

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

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

  • min_age_output: コンピュートを実行できる最大日数。 デフォルトは 1 です。
  • perform_restart: Trueの場合、スクリプトは min_age_outputで指定された日数より大きい経過時間を持つコンピュートを再起動します。 デフォルトは Falseで、実行時間の長いコンピュートを識別しますが、コンピュートは再起動しません。
  • secret_configuration: REPLACE_WITH_SCOPEREPLACE_WITH_KEYシークレットスコープとキー名に置き換えます。 シークレットの設定の詳細については、ノートブックを参照してください。
警告

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

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

Open notebook in new tab

ジョブやJDBC/ODBCクエリーにおけるコンピュートの自動起動

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

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

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

注記

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

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

Sparkジョブの詳細情報を表示するには、コンピュートの詳細ページの Spark UI タブを選択します。

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

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

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

Databricks では、コンピュート関連のアクティビティの 3 種類のログ記録が提供されます。

  • コンピュート イベント ログ: 作成、終了、構成の編集などのコンピュート ライフサイクル イベントをキャプチャします。
  • Apache Sparkドライバーとワーカーログは、デバッグに使用できます。
  • コンピュート initスクリプト logs: これはデバッグ initスクリプトにとって価値があります。

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

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

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

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

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

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

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

イベントの詳細については、ログ内のその行をクリックし、[ JSON ] タブをクリックして詳細を確認してください。

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

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

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

  • 標準出力
  • 標準エラー
  • ログ4jログ

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

パフォーマンスの監視

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

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

コンピュート メトリクス

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

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

Ganglia メトリクス

注記

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

Ganglia UIにアクセスするには、コンピュートの詳細ページの メトリクス タブに移動し、 Legacy メトリクス 設定を有効にします。 GPU メトリクスは、GPU enabled コンピュートで使用できます。

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

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

注記

Ganglia は Docker コンテナではサポートされていません。 コンピュートと一緒に Docker コンテナ を使用する場合、Ganglia メトリクスはご利用いただけません。

Ganglia メトリクス収集の構成

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

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

Datadog メトリクス

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

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

Datadogエージェントをインストールするinitスクリプトノートブック

Open notebook in new tab

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

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

  • シャッフル フェッチの失敗
  • シャッフル データ損失
  • RDD データ損失
  • ジョブの失敗

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

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

注記

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

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

廃止を有効にする

コンピュートでデコミッションを有効にするには、コンピュート設定 UI の Advancedオプション 配下の 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 >エグゼキューター タブにエグゼキューターの損失理由が表示されます。