コンピュートの管理
この記事では、パフォーマンスとログの表示、編集、開始、終了、削除、アクセス制御、監視など、 Databricks コンピュートを管理する方法について説明します。 クラスターAPIを使用して、コンピュートをプログラムで管理することもできます。
コンピュートを見る
コンピュートを表示するには、ワークスペースサイドバー 「 コンピュート 」をクリックします。
左側には、コンピュートがピン留めされているかどうか、およびコンピュートのステータスを示す2つの列があります。 ステータスにカーソルを合わせると、詳細情報が表示されます。
コンピュートの設定を JSON ファイルとして表示
コンピュートの設定を JSONとして表示すると便利な場合があります。 これは、 クラスター APIを使用して同様のコンピュートを作成する場合に特に便利です。 既存のコンピュートを表示する場合は、[ 構成 ] タブに移動し、タブの右上にある [JSON ] をクリックして、JSONをコピーし、API通話に貼り付けます。JSON ビューは読み取り専用です。
ピン留め a コンピュート
コンピュートは終了してから 30 日後に完全に削除されます。 コンピュートが 30 日以上 終了 した後も、万能コンピュートの構成を維持するために、管理者はコンピュートをピン留めできます。 最大100個のコンピュートリソースをピン留めできます。
管理者は、ピン留めアイコンをクリックして、コンピュートリストまたはコンピュート詳細ページからコンピュートをピン留めできます。
コンピュートの編集
コンピュートの設定は、コンピュートの詳細UIから編集できます。
- コンピュートに添付されていたノートブックとジョブは、編集後も添付されたままになります。
- コンピュートにインストールしたライブラリは、編集後もインストールされたままになります。
- 実行中のコンピュートの属性 (コンピュートのサイズと権限を除く) を編集した場合は、コンピュートを再起動する必要があります。 これにより、現在コンピュートを使用しているユーザーに支障をきたす可能性があります。
- 編集できるのは、実行中または終了したコンピュートのみです。 ただし、コンピュートの詳細ページで、それらの州にないコンピュートの 権限 を更新することはできます。
コンピュートのクローン
既存のコンピュートをクローンするには、コンピュートの ケバブメニューから クローン を選択します。
[クローン] を選択すると、コンピュート作成 UI が開き、コンピュート構成が事前に入力されます。次の属性はクローンに含まれません。
- コンピュート パーミッション
- アタッチされたノートブック
以前にインストールしたライブラリをクローンしたコンピュートに含めない場合は、[ コンピュートの作成 ]ボタンの横にあるドロップダウンメニューをクリックし、[ ライブラリなしで作成 ]を選択します。
コンピュート パーミッション
コンピュートには、 NO PERMISSIONS、 Can Attach To、 Can Restart、 CAN MANAGEの 4 つのアクセス許可レベルがあります。 詳細については、「 コンピュート ACL」を参照してください。
シークレット は、クラスターの Spark ドライバーのログstdout
とstderr
ストリームから編集されません。 機密データを保護するために、by Default では、 Spark ドライバー ログは、ジョブ、専用アクセス モード、および標準アクセス モード クラスターに対する CAN MANAGE 権限を持つユーザーのみが表示できます。 Can Attach To または Can Restart の権限を持つユーザーがこれらのクラスターのログを表示できるようにするには、クラスター構成で Spark 構成プロパティ (spark.databricks.acl.needAdminPermissionToViewLogs false
) を設定します。
分離なしの共有アクセス モード クラスターでは、Spark Can Attach Toまたは アクセス許可を持つユーザーが ドライバーCAN MANAGE ログを表示できます。ログを読み取ることができるユーザーを CAN MANAGE 権限を持つユーザーのみに制限するには、 spark.databricks.acl.needAdminPermissionToViewLogs
を true
に設定します。
SparkSparkクラスター構成に プロパティを追加する方法については、 構成 を参照してください。
コンピュートの権限を構成する
このセクションでは、ワークスペース UI を使用して権限を管理する方法について説明します。 Permissions API または Databricks Terraform プロバイダーを使用することもできます。
コンピュートのアクセス許可を構成するには、コンピュートに対する CAN MANAGE アクセス許可が必要です。
- サイドバーで、 コンピュート をクリックします。
- コンピュートの行で、右側のケバブメニュー
をクリックし、[ アクセス許可の編集 ] を選択します。
- 権限設定 で、 ユーザー、グループ、サービスプリンシパルを選択... ドロップダウンメニューをクリックし、ユーザー、グループ、またはサービスプリンシパルを選択します。
- 権限のドロップダウンメニューから権限を選択します。
- [追加 ] をクリックし、[ 保存 ] をクリックします。
コンピュートを終了
コンピュート リソースを節約するために、コンピュートを終了できます。 終了したコンピュートの設定は、後で 再利用 (ジョブの場合は 自動開始)できるように保存されます。 コンピュートを手動で終了することも、指定した非アクティブ期間が経過すると自動的に終了するようにコンピュートを設定することもできます。 終了したコンピュートの数が150を超えた場合、最も古いコンピュートが削除されます。
コンピュートは 、ピン留め または再起動しない限り、終了後30日後に自動的に永久に削除されます。
終了したコンピュートは、コンピュート名の横に灰色の円でコンピュートリストに表示されます。
新しいジョブ コンピュート (通常は推奨) でジョブを実行すると、コンピュートは終了し、ジョブが完了したときに再始動できなくなります。 一方、終了した既存の万能コンピュートに対してジョブを実行するようにスケジュールすると、そのコンピュートは 自動開始されます。
手動終了
コンピュート リスト(コンピュートの行の四角形をクリック)またはコンピュートの詳細ページ( [終了] をクリック)から、コンピュートを手動で終了できます。
自動終了
コンピュートの自動終了を設定することもできます。 コンピュートの作成時に、コンピュートを終了する非アクティブ期間を分単位で指定できます。
コンピュートで実行された現在の時刻と最後に実行されたコマンドの差が、指定した非アクティブ期間よりも大きい場合、 Databricks は自動的にそのコンピュートを終了します。
コンピュートは、 Spark ジョブ、構造化ストリーミング、 JDBC 呼び出しなど、コンピュート上のすべてのコマンドの実行が終了したときに非アクティブと見なされます。
- コンピュートは、DStreams の使用に起因するアクティビティを報告しません。 これは、自動終了コンピュートが DStreams の実行中に終了できることを意味します。 DStreams を実行しているコンピュートの自動終了をオフにするか、構造化ストリーミングの使用を検討してください。
- アイドル状態のコンピュートは、終了前の非アクティブ期間中、 DBU とクラウドインスタンスの料金を蓄積し続けます。
自動終了を構成する
新しいコンピュート UI で自動終了を構成できます。 このボックスがオンになっていることを確認し、[ 非アクティブな状態が ___ 分経過したら終了 する] 設定に分数を入力します。
自動終了をオプトアウトするには、[自動終了] チェックボックスをオフにするか、非アクティブ期間として0
を指定します。
自動終了は、最新の Spark バージョンで最適にサポートされます。 古い Spark バージョンには既知の制限があり、コンピュート アクティビティのレポートが不正確になる可能性があります。 たとえば、コンピュート JDBC、R、またはストリーミング コマンドを実行しているコンピュートは、コンピュートの早期終了につながる古いアクティビティ時間を報告する可能性があります。 最新のSparkバージョンにアップグレードして、バグ修正と自動終了の改善をご利用ください。
コンピュートを削除する
コンピュートを削除すると、コンピュートが終了し、その設定が削除されます。 コンピュートを削除するには、コンピュートのメニューから 「削除 」を選択します。
この操作は元に戻せません。
ピン留め コンピュートを削除するには、まず管理者がピン留めを解除する必要があります。
クラスター API エンドポイントを呼び出して、プログラムでコンピュートを削除することもできます。
コンピュートを再起動します
以前に終了したコンピュートは、コンピュートリスト、コンピュートの詳細ページ、またはノートブックから再起動できます。 クラスター API エンドポイントを呼び出して、プログラムでコンピュートを開始することもできます。
Databricks 、コンピュートは、その一意の クラスター ID を使用して識別されます。 終了したコンピュートを起動すると、 Databricks は同じ ID でコンピュートを再作成し、すべてのライブラリを自動的にインストールし、ノートブックを再アタッチします。
コンピュートを再起動して、最新の画像に更新します
コンピュートを再起動すると、コンピュート リソース コンテナーと VM ホストの最新のイメージが取得されます。 ストリーミングデータの処理に使用されるコンピュートなど、実行時間の長いコンピュートに対しては、定期的な再起動をスケジュールすることが重要です。
すべてのコンピューティングリソースを定期的に再起動して、最新のイメージバージョンでイメージを常に最新の状態に保つようにしてください。
ノートブック example: Find long-running コンピュート
ワークスペース管理者の場合は、各コンピュートの実行時間を決定するスクリプトを実行し、必要に応じて、指定した日数より古い場合は再起動できます。 Databricks では、このスクリプトをノートブックとして提供しています。
スクリプトの最初の行では、構成パラメーターを定義します。
min_age_output
: コンピュートを実行できる最大日数。 デフォルトは 1 です。perform_restart
:True
の場合、スクリプトはmin_age_output
で指定された日数より大きい経過時間を持つコンピュートを再起動します。 デフォルトはFalse
で、実行時間の長いコンピュートを識別しますが、コンピュートは再起動しません。secret_configuration
:REPLACE_WITH_SCOPE
とREPLACE_WITH_KEY
を シークレットスコープとキー名に置き換えます。 シークレットの設定の詳細については、ノートブックを参照してください。
perform_restart
を True
に設定すると、スクリプトは適格なコンピュートを自動的に再起動するため、アクティブ ジョブが失敗し、開いているノートブックがリセットされる可能性があります。ワークスペースのビジネスクリティカルなジョブを中断するリスクを軽減するには、スケジュールされたメンテナンス期間を計画し、ワークスペースのユーザーに必ず通知してください。
実行時間の長いコンピュートを特定し、必要に応じて再起動します
コンピュート autostart for ジョブ and JDBC/ODBC queries
終了したコンピュートに割り当てられたジョブが実行スケジュールされている場合、または 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 ] タブを使用します。 また、コンピュートの ログ配信場所を設定する こともできます。 ワーカーとコンピュートの両方のログは、指定した場所に配信されます。
パフォーマンスの監視
また、コンピュートノードに Datadog エージェントをインストールして、Datadog メトリクスを Datadog アカウントに送信することもできます。
ノートブックの例: Datadog メトリクス
コンピュートノードに Datadog エージェントをインストールして、Datadog メトリクスを Datadog アカウントに送信できます。 次のノートブックは、 コンピュートスコープの initスクリプトを使用して、コンピュートに Datadog エージェントをインストールする方法を示しています。
Datadog Agent をすべてのコンピュートにインストールするには、コンピュート ポリシーを使用してコンピュートスコープの initスクリプトを管理します。