SSHトンネルを使用してDatabricksに接続する
ベータ版
この機能はベータ版です。
Databricks が提供する SSH トンネルを使用すると、SSH トンネルを介してワークスペースにアクセスし、IDEs から Databricks コンピュートでワークロードをインタラクティブに実行できます。セットアップが簡単で、環境管理の必要がなく、すべてのコードとデータを Databricks ワークスペース内で安全に保ちます。
要件
SSHトンネルを使用してDatabricksサーバレスまたはクラシック コンピュートに接続するには、以下が必要です。
- Databricks CLI バージョン 1.5.0 以降がローカルマシンにインストールされ、認証が構成されている必要があります。Databricks CLI のインストールまたは更新を参照してください。
- 以下のいずれか:
- Visual Studio Codeバージョン:1.110.0(Universal) 以降で、Remote - SSH 拡張機能 (1.0.46+) がインストールされている必要があります。
- Cursor バージョン: 2.6.11(Universal) 以上。
サーバレスGPUコンピュートに接続するには、AI Runtime機能を有効にする必要があります。AI Runtimeを参照してください。
クラシック(専用、シングルユーザー)コンピュートに接続するには:
- コンピュートはDatabricks Runtime 17.0以降を実行している必要があります。専用コンピュートの概要を参照してください。
- Unity Catalog有効にする必要があります。
- コンピュート ポリシーが存在する場合、ジョブの実行を禁止してはなりません。
- 専用コンピュートに Databricks Container Services を使用する場合、ご使用の Docker イメージには
openssh-serverがインストールされている必要があります。
サーバレスコンピュートに接続する
サーバレス コンピュートに接続するには、IDE 内のターミナルから databricks ssh connect コマンドを実行します。個別のセットアップステップは必要ありません。
databricks ssh connectコマンドの詳細については、sshコマンド・グループを参照してください。
databricks ssh connect
AI Runtime に接続するには、--accelerator オプションを使用します。
databricks ssh connect --accelerator=GPU_1xA10
databricks ssh connect シングルノードでインタラクティブセッションを提供します。長時間実行されるトレーニング ジョブまたはマルチノード分散トレーニングの場合は、代わりに air CLI を使用してワークロードを送信してください。AI Runtime CLI を参照してください。
接続後、開発環境のセットアップを完了します。「プロジェクトを開く」を参照してください。
Visual Studio CodeまたはCursorでサーバレスコンピュートに接続し、セッションを開始するには、--ideオプションを使用します。CLIは、ホームワークスペースフォルダを指すIDEウィンドウを開きます。
databricks ssh connect --ide=vscode
クラシック コンピュートに接続
クラシックコンピュートに接続するには、まずSSH接続を設定し、その後IDEまたはターミナルから接続してください。
SSH接続を設定する
SSH接続の設定は、クラシックコンピュートに接続する場合にのみ必要です。
まず、databricks ssh setupコマンドを使用してSSHトンネルを設定します。接続の名前を指定してください。例として、<connection-name>をmy-connectionに置き換えます:
databricks ssh setup --name <connection-name>
CLIはクラスターを選択するように促します。--cluster <cluster-id>で直接指定することもできます。
databricks ssh setup --name <connection-name> --cluster <cluster-id>
IntelliJユーザーの場合、Databricksはセットアップコマンドに--auto-start-cluster=falseを追加し、接続する前にクラスターを手動で起動することを推奨しています。これは、JetBrains IDEs起動時に構成されたすべてのクラスターを開始し、予期しないコンピュート料金が発生する可能性があるためです。
Visual Studio Code またはカーソルを使用して接続する
-
Visual Studio Code の場合は、 Remote SSH 拡張機能をインストールしてください。Cursorには、デフォルトでリモートSSH拡張機能が含まれています。
-
IDE メイン メニューで、 [表示] > [コマンド パレット] をクリックします。 [リモートSSH: 設定] を選択します。または、 [設定: ユーザー設定を開く (JSON)] を選択して、
settings.json直接変更します。 -
Remote.SSH: 無事 Extensions (または
settings.jsonのremote.SSH.defaultExtensions) で、ms-Python.Pythonとms-toolsai.jupyterを追加します。settings.jsonを変更する場合:JSON"remote.SSH.defaultExtensions": [
"ms-Python.Python",
"ms-toolsai.jupyter"
]
必要に応じて、 Remote.SSH: Connect Timeout (またはsettings.jsonのremote.SSH.connectTimeout ) の値を増やして、タイムアウト エラーが発生する可能性をさらに減らします。デフォルトのタイムアウトは 360 です。
-
コマンド パレットで、 Remote-SSH: Connect to Host を 選択します。
-
ドロップダウンメニューから、最初のステップで設定した接続を選択します。IDEは新しいウィンドウで接続に進みます。
IntelliJ IDEsを使用して接続する
- リモートサーバーのチュートリアルに従って設定を行ってください。
- 新しい接続画面で、以下を入力してください。
- ユーザー名 :
root - ホスト :
<connection-name>
- ユーザー名 :
ターミナルを使用して接続する
ssh <connection-name>
プロジェクトを開く
デフォルトでは、databricks ssh connect コマンドは一時ディレクトリに開きます。ワークスペースファイルにアクセスするには、IDEまたはターミナルからワークスペースディレクトリに移動します:
- Visual Studio Code または Cursor で、コマンドパレット( Cmd/Ctrl+Shift+P )から フォルダーを開く を選択し、
/Workspace/Users/<your-username>に移動します。 - ターミナルウィンドウから、ディレクトリを変更してください:
cd /Workspace/Users/<your-username>。
/Workspace 、 /Volumes 、および/dbfsのファイルはクラスターの再起動後も保持されます。 /home 、 /root 、およびその他のローカルパスにあるファイルは一時的なものであり、再起動すると失われます。
コードを実行する(Visual Studio Codeまたはカーソル)
SSHトンネルを使用してコードを実行するには、Databricks仮想環境がセットアップされている必要があります。この環境には、すべての組み込みDBRライブラリとコンピュートスコープのライブラリが含まれています。
-
Cmd/Ctrl+Shift+P を押してコマンドパレットを開き、 Python: Select Interpreter を選択します。
-
リストから
pythonEnv-xxx仮想環境を選択します。表示されない場合:-
IDE内のターミナルから
echo $DATABRICKS_VIRTUAL_ENV実行してください。出力例:
/local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python -
Python: Select Interpreter プロンプトに完全な出力をインタープリターパスとして貼り付けます。
-
-
新しいターミナルを開くと、仮想環境が自動的に起動します。
-
Jupyterノートブックを実行するには、仮想環境がカーネルとして選択されていることを確認してください。ノートブックの右上にある [Select Kernel] をクリックします。
標準のPythonおよびJupyter拡張機能を使用して、Pythonファイルと.ipynbノートブックを実行およびデバッグします。
サーバレスコンピュートのPythonファイルでSparkを使用するには、セッションを明示的に初期化します:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.serverless().profile("DEFAULT").getOrCreate()
Pythonの依存関係を管理する
クラスターレベルでグローバルに、またはノートブックを使用して個々のプロジェクトにスコープ設定してPythonの依存関係を管理します。
クラスター ライブラリ (推奨)
ワークスペース UI の [コンピュート] > [ライブラリ] から依存関係をインストールします。 これらはクラスターの再起動後も保持され、 pythonEnv-xxxで使用できます。 クラスターライブラリを参照してください。
プロジェクト固有のノートブック設定
プロジェクトスコープの依存関係については、各セッションの開始時に%pip installコマンドを含むノートブックを実行します。
# Install from pyproject.toml
%pip install .
# Install from a requirements file
%pip install -r requirements.txt
# Install a wheel from Volumes or Workspace
%pip install /Volumes/catalog/schema/volume/your_library.whl
%pip コマンドにはDatabricks固有のガードレールが含まれており、依存関係をSparkエグゼキューター ノードに伝播します。 これにより、カスタム依存関係を持つユーザー定義関数(UDF)が可能になります。
その他の例については、 %pipコマンドでライブラリを管理する」を参照してください。
セッションが10分以内に再接続された場合は、ノートブックを再実行する必要はありません。これは、SSH設定で-shutdown-delayを使用して設定できます。
同じクラスター上の複数の SSH セッションが 1 つの仮想環境を共有します。
制限事項
Databricksが提供するSSHトンネルには、以下の制限があります。作。
- 共有クラスターはサポートされていません。
- Visual Studio Code の Databricks 拡張機能と SSH トンネルはまだ互換性がないため、併用しないでください。
/Workspace、/Volumes、および/dbfsの外側で編集されたファイルは、クラスターの再起動時に失われます。- クラスターごとに許可されるSSH接続数は最大10です。
- 非アクティブなセッションは1時間後に停止する可能性があります。
- SSH トンネルは、他のリモート環境または Docker コンテナから起動できません。
- 3つ以上のJupyterノートブックが同時に開いている場合、パフォーマンスまたは接続の問題が発生する可能性があります。この制限は将来のリリースで対処されます。
Databricksノートブックの違い
SSH トンネルを使用する場合、ノートブックにはいくつかの違いがあります。
- Python ファイルでは、Databricks グローバル (
sparkやdbutilsなど) は定義されていません。from databricks.sdk.runtime import sparkを使用して明示的にインポートする必要があります。 - ipynb ノートブックでは、次の機能が利用できます。
- Databricks グローバル:
display、displayHTML、dbutils、table、sql、udf、getArgument、sc、sqlContext、spark %sqlSQLセルを実行するマジックコマンド
- Databricks グローバル:
Python ソース「ノートブック」を操作するには:
-
jupyter.interactiveWindow.cellMarker.codeRegexを検索して次のように設定します:^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\]) -
jupyter.interactiveWindow.cellMarker.defaultを検索して次のように設定します:# COMMAND ----------
トラブルシューティング
このセクションには、一般的な問題の解決に関する情報が記載されています。
SSH接続が失敗するかタイムアウトする
- ワークスペース UI でクラスターが実行されていることを確認します。
- お使いのノートパソコン、ネットワーク、VPNで、送信ポート22が開いていて許可されていることを確認してください。
- SSHのタイムアウト時間を長くしてください。Visual Studio Code またはカーソルを使用した接続を参照してください。
- キーの不一致エラーが発生した場合は、
~/.databricks/ssh-tunnel-keysを削除してdatabricks ssh setupを再実行してください。 - 「リモートホストの識別情報が変更されました」というエラーが発生した場合は、
~/.ssh/known_hostsファイルを確認し、クラスターに関連するエントリを削除してください。 - SSHセッションは1時間後に切断される可能性があり、単一のクラスターへのSSH接続は最大10しかできません。制限事項を参照してください。
code コマンドが見つかりません。
Error: exec: "code": executable file not found in $PATH が表示された場合は、コマンドパレット ( Cmd/Ctrl+Shift+P ) を開き、 シェルコマンド:PATHに'code'コマンドをインストール を選択し、IDEまたはターミナルセッションを再起動してください。
CLI認証エラー
databricks auth loginを使用して、Databricks CLI プロファイルが有効であることを確認してください。- クラスターに対する権限が
CAN MANAGEであることを確認してください。
私のコードは動作しません
- Databricks仮想環境が正しく設定されていることを確認してください。 「コードの実行(Visual Studio Codeまたはカーソル)」を参照してください。
- ipynbノートブックと
*.pyDatabricksノートブックはDatabricksグローバルにアクセスできますが、 Python*.pyファイルはアクセスできません。 Databricksノートブックの違い を参照してください。
クラスターの再起動後にファイルが消えるか環境がリセットされる
/Workspace、/Volumes、および/dbfsマウント内のファイルはクラスターの再起動後も保持されます。/home、/root、およびその他のローカルパスにあるファイルは一時的なものであり、再起動すると失われます。- 永続的な依存関係にはクラスター ライブラリ管理を使用します。必要に応じて、init スクリプトを使用して再インストールを自動化します。 「init スクリプトとは何ですか?」を参照してください。 。
Windows (WSL) で SSH 設定が失敗する
databricks ssh setupをWSL内ではなく、Windowsで直接実行してください。Windows Visual Studio Codeインスタンスは、WSL側で作成されたSSH構成を見つけることができません。
よくある質問
SSHトンネルはDatabricks Connectとどう異なりますか?
Databricks Connect使用すると、 Spark APIs使用してコードを作成し、ローカルのSparkセッションではなくDatabricksコンピュート上でリモートで実行できます。 Databricks Visual Studio Code拡張機能は、Databricks Connectを使用して、Databricks上のユーザーコードの組み込みデバッグ機能を提供します。
SSHトンネルを使用すると、IDEからワークスペースにアクセスでき、開発環境全体をコンピュートに移動できます。— Python、カーネル、およびすべての実行は、コンピュートリソースへの完全なアクセス権を持ってDatabricksで実行されます。
コードとデータはどのように保護されますか?
すべてのコードはDatabricksクラウドVPC内で実行されます。 データやコードは、お客様の安全な環境から外部に持ち出されることはありません。SSH通信は完全に暗号化されています。
どのIDEsがサポートされていますか?
Visual Studio Codeとカーソルは正式にサポートされています。SSH機能を備えたIDEであればどれでも互換性がありますが、テスト済みなのはVS CodeとCursorのみです。
Databricks ノートブックのすべての機能は IDE から利用できますか?
display() 、 dbutils 、 %sqlなどの一部の機能は、制限付きまたは手動設定で使用できます。Databricksノートブックの違い を参照してください。
SSH トンネルを使用して接続すると、クラスターは自動的に起動しますか?
はい、ただし、クラスターの起動に要する時間が接続タイムアウト時間よりも長い場合、接続試行は失敗します。これを防ぐには、コマンドパレットから Remote.SSH: Connect Timeout の値を増やす(またはsettings.jsonのremote.SSH.connectTimeoutにする)ことで、タイムアウトエラーが発生する可能性をさらに減らすことができます。
クラスターが実行中かどうかはどうすればわかりますか?
Databricksワークスペース UI の コンピュート に移動し、クラスターのステータスを確認します。 SSH接続を機能させるには、クラスターの状態が「実行 中」 と表示されている必要があります。
SSH/IDE セッションを切断するにはどうすればよいですか?
IDE ウィンドウを閉じるか、IDE の [切断] オプションを使用するか、SSH ターミナルを閉じるか、ターミナルでexitコマンドを実行することで、セッションを切断できます。
作業していないときにクラスターを停止して料金が発生しないようにするにはどうすればよいですか?
すぐに停止したい場合は、ワークスペースUIからクラスターを終了してください。 Databricksワークスペース UI の [コンピュート] に移動し、クラスターを見つけて、 [終了] または [停止] をクリックします。
ワークスペースのUIから、クラスターに対して短い 自動終了 ポリシーを設定します。接続を切断した後、SSHサーバーはshutdown-delay期間(デフォルト:10分)待機し、その後、クラスターのアイドルタイムアウトが適用されます。
永続的な依存関係をどのように処理すればよいですか?
セッション中にインストールされた依存関係は、クラスターの再起動後に失われます。要件およびセットアップ スクリプトには永続ストレージ ( /Workspace/Users/<your-username> ) を使用します。自動化にはクラスター ライブラリまたは init スクリプトを使用します。
どのような認証方法がサポートされていますか?
認証では、Databricks CLI とお客様の~/.databrickscfgプロファイルファイルを使用します。SSHキーはSSHトンネルによって処理されます。
クラスターから外部データベースまたはサービスに接続できますか?
はい、クラスター ネットワークで送信接続が許可されており、必要なライブラリがある限り可能です。
追加の IDE 拡張機能を使用できますか?
ほとんどの拡張機能は、IDE とクラスターに応じて、リモート SSH セッション内にインストールすると機能します。Visual Studio Code は、デフォルトではリモート ホストにローカル拡張機能をインストールしません。拡張機能パネルを開いてリモート ホストでローカル拡張機能を有効にすることで、手動でインストールできます。特定の拡張機能を常にリモートでインストールするように Visual Studio Code を構成することもできます。「Databricks への接続」を参照してください。
SSHトンネルはPrivate Linkをサポートしていますか?
はい、しかし、ワークスペース管理者はVisual Studio CodeおよびCursorの拡張機能MarketplaceのURLを許可リストに登録する必要があります。お使いのローカルマシンにはインターネットにアクセスできる必要があります。