コンピューティング構成リファレンス

この記事では、コンピューティング作成 UI で使用できるすべての構成設定について説明します。 ほとんどのユーザーは、割り当てられたポリシーを使用してコンピューティングを作成しますが、これにより、構成可能な設定が制限されます。 UI に特定の設定が表示されない場合、その原因は選択したポリシーでその設定の構成が許可されていないためです。

この記事で説明する構成および管理ツールは、汎用およびジョブ コンピューティングの両方に適用されます。 ジョブ コンピューティングの構成に関する考慮事項の詳細については、「ジョブで Azure Databricks コンピューティングを使用する」を参照してください。

ポリシー

ポリシーは、ユーザーがコンピューティングを作成するときに使用できる構成オプションを制限するために使用される一連のルールです。 ユーザーに無制限のクラスター作成エンタイトルメントがない場合は、付与されたポリシーを使用してのみコンピューティングを作成できます。

ポリシーに従ってコンピューティングを作成するには、[ポリシー] ドロップダウン メニューからポリシーを選択します。

既定では、すべてのユーザーが個人用コンピューティング ポリシーにアクセスできるため、単一コンピューターのコンピューティング リソースを簡単に作成できます。 パーソナル コンピューティングまたは追加のポリシーにアクセスする必要がある場合は、ワークスペース管理者に連絡してください。

単一ノードまたはマルチ ノード コンピューティング

ポリシーに応じて、単一ノード コンピューティングまたはマルチ ノード コンピューティングの作成を選択できます。

単一ノード コンピューティングは、少量のデータを使用するジョブや、単一ノードの機械学習ライブラリなどの非分散ワークロードを対象にしています。 マルチ ノード コンピューティングは、分散ワークロードを使用した大規模なジョブ用に使用する必要があります。

単一ノードのプロパティ

単一ノード コンピューティングには、次のプロパティがあります。

  • Spark をローカルで実行します。
  • ドライバーは、ワーカー ノードを持たないマスターとワーカーの両方として機能します。
  • コンピューティングの論理コアごとに、ドライバーの 1 コアを差し引いた 1 つの Executor スレッドを生成します。
  • すべての stderrstdout、および log4j ログ出力をドライバー ログに保存します。
  • マルチノード コンピューティングに変換することはできません。

単一またはマルチ ノード クラスターを選択する

単一およびマルチ ノード コンピューティングのどちらかを決定する場合は、ユース ケースを考慮してください。

  • 大規模なデータ処理では、単一ノード コンピューティングのリソースを使い果たします。 これらのワークロードについては、Databricks でマルチノード コンピューティングを使用することをお勧めします。

  • 単一ノード コンピューティングは、共有するようには設計されていません。 リソースの競合を避けるため、コンピューティングを共有する必要がある場合には Databricks でマルチノード コンピューティングを使用することをお勧めします。

  • マルチノード コンピューティングは、0 個の worker にはスケーリングできません。 代わりに単一ノード コンピューティングを使用してください。

  • 単一ノード コンピューティングはプロセス分離との互換性がありません。

  • GPU スケジューリングは、単一ノード コンピューティングでは有効になっていません。

  • 単一ノード コンピューティングでは、Spark は UDT 列を含む Parquet ファイルを読み取ることができません。 次のエラー メッセージが表示されます。

    The Spark driver has stopped unexpectedly and is restarting. Your notebook will be automatically reattached.
    

    この問題を回避するには、ネイティブの Parquet 閲覧者を無効にします。

    spark.conf.set("spark.databricks.io.parquet.nativeReader.enabled", False)
    

アクセス モード

アクセス モードとは、コンピューティングを使用できるユーザーと、コンピューティングを介してアクセスできるデータを決定するセキュリティ機能です。 Azure Databricks のすべてのコンピューティングにはアクセス モードがあります。

Databricks では、すべてのワークロードに共有アクセス モードを使用することをお勧めします。 必要な機能が共有アクセス モードでサポートされていない場合にのみ、シングル ユーザー アクセス モードを使用します。

アクセス モード ユーザーに表示 UC のサポート サポートされている言語 メモ
1 人のユーザー Always (常に) はい Python、SQL、Scala、R 単一のユーザーのみに割り当てて、使用できるようにします。 一部のワークスペースでは、割り当てられたアクセス モードと呼ばれます。
共有済み 常に (Premium プランが必要) はい Python (Databricks Runtime 11.3 LTS 以降)、SQL、Scala (Databricks Runtime 13.3 LTS 以降を使用する Unity Catalog 対応コンピューティング上) 複数のユーザーが、ユーザー間でデータを分離して使用できます。
No Isolation (分離なし) 共有 管理者は、管理設定ページでユーザー分離を適用して、このアクセス モードを非表示にできます。 いいえ Python、SQL、Scala、R 分離なし共有コンピューティングには、関連するアカウント レベルの設定があります。
Custom 非表示 (すべての新しいコンピューティングの場合) いいえ Python、SQL、Scala、R このオプションは、アクセス モードが指定されていない既存のコンピューティングがある場合にのみ表示されます。

コンピューティングのアクセス モードを [単一ユーザー] または [共有] に設定すると、既存のコンピューティングをアップグレードして Unity Catalog の要件を満たすことができます。

Note

Databricks Runtime 13.3 LTS 以降では、init スクリプトとライブラリはすべてのアクセス モードでサポートされています。 要件とサポートは異なります。 「init スクリプトをインストールできる場所」を参照してください。クラスター スコープのライブラリ

Databricks Runtime のバージョン

Databricks Runtime は、コンピューティングで実行されるコア コンポーネントのセットです。 [Databricks Runtime バージョン] ドロップダウン メニューを使用してランタイムを選択します。 Databricks Runtime の特定バージョンの詳細については、「Databricks Runtime リリース ノートのバージョンと互換性」を参照してください。 すべてのバージョンに Apache Spark が含まれています。 Databricks では次を行うことを推奨しています。

  • 汎用コンピューティングの場合は、最新バージョンを使用して、最新の最適化と、コードと事前に読み込まれたパッケージ間の最新の互換性が確保されます。
  • 運用ワークロードを実行するジョブ コンピューティングの場合は、長期サポート (LTS) バージョンの Databricks Runtime を使用することを検討してください。 LTS バージョンを使用すると、互換性の問題は発生せず、アップグレード前にワークロードを十分にテストできます。
  • データ サイエンスおよび機械学習に関するユース ケースは、Databricks Runtime ML バージョンを検討してください。

Photon アクセラレーションを使用する

Photon は、既定で Databricks Runtime 9.1 LTS 以上を実行しているコンピューティングで有効です。

Photon アクセラレーションを有効または無効にするには、[Photon アクセラレーションを使用] チェックボックスをオンにします。 Photon の詳細については、「Photon とは」を参照してください。

ワーカーとドライバー ノードの型

コンピューティングは、1 台のドライバー ノードと 0 台以上のワーカー ノードで構成されます。 ドライバー ノードとワーカー ノードに対して別々のクラウド プロバイダー インスタンスの種類を選択することもできますが、既定では、ドライバー ノードではワーカー ノードと同じインスタンスの種類が使用されます。 インスタンスの種類の異なるファミリは、メモリ集中型やコンピューティング集中型のワークロードなど、異なるユース ケースに適合します。

ワーカーまたはドライバー ノードとして使用するプールを選択することもできます。 「Azure Databricks プールとは」を参照してください。

作業者タイプ

マルチノード コンピューティングでは、ワーカー ノードでコンピューティングを適切に機能させるために必要な Spark Executor やその他のサービスが実行されます。 Spark を使用してワークロードを分散する場合、すべての分散処理はワーカー ノードで行われます。 Azure Databricks は、ワーカー ノードごとに 1 つの Executor を実行します。 そのため、Executor とワーカーという用語は、Databricks アーキテクチャのコンテキストでは同じ意味で使用されます。

ヒント

Spark ジョブを実行するには、少なくとも 1 台のワーカー ノードが必要です。 コンピューティング内のワーカーの数が 0 の場合は、Spark 以外のコマンドはドライバー ノードで実行できますが、Spark コマンドは失敗します。

ワーカー ノードの IP アドレス

Azure Databricks は、それぞれ 2 つのプライベート IP アドレスを持つワーカー ノードを起動します。 ノードのプライマリ プライベート IP アドレスは、Azure Databricks 内部トラフィックをホストします。 セカンダリ プライベート IP アドレスは、クラスター内通信のために Spark コンテナーによって使用されます。 このモデルにより、Azure Databricks は同じワークスペース内の複数のコンピューティング間で分離を提供できます。

ドライバーの種類

ドライバー ノードでは、コンピューティングに接続されているすべてのノートブックの状態情報が保持されます。 また、ドライバー ノードでは SparkContext が保持され、コンピューティング上のノートブックやライブラリから実行されるコマンドが解釈され、Spark Executor との調整を行う Apache Spark マスターが実行されます。

ドライバー ノードの種類の既定値は、ワーカー ノードの種類と同じです。 Spark ワーカーから多くのデータを collect() し、それらをノートブックで分析することを計画している場合は、より多くのメモリを備えたより大規模なドライバー ノードの種類を選択できます。

ヒント

ドライバー ノードには、接続されているノートブックのすべての状態情報が保持されるため、使用されていないノートブックはドライバー ノードから切断するようにしてください。

GPU インスタンスの種類

ディープ ラーニングに関連するものなど、ハイ パフォーマンスが要求される、計算が困難なタスクの場合、Azure Databricks ではグラフィックス処理装置 (GPU) によって高速化されたコンピューティングがサポートされます。 詳細については、GPU 対応コンピューティングに関するページを参照してください。

Azure Confidential Computing VM

Azure Confidential Computing VM の種類では、クラウド オペレーターからのデータを含め、使用中のデータへの不正アクセスが防止されます。 この VM の種類は、規制の厳しい業界や地域だけでなく、クラウド上に機密データを持つ企業にも役立ちます。 Azure のコンフィデンシャル コンピューティングについて詳しくは、「Azure Confidential Computing」をご覧ください。

Azure Confidential Computing VM を使用してワークロードを実行するには、ワーカー ノードとドライバー ノードのドロップダウンで、DC または EC シリーズの VM の種類の中から選択します。 詳しくは、 Azure Confidential VM オプションをご覧ください。

スポット インスタンス

コストを節約するには、[スポット インスタンス] チェックボックスをオンにして、スポット インスタンス (Azure スポット VM とも呼ばれる) を使用することを選択できます。

スポットを構成する

最初のインスタンスは常にオンデマンド (ドライバー ノードは常にオンデマンド) であり、後続のインスタンスはスポット インスタンスになります。

使用できないためにインスタンスが削除された場合、Azure Databricks は、削除されたインスタンスを置き換えるために新しいスポット インスタンスの取得を試みます。 スポット インスタンスを取得できない場合は、削除されたインスタンスを置き換えるためにオンデマンド インスタンスがデプロイされます。 さらに、新しいノードが既存のコンピューティングに追加されると、Azure Databricks はそれらのノード用のスポット インスタンスの取得を試みます。

自動スケールの有効化

[自動スケールを有効にする] がオンになっている場合は、コンピューティングのワーカーの最小数と最大数を指定できます。 その後、Databricks でジョブの実行に必要な適切なワーカー数が選択されます。

コンピューティングが自動スケーリングするワーカーの最小数と最大数を設定するには、[ワーカー タイプ] ドロップダウンの横にある [最小ワーカー] フィールドと [最大ワーカー] フィールドを使用します。

自動スケーリングを有効にしない場合は、[ワーカー タイプ]ドロップダウンの横にある [ワーカー] フィールドに固定ワーカー数を入力します。

Note

コンピューティングが実行されている場合、コンピューティングの詳細ページに、割り当てられたワーカーの数が表示されます。 割り当てられたワーカーの数をワーカー構成と比較し、必要に応じて調整を行うことができます。

自動スケーリングの利点

自動スケーリングを使用すると、Azure Databricks では、ジョブの特性を考慮してワーカーが動的に再割り当てられます。 パイプラインの特定の部分が他の部分よりも計算が困難な場合があります。Databricks では、ジョブのこれらのフェーズ中に自動的にワーカーが追加されます (また、不要になると削除されます)。

自動スケーリングでは、ワークロードに適合するようにコンピューティングをプロビジョニングする必要がないため、高い使用率を簡単に実現できます。 これは特に、(1 日の流れの中でデータセットの探索を行うなど、) 時間の経過とともに要件が変化するワークロードに適用されますが、プロビジョニング要件が不明な 1 回限りの短いワークロードにも適用できます。 したがって、自動スケーリングには次の 2 つの利点があります。

  • プロビジョニング数が不足している一定サイズのコンピューティングと比較して、より高速にワークロードを実行できます。
  • 自動スケーリングでは、静的サイズのコンピューティングと比較して全体的なコストを削減できます。

コンピューティングとワークロードの一定サイズに応じて、自動スケーリングを使用すると、これらの利点の一方または両方を同時に得ることができます。 コンピューティング サイズは、クラウド プロバイダーがインスタンスを終了するときに選択されたワーカーの最小数を下回る場合があります。 この場合は、最小数のワーカーを維持するために、Azure Databricks によって連続的にインスタンスの再プロビジョニングが再試行されます。

注意

自動スケーリングは、spark-submit ジョブには使用できません。

注意

コンピューティングの自動スケールには、構造化ストリーミング ワークロードのクラスター サイズのスケールダウンに制限があります。 Databricks では、ストリーミング ワークロードに、拡張自動スケーリングを備えた Delta Live Tables を使用することをお勧めします。 「拡張自動スケーリングを使用して、Delta Live Tables パイプラインのクラスター使用率を最適化する」を参照してください。

自動スケールの動作

Premium および Enterprise 価格プランのワークスペースでは、最適化された自動スケーリングを使用します。 Standard 価格プランのワークスペースでは、標準の自動スケーリングを使用します。

最適化された自動スケーリングには、次のような特徴があります。

  • 2 ステップで最小から最大にスケールアップします。
  • シャッフル ファイルの状態を確認することで、コンピューティングがアイドル状態でなくてもスケールダウンできます。
  • 現在のノードの割合に基づいてスケールダウンします。
  • ジョブ コンピューティングでは、コンピューティングの使用率が低い状態が 40 秒間続くとスケールダウンします。
  • 汎用コンピューティングでは、コンピューティングの使用率が低い状態が 150 秒間続くとスケールダウンします。
  • spark.databricks.aggressiveWindowDownS Spark 構成プロパティは、コンピューティングでスケールダウンの決定が行われる頻度を秒単位で指定します。 この値を大きくすると、コンピューティングでのスケールダウンが遅くなります。 最大値は 600 です。

標準の自動スケーリングは、Standard プラン ワークスペースで使用されます。 標準の自動スケーリングには、次のような特徴があります。

  • 8 台のノードの追加から開始されます。 その後、最大に達するために必要なだけのステップを実行して、指数関数的にスケールアップします。
  • ノードの 90% が 10 分間ビジー状態ではなく、コンピューティングが 30 秒以上アイドル状態になっている場合にスケールダウンします。
  • 1 台のノードから開始して、指数関数的にスケールダウンします。

プールを使用した自動スケーリング

コンピューティングをプールにアタッチする場合は、次の点を考慮してください。

  • 要求されたコンピューティング サイズが、プール内のアイドル状態のインスタンスの最小数以下になるようにします。 それより大きい場合、コンピューティングの起動時間はプールを使用しないコンピューティングと同じになります。
  • 最大コンピューティング サイズが、プールの最大容量以下になるようにします。 それより大きい場合、コンピューティングの作成は失敗します。

自動スケーリングの例

静的コンピューティングを自動スケーリングに再構成すると、Azure Databricks では、即座に最小と最大境界内にコンピューティングのサイズを変更してから、自動スケーリングを開始します。 例として、次の表では、5 から 10 台のノードの間で自動スケーリングするようにコンピューティングを再構成した場合に、特定の初期サイズを持つコンピューティングがどうなるかを示しています。

初期サイズ 再構成後のサイズ
6 6
12 10
3 5

ローカル ストレージの自動スケールを有効にする

多くの場合、特定のジョブに必要となるディスク領域を見積もることは困難です。 作成時にコンピューティングに接続するマネージド ディスクのギガバイト数を見積もらずに済むように、Azure Databricks では、すべての Azure Databricks コンピューティングでローカル ストレージの自動スケーリングが自動的に有効になります。

ローカル ストレージの自動スケーリングにより、Azure Databricks では、コンピューティングの Spark ワーカーでの使用可能な空きディスク領域量を監視します。 ワーカーでディスク領域の量が少なくなり始めると、ディスク領域が枯渇する前に、Databricks によって自動的に新しいマネージド ディスクがワーカーに接続されます。 ディスクは、仮想マシン 1 台につき 5 TB の合計ディスク領域制限 (仮想マシンの初期ローカル ストレージを含む) まで接続されます。

仮想マシンにアタッチされたマネージド ディスクは、仮想マシンが Azure に返された場合にのみデタッチされます。 つまり、マネージド ディスクは、実行中のコンピューティングの一部である限り、仮想マシンから切断されません。 マネージド ディスクの使用量をスケールダウンする場合、Azure Databricks では、自動スケール コンピューティングまたは自動終了を使用して構成されたコンピューティングでこの機能を使用することが推奨されています。

ローカル ディスク暗号化

重要

この機能はパブリック プレビュー段階にあります。

コンピューティングの実行に使用するインスタンスの種類によっては、ローカルに接続されたディスクがある場合があります。 Azure Databricks は、これらのローカルに接続されたディスクにシャッフル データやエフェメラル データを格納できます。 コンピューティングのローカル ディスクに一時的に格納されるシャッフル データを含め、すべてのストレージの種類で、保存データが確実に暗号化されるようにするには、ローカル ディスクの暗号化を有効にできます。

重要

ローカル ボリュームとの間の暗号化されたデータの読み取りと書き込みによるパフォーマンスへの影響により、ワークロードの実行速度が低下する可能性があります。

ローカル ディスク暗号化が有効になっている場合、Azure Databricks によって各コンピューティング ノードに固有の暗号化キーがローカルで生成されます。これは、ローカル ディスクのすべての格納データを暗号化するために使用されます。 このキーのスコープは各コンピューティング ノードに対してローカルであり、コンピューティング ノード自体と共に破棄されます。 有効期間中、キーは暗号化と暗号化解除のためにメモリ内に存在し、ディスク上に暗号化されて格納されます。

ローカル ディスク暗号化を有効にするには、Clusters API を使用する必要があります。 コンピューティングの作成または編集中に、enable_local_disk_encryptiontrue に設定します。

自動終了

コンピューティングに対して自動終了を設定できます。 コンピューティングの作成時に、コンピューティングを終了するまでの非アクティブな期間を分単位で指定してください。

現在の時刻とコンピューティングで実行された最後のコマンドの差が、指定された非アクティブ期間を超えると、Azure Databricks はそのコンピューティングを自動的に終了します。 コンピューティングの終了の詳細については、「コンピューティングを終了する」を参照してください。

タグ

タグを使用すると、組織内のさまざまなグループが使用するクラウド リソースのコストの監視を容易に行えます。 コンピューティングを作成するときに、キーと値のペアとしてタグを指定してください。これらのタグは、Azure Databricks によって VM やディスク ボリュームなどのクラウド リソース、および DBU 使用状況レポートに適用されます。

プールから起動されたコンピューティングの場合、カスタム タグは DBU 使用状況レポートにのみ適用され、クラウド リソースには伝播しません。

プールおよびコンピューティング タグを組み合わせて使用する方法の詳細については、「タグを使用した使用状況の監視」をご覧ください。

コンピューティングにタグを追加するには:

  1. [タグ] セクションで、カスタム タグごとにキーと値のペアを追加します。
  2. [追加] をクリックします。

Spark の構成

Spark ジョブを微調整するために、カスタムの Spark 構成プロパティを指定できます。

  1. コンピューティング構成ページで、[詳細オプション] トグルをクリックします。

  2. [Spark] タブをクリックします。

    Spark の構成

    Spark 構成で、構成プロパティを 1 行につき 1 つのキーと値のペアとして入力します。

Clusters API を使用してコンピューティングを構成する場合は、クラスター API の作成またはクラスター API の更新spark_conf フィールドに Spark プロパティを設定します。

コンピューティングに Spark 構成を適用するために、ワークスペース管理者は コンピューティング ポリシーを使用できます。

シークレットから Spark 構成プロパティを取得する

Databricks では、パスワードなどの機密情報は、プレーンテキストではなくシークレットに格納することをお勧めしています。 Spark 構成でシークレットを参照するには、次の構文を使用します。

spark.<property-name> {{secrets/<scope-name>/<secret-name>}}

たとえば、password という Spark 構成プロパティを、secrets/acme_app/password に格納されているシークレットの値に設定するには、次のようにします。

spark.password {{secrets/acme-app/password}}

詳細については、「Spark の構成プロパティまたは環境変数のシークレットを参照する構文」を参照してください。

コンピューティングへの SSH アクセス

セキュリティ上の理由から、Azure Databricks では、SSH ポートは既定で閉じられています。 Spark クラスターへの SSH アクセスを有効にする場合は、「ドライバー ノードへの SSH 接続」を参照してください。

Note

SSH は、ワークスペースが独自の Azure 仮想ネットワークにデプロイされている場合にのみ有効にできます。

環境変数

コンピューティングで実行されている init スクリプトからアクセスできる環境変数を設定してください。 Databricks には、init スクリプトで使用できる定義済みの環境変数も用意されています。 これらの定義済みの環境変数をオーバーライドすることはできません。

  1. コンピューティング構成ページで、[詳細オプション] トグルをクリックします。

  2. [Spark] タブをクリックします。

  3. [環境変数] フィールドに環境変数を設定します。

    [環境変数] フィールド

クラスター API の作成またはクラスター API の更新spark_env_vars フィールドを使用して環境変数を設定することもできます。

コンピューティング ログの配信

コンピューティングを作成するときに、Spark ドライバー ノード、ワーカー ノード、およびイベントのログを配信する場所を指定できます。 ログは選択した宛先に 5 分ごとに配信され、1 時間ごとにアーカイブされます。 コンピューティングが終了すると、終了するまでに生成されたすべてのログが配信されることが Azure Databricks によって保証されています。

ログの宛先は、コンピューティングの cluster_id によって異なります。 指定された宛先が dbfs:/cluster-log-delivery の場合、0630-191345-leap375 のコンピューティング ログは dbfs:/cluster-log-delivery/0630-191345-leap375 に配信されます。

ログの配信場所を構成するには、次のようにします。

  1. コンピューティング ページで、[詳細オプション] トグルをクリックします。
  2. [ログ] タブをクリックします。
  3. 送信先の種類を選択します。
  4. コンピューティング ログのパスを入力します。

Note

この機能は、REST API でも使用できます。 Clusters API に関するページを参照してください。