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

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 )。

Bash
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 またはカーソルを使用して接続する

  1. Visual Studio Code の場合は、リモート SSH 拡張機能をインストールします。Cursor にはリモート SSH 拡張機能が含まれています。

  2. IDE メイン メニューで、 [表示] > [コマンド パレット] をクリックします。 [リモートSSH: 設定] を選択します。または、 [設定: ユーザー設定を開く (JSON)] を選択して、 settings.json直接変更します。

  3. Remote.SSH: 無事 Extensions (またはsettings.jsonremote.SSH.defaultExtensions ) で、 ms-Python.Pythonms-toolsai.jupyterを追加します。

    settings.jsonを変更する場合:

    JSON
    "remote.SSH.defaultExtensions": [
    "ms-Python.Python",
    "ms-toolsai.jupyter"
    ]
注記

必要に応じて、 Remote.SSH: Connect Timeout (またはsettings.jsonremote.SSH.connectTimeout ) の値を増やして、タイムアウト エラーが発生する可能性をさらに減らします。デフォルトのタイムアウトは 360 です。

  1. コマンド パレットで、 Remote-SSH: Connect to Host を 選択します。

  2. ドロップダウンから、最初のステップで設定したトンネルを選択します。 IDE は新しいウィンドウで接続を続行します。

注記

コンピュートが起動していない場合は起動します。 ただし、コンピュートの起動にタイムアウト以上の時間がかかると、SSH 接続は失敗します。

  1. サーバーの種類を尋ねられたら、 Linux を選択します。

IntelliJ IDEsを使用して接続する

  1. セットアップするには、リモート開発チュートリアルに従ってください。

  2. 新しい接続画面で以下を入力します。

    ユーザー名 : root ホスト: <connection-name>

ターミナルを使用して接続する

コマンドラインから Databricks に接続するには、 sshコマンドに接続名を指定します。例:

Bash
ssh my-tunnel

オープンプロジェクト

  1. 最初の接続では、開いているフォルダーのない空の IDE ウィンドウが開きます。Visual Studio Code では、 「コマンド」パレット から「 フォルダーを開くコマンド 」を使用して、目的のプロジェクトを開きます。
  2. 永続ストレージにはワークスペース マウント ( /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 を使用することです。「コンピュートスコープのライブラリ」を参照してください。 このアプローチでは、クラスターの依存関係をグローバルにインストールします。クラスターを再起動するたびにライブラリを再インストールする必要はありません。

ただし、特定のプロジェクトに限定された、よりプログラム的なセットアップの場合は、ノートブック スコープのインストールを使用します。

プロジェクト固有のセットアップノートブック

特定のプロジェクトの依存関係を管理するには:

  1. プロジェクトにsetup.ipynbファイルを作成します。

  2. ssh CLI 、 Databricks Runtimeライブラリまたはコンピュート スコープのライブラリがすでに組み込まれているPython環境 ( pythonEnv-xxx ) を作成します。 ノートブックをこのpythonEnv-xxx環境に接続します。

  3. 依存関係をインストールするには、 %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 グローバル ( sparkdbutilsなど) は定義されていません。from databricks.sdk.runtime import sparkを使用して明示的にインポートする必要があります。
  • ipynb ノートブックでは、次の機能が利用できます。
    • Databricks グローバル: displaydisplayHTMLdbutilstablesqludfgetArgumentscsqlContextspark
    • %sql SQLセルを実行するマジックコマンド

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ノートブックと*.py Databricksノートブックは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 を使用してリポジトリのクローンを作成し、永続的なワークスペース フォルダーにコピーします。

  1. ターミナルを開き、目的の親ディレクトリ(例: cd /Workspace/Users/<your-username> )に移動します。
  2. そのディレクトリにリポジトリのクローンを作成します。
  3. Visual Studio Code で、 code <repo-name>を実行してこのフォルダーを新しいウィンドウで開くか、UI を使用してフォルダーを新しいウィンドウで開きます。