Databricks SSHトンネル
ベータ版
Databricks SSH トンネルはベータ版です。
Databricks SSH トンネルを使用すると、IDE をDatabricksコンピュートに接続できます。 セットアップが簡単で、クラスター上で対話的にコードを実行およびデバッグでき、環境の不一致が軽減され、すべてのコードとデータが Databricks ワークスペース内で安全に保たれます。
要件
SSH トンネルを使用するには、次のものが必要です。
- ローカル マシンに Databricks CLI バージョン 0.269 以上がインストールされ、認証が構成されていること。インストールを参照してください。
- 専用 (シングル ユーザー) アクセス モードを使用してDatabricksワークスペースでコンピュートします。 専用コンピュートの概要 を参照してください。
- コンピュートはDatabricks Runtime 17.0 以降を使用している必要があります。
- Unity Catalog有効にする必要があります。
- コンピュート ポリシーが存在する場合、ジョブの実行を禁止してはなりません。
SSHトンネルを設定する
まず、 databricks ssh setupコマンドを使用して SSH トンネルを設定します。<connection-name>トンネルの名前に置き換えます (例: my-tunnel )。
databricks ssh setup --name <connection-name>
CLI はクラスターを選択するように要求します。または、 --cluster <cluster-id>を渡してクラスター ID を指定することもできます。
IntelliJ の場合、Databricks ではセットアップ コマンドに–-auto-start-cluster=falseを含めることを推奨しています。JetBrains IDE を起動すると、すべてのクラスターが自動的に起動するため、意図しないコンピュート コストが発生する可能性があります。 このオプションを設定する場合、SSH トンネルを開始するためにワークスペースでクラスターを起動する必要があります。
Databricksに接続する
次に、IDE またはターミナルを使用して Databricks に接続します。
Visual Studio Code またはカーソルを使用して接続する
-
Visual Studio Code の場合は、リモート 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 は新しいウィンドウで接続を続行します。
コンピュートが起動していない場合は起動します。 ただし、コンピュートの起動にタイムアウト以上の時間がかかると、SSH 接続は失敗します。
- サーバーの種類を尋ねられたら、 Linux を選択します。
IntelliJ IDEsを使用して接続する
-
セットアップするには、リモート開発チュートリアルに従ってください。
-
新しい接続画面で以下を入力します。
ユーザー名 :
rootホスト:<connection-name>
ターミナルを使用して接続する
コマンドラインから Databricks に接続するには、 sshコマンドに接続名を指定します。例:
ssh my-tunnel
オープンプロジェクト
- 最初の接続では、開いているフォルダーのない空の IDE ウィンドウが開きます。Visual Studio Code では、 「コマンド」パレット から「 フォルダーを開くコマンド 」を使用して、目的のプロジェクトを開きます。
- 永続ストレージにはワークスペース マウント (
/Workspace/Users/<your-username>) を使用します。
コードを実行する (Visual Studio Code)
- Python プロジェクトを開くと、Python 拡張機能によって仮想環境が自動的に検出されます。ただし、適切な環境を手動でアクティブ化する必要があります。 コマンドパレット から インタープリタ コマンドを選択し、環境
pythonEnv-xxxを選択します。 これには、すべての組み込み Databricks Runtime ライブラリ、またはクラスターにグローバルにインストールしたすべてのものにアクセスできます。 - Python プロジェクトとして認識できないフォルダーを開いたときなど、Python 拡張機能では仮想環境 (
venv) を自動的に検出できない場合があります。これを修正するには、ターミナルを開いてecho $DATABRICKS_VIRTUAL_ENVを実行し、パスをコピーして Python: Select Interpreter コマンドで使用します。
venv を選択すると、Python または Jupyter 拡張機能によって提供される通常の実行またはデバッグ アクションを使用して、Python ファイルまたはノートブックを実行できます。
Pythonの依存関係を管理する
必要な依存関係をインストールする最も簡単な方法は、ワークスペース UI を使用することです。「コンピュートスコープのライブラリ」を参照してください。 このアプローチでは、クラスターの依存関係をグローバルにインストールします。クラスターを再起動するたびにライブラリを再インストールする必要はありません。
ただし、特定のプロジェクトに限定された、よりプログラム的なセットアップの場合は、ノートブック スコープのインストールを使用します。
プロジェクト固有のセットアップノートブック
特定のプロジェクトの依存関係を管理するには:
-
プロジェクトに
setup.ipynbファイルを作成します。 -
ssh CLI 、 Databricks Runtimeライブラリまたはコンピュート スコープのライブラリがすでに組み込まれているPython環境 (
pythonEnv-xxx) を作成します。 ノートブックをこのpythonEnv-xxx環境に接続します。 -
依存関係をインストールするには、
%pip installコマンドを使用します。%pip install .pyproject.tomlがある場合(スコープを絞り込むには%pip install .<group>を使用します)%pip install -r dependencies.txtもしあなたがdependencies.txt%pip install /Volumes/your/wheel.whl(または/Workspaceパス)カスタムライブラリをホイールとしてビルドしてアップロードした場合
%pipコマンドには、追加のガードレールを備えた Databricks 固有のロジックがあります。このロジックにより、接続しているドライバー ノードだけでなく、すべてのSparkエグゼキューター ノードで依存関係が利用できるようになります。 これにより、カスタム依存関係を持つユーザー定義関数 (UDF) が有効になります。その他の使用例については、
%pipコマンドを使用してライブラリを管理する」を参照してください。
新しい SSH セッションを確立するたびにこのノートブックを実行します。既存の SSH セッションが切断され、10 分以内にクラスターに再接続された場合、依存関係を再インストールする必要はありません。(時間はローカル SSH 設定の-shutdown-delay=10mオプションで設定できます。)
複数の SSH セッションが同時に同じクラスターに接続されている場合、それらは同じ仮想環境を使用します。
制限事項
Databricks SSH トンネルには次の制限があります。
- Visual Studio Code の Databricks 拡張機能と Databricks SSH トンネルはまだ互換性がないため、一緒に使用しないでください。
- Databricksワークスペース UI を通じてワークスペースに作成したGitフォルダーは、.git がないため、git CLIおよび IDE git 統合によって git リポジトリとして認識されません。 メタデータ。この問題を回避するには、 「SSH トンネルで Git を使用する方法」を参照してください。
- 接続するクラスター上のホーム マウントおよびルート マウントは一時的なものです。クラスターを再起動すると、クラスター上のコンテンツは保持されません。
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接続が失敗するかタイムアウトする
- Databricks UI でクラスターが停止または起動しているのではなく、実行中であることを確認します。
- ラップトップ/ネットワーク/VPN で送信ポート 22 が開いており、許可されていることを確認します。
- IDE での SSH 接続タイムアウトを増やします。「Visual Studio Code またはカーソルを使用して接続する」を参照してください。
- 公開キーまたは秘密キーの不一致エラーが表示される場合は、
~/.databricks/ssh-tunnel-keysフォルダーを削除してみてください。 - 「リモート ホスト ID が変更されました」というエラーが表示される場合は、
~/.ssh/known_hostsファイルを確認し、クラスターに関連するエントリを削除してください。 - SSH セッションが 1 時間後に切断される場合、これは既知の制限です。制限事項を参照してください。
- 1 つのクラスターに対して 10 個を超える SSH 接続は許可されません。
CLI認証エラー
- Databricks CLI プロファイルが有効で認証されていることを確認してください (
databricks auth login)。 CAN MANAGEなどの適切なクラスター権限があることを確認してください。
クラスターの再起動後にファイルが消えるか環境がリセットされる
- 永続的なマウントは
/Workspace、/Volumes、および/dbfsのみです。再起動後、/home、/rootなどのすべてのデータが消去されます。 - 永続的な依存関係にはクラスター ライブラリ管理を使用します。必要に応じて、init スクリプトを使用して再インストールを自動化します。 「init スクリプトとは何ですか?」を参照してください。 。
「Git リポジトリではありません」というエラー、または IDE で Git 機能が見つからない
Git は、ターミナルを使用して/Workspace/Users/<your-username>にクローンした場合にのみ機能します。Webで作成されたフォルダには.gitがありませんメタデータ。「SSH トンネルで Git を使用するにはどうすればいいですか?」を参照してください。
コードが動作しません
-
すべての Databricks Runtime 依存関係にアクセスできる適切な Python インタープリターを選択してください。
- Python プロジェクトを開くと、Python 拡張機能によって仮想環境が自動的に検出されます。ただし、適切な環境を手動でアクティブ化する必要があります。 Python を実行します。インタープリター コマンドを選択し 、 pythonEnv-xxx 環境を選択します。すべての組み込み Databricks Runtime ライブラリ、またはクラスターにグローバルにインストールしたすべてのものにアクセスできます。
- Python プロジェクトとして認識できないフォルダーを開いた場合など、Python 拡張機能が仮想環境を自動的に検出できない場合があります。ターミナルを開いて
echo $DATABRICKS_VIRTUAL_ENVを実行し、パスをコピーして Python: Select Interpreter コマンドで使用できます。
-
ipynbノートブックと
*.pyDatabricksノートブックはDatabricksグローバルにアクセスできますが、 Python*.pyファイルはアクセスできません。 Databricksノートブックの違い を参照してください。
WSL 下の Windows で SSH 接続を設定できない
Databricks では、Windows で直接 ssh セットアップを実行することを推奨しています。WSL 側でセットアップしたが、Windows バージョンの Visual Studio Code を使用すると、必要な ssh 構成が見つかりません。
よくある質問
コードとデータはどのように保護されますか?
すべてのコードは、Databricks クラウドの仮想プライベート クラウド (VPC) 内で実行されます。データやコードは安全な環境から外に出ることはありません。SSH トラフィックは完全に暗号化されます。
どのIDEsがサポートされていますか?
Visual Studio Code と Cursor は公式にサポートされていますが、Databricks SSH トンネルは SSH 機能を備えたあらゆる IDE と互換性があります。
Databricks ノートブックのすべての機能は IDE から利用できますか?
display() 、 dbutils 、 %sqlなどの一部の機能は、制限付きまたは手動設定で使用できます。Databricksノートブックの違い を参照してください。
複数のユーザーが同時に同じクラスター上で開発できますか?
いいえ。
SSH トンネル経由で接続すると、クラスターは自動的に起動しますか?
はい。ただし、クラスターの起動に、接続タイムアウトよりも長い時間がかかる場合、接続の試行は失敗します。
クラスターが実行中かどうかはどうすればわかりますか?
Databricksワークスペース UI の コンピュート に移動し、クラスターのステータスを確認します。 SSH トンネル接続が機能するには、クラスターが実行 中と 表示されている必要があります。
SSH/IDE セッションを切断するにはどうすればよいですか?
IDE ウィンドウを閉じるか、IDE の [切断] オプションを使用するか、SSH ターミナルを閉じるか、ターミナルでexitコマンドを実行することで、セッションを切断できます。
SSH を切断するとクラスターは自動的に停止しますか?
いいえ、ssh サーバーには構成可能なシャットダウン遅延があり、指定された時間 (デフォルトでは 10 分ですが、ssh 構成 ProxyCommand で-shutdown-delayオプションを変更することで変更できます)、バックグラウンドで実行を継続します。タイムアウト後、サーバーが終了し、クラスターのアイドル タイムアウト (クラスターの作成時に構成) が開始されます。
不要な料金を避けるためにクラスターを停止するにはどうすればよいですか?
Databricksワークスペース UI の [コンピュート] に移動し、クラスターを見つけて、 [終了] または [停止] をクリックします。
永続的な依存関係をどのように処理すればよいですか?
セッション中にインストールされた依存関係は、クラスターの再起動後に失われます。要件およびセットアップ スクリプトには永続ストレージ ( /Workspace/Users/<your-username> ) を使用します。自動化にはクラスター ライブラリまたは init スクリプトを使用します。
どのような認証方法がサポートされていますか?
認証には、Databricks CLI と~/.databrickscfgプロファイル ファイルが使用されます。SSH キーは Databrick SSH トンネルによって処理されます。
クラスターから外部データベースまたはサービスに接続できますか?
はい、クラスター ネットワークで送信接続が許可されており、必要なライブラリがある限り可能です。
追加の IDE 拡張機能を使用できますか?
ほとんどの拡張機能は、IDE とクラスターに応じて、リモート SSH セッション内にインストールすると機能します。Visual Studio Code は、デフォルトではリモート ホストにローカル拡張機能をインストールしません。拡張機能パネルを開いてリモート ホストでローカル拡張機能を有効にすることで、手動でインストールできます。特定の拡張機能を常にリモートでインストールするように Visual Studio Code を構成することもできます。「Databricks への接続」を参照してください。
SSH トンネルで Git を使用するにはどうすればよいですか?
現在、 Databricksワークスペース UI を使用して作成されたGitフォルダーは、 IDEsでは git リポジトリとして認識されません。 この問題を回避するには、SSH セッションから git CLI を使用してリポジトリのクローンを作成し、永続的なワークスペース フォルダーにコピーします。
- ターミナルを開き、目的の親ディレクトリ(例:
cd /Workspace/Users/<your-username>)に移動します。 - そのディレクトリにリポジトリのクローンを作成します。
- Visual Studio Code で、
code <repo-name>を実行してこのフォルダーを新しいウィンドウで開くか、UI を使用してフォルダーを新しいウィンドウで開きます。