Подключение к Databricks с помощью туннеля SSH

Это важно

Эта функция доступна в бета-версии.

Стоимость и ценообразование функций в бета-версии могут меняться.

SSH-туннель, предоставляемый Databricks, позволяет получить доступ к вашему рабочему пространству и интерактивно выполнять рабочие нагрузки на вычислениях Databricks из IDE через туннель SSH (Secure Shell). Легко настроить, устранить необходимость управления средой и обеспечить безопасность всего кода и данных в рабочей области Databricks.

Требования

Чтобы использовать туннель SSH для подключения к бессерверным или классическим вычислениям Databricks, необходимо:

  • Databricks CLI версии 1.5.0 или выше, установленный на локальном компьютере, с настроенной аутентификацией. См. установите или обновите CLI Databricks.
  • Одна из следующих:
    • Visual Studio Code версии 1.110.0 (Universal) или выше, а также установленное расширение Remote - SSH (1.0.46+).
    • Версия курсора: 2.6.11 (универсальная) или более поздней.

Чтобы подключиться к бессерверным вычислениям GPU, необходимо включить функцию среды выполнения ИИ. См. раздел "Среда выполнения ИИ".

Чтобы подключиться к классическим (выделенным, однопользовательским) вычислениям:

Подключение к бессерверным вычислениям

Чтобы подключиться к бессерверным вычислениям, выполните databricks ssh connect команду из терминала в интегрированной среде разработки. Отдельный шаг установки не требуется.

Дополнительные сведения о команде databricks ssh connect см. в группе команд ssh.

databricks ssh connect

Используйте параметр --accelerator для подключения к среде выполнения ИИ:

databricks ssh connect --accelerator=GPU_1xA10

databricks ssh connect предоставляет интерактивный сеанс на одном узле. Для длительных задач обучения или многоузлового распределённого обучения вместо этого отправьте рабочую нагрузку с помощью databricks air. См. Использование CLI Databricks с AI Runtime.

После подключения завершите настройку среды разработки. См. статью "Открытые проекты".

Чтобы подключиться к бессерверным вычислениям и запустить сеанс в Visual Studio Code или курсоре, используйте этот --ide параметр. Интерфейс командной строки открывает окно интегрированной среды разработки, указывающее на папку домашней рабочей области.

databricks ssh connect --ide=vscode

Подключение к классическим вычислениям

Чтобы подключиться к классическим вычислениям, сначала настройте подключение SSH, а затем подключитесь с помощью интегрированной среды разработки или терминала.

Настройка подключения SSH

Замечание

Настройка подключения SSH требуется только при подключении к классическим вычислениям.

Сначала настройте туннель SSH с помощью команды databricks ssh setup. Укажите имя подключения, например, замените <connection-name> на my-connection:

databricks ssh setup --name <connection-name>

Интерфейс командной строки предложит выбрать кластер. Вы также можете указать один напрямую с помощью --cluster <cluster-id>:

databricks ssh setup --name <connection-name> --cluster <cluster-id>

Замечание

Для пользователей IntelliJ Databricks рекомендует добавлять --auto-start-cluster=false в команду установки и запускать кластер вручную перед подключением. Это связано с тем, что среды idEs JetBrains запускают все настроенные кластеры при запуске, что может привести к непредвиденным затратам на вычисления.

Подключение с помощью Visual Studio Code или Курсора

  1. Для Visual Studio Code установите расширение Remote SSH. Курсор включает удаленное расширение SSH по умолчанию.

  2. В главном меню интегрированной среды разработки щелкните "View">Палитра команд. Выберите Remote-SSH: Параметры. Кроме того, выберите Параметры: Откройте параметры пользователя (JSON), чтобы изменить их напрямую.

  3. В разделе Remote.SSH: расширения по умолчанию (или remote.SSH.defaultExtensions в settings.json), добавьте ms-Python.Python и ms-toolsai.jupyter.

    При изменении settings.json:

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

    Замечание

    При необходимости увеличьте значение Remote.SSH: время ожидания подключения (или remote.SSH.connectTimeout в settings.json), чтобы уменьшить вероятность ошибок времени ожидания. Время ожидания по умолчанию — 360.

  4. В палитре команд выберите Remote-SSH: Подключиться к узлу.

  5. В раскрывающемся меню выберите подключение, настроенное на первом шаге. IDE подключается в новом окне.

Подключение с использованием IntelliJ IDEs

  1. Следуйте инструкциям по настройке удаленного сервера .
  2. На новом экране подключения введите следующее:
    • Имя пользователя: root
    • Хост: <connection-name>

Подключение с помощью терминала

ssh <connection-name>

Открытие проектов

По умолчанию databricks ssh connect команда открывается в эфемерном каталоге. Чтобы получить доступ к файлам рабочей области, перейдите в каталог рабочей области из интегрированной среды разработки или терминала:

  • В Visual Studio Code или Cursor в палитре команд (Cmd/Ctrl+Shift+P) выберите Open Folder и перейдите в /Workspace/Users/<your-username>.
  • В окне терминала измените каталог: cd /Workspace/Users/<your-username>

Замечание

Файлы в /Workspace, /Volumesа также /dbfs сохраняются во всех перезапусках кластера. Файлы в /home, /rootа также другие локальные пути являются временными и потеряны при перезапуске.

Запустить код (Visual Studio Code или Cursor)

Чтобы запустить код с помощью туннеля SSH, необходимо настроить виртуальную среду Databricks. Эта среда включает все встроенные библиотеки DBR и библиотеки, ограниченные областью вычислений.

  1. Откройте палитру команд (CMD/CTRL+SHIFT+P) и выберите Python: Выберите интерпретатор.

  2. Выберите виртуальную pythonEnv-xxx среду из списка. Если вы настроили Python зависимости с помощью флага--base-environment, выберите более длинное имя виртуальной среды из списка параметров. Если виртуальная среда не отображается:

    1. Запустите echo $DATABRICKS_VIRTUAL_ENV из терминала в интегрированной среде разработки.

      Пример выходных данных: /local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python

    2. Вставьте полный вывод в качестве пути к интерпретатору в запросе Python: Выбрать интерпретатор.

  3. Откройте новый терминал, и виртуальная среда должна автоматически активироваться.

  4. Чтобы запустить ноутбук Jupyter, убедитесь, что виртуальная среда установлена как ядро. Щелкните "Выбрать ядро" в правом верхнем углу записной книжки.

Запуск и отладка Python файлов и .ipynb записных книжек с помощью стандартных расширений Python и Jupyter.

Чтобы использовать Spark в файле Python на бессерверных вычислениях, инициализировать сеанс явным образом:

from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.serverless().profile("DEFAULT").getOrCreate()

Управление зависимостями

Управление зависимостями с помощью базовой среды рабочей области, библиотек кластера, скриптов и записных книжек в зависимости от типа вычислений и требований.

Базовые среды рабочей области (рекомендуется для бессерверной среды выполнения ИИ)

Замечание

Эта функция требует включения поддержки базовой среды бессерверных рабочих областей в предварительной версии заданий. См. статью "Управление предварительными версиями Azure Databricks".

Используйте базовую среду рабочей области с бессерверной средой версии 4 или ниже для предварительной настройки зависимостей Python. Создайте базовую среду с помощью пользовательского интерфейса рабочей области или команды Databricks CLI databricks create-workspace-base-environment .

Укажите среду с помощью --base-environment параметра при подключении:

databricks ssh connect --base-environment my-workspace-env

Дополнительные сведения о принятых форматах см. в разделе databricks ssh connect.

Библиотеки кластеров (рекомендуется для классических вычислений)

Установите зависимости с помощью интерфейса рабочей области в разделе Compute > Libraries. Они сохраняются при всех перезапусках кластера и доступны в pythonEnv-xxx. См. библиотеки кластера.

Зависимости, отличные от Python

Чтобы сохранить зависимости, отличные от Python, используйте скрипт инициализации, который устанавливает пакеты при запуске вычислений. При необходимости сохраните пакеты в томе Unity Catalog и укажите их в скрипте инициализации. См. статью "Что такое скрипты инициализации?".

Настройка записной книжки для Project

Для зависимостей в области проекта запустите записную книжку, содержащую %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. Это позволяет определяемым пользователем функциям с пользовательскими зависимостями.

Дополнительные примеры см. в разделе "Управление библиотеками с помощью %pip команд".

Не нужно повторно запускать записную книжку, если сеанс повторно подключается в течение 10 минут. Это можно настроить в конфигурации SSH с помощью -shutdown-delay.

Замечание

Несколько сеансов SSH в одном кластере используют одну виртуальную среду.

С помощью Git

Замечание

Для этой функции требуется включить поддержку интерфейса командной строки Git для предварительной версии папок Git . См. статью "Управление предварительными версиями Azure Databricks".

Вы можете использовать интерфейс командной строки Git в туннеле SSH с только что созданными папками Git и учетными данными Git, настроенными в рабочей области Databricks. См. статью "Использование команд командной строки Git".

Если интерфейс командной строки запрашивает учетные данные вместо автоматического их выбора, необходимо подключить поставщика Git к Databricks. См. статью "Подключение поставщика Git к Databricks".

Ограничения

Туннель SSH, предоставляемый Databricks, имеет следующие ограничения:

  • Общие кластеры не поддерживаются.
  • Расширение Databricks IDE и SSH-туннель пока несовместимы и не должны использоваться вместе.
  • Файлы, редактируемые за пределами /Workspace, /Volumesи /dbfs теряются при перезапуске кластера.
  • Для каждого кластера разрешено не более 10 подключений SSH.
  • Неактивные сеансы могут удаляться через 1 час.
  • Туннель SSH нельзя запустить из других удаленных сред или контейнеров Docker.
  • При одновременном открытии трех или нескольких записных книжек 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
    • %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 или тайм-аут

  • Убедитесь, что кластер запущен в пользовательском интерфейсе рабочей области.
  • Убедитесь, что ваша сеть, VPN и межсетевой экран разрешают HTTPS- и WebSocket-трафик к домену вашего рабочего пространства. Тоннель SSH не использует порт 22. Он туннелирует весь трафик через ту же HTTPS-конечную точку, что и другие команды CLI Databricks. См . раздел "Настройка правил брандмауэра доменных имен".
  • Если прокси-сервер или фаервол проверяет TLS-трафик, убедитесь, что он разрешает запрос на переключение на WebSocket. Посредник, который блокирует или снимает обновление, вызывает сбой соединения или тайм-аут. Попросите сетевого администратора разрешить обновления WebSocket домену рабочего пространства или обойти TLS-инспекцию для этого домена.
  • Если вы подключаетесь через корпоративный HTTP-прокси, задайте переменную среды HTTPS_PROXY или используйте NO_PROXY, чтобы обойти прокси для домена вашего рабочего пространства. SSH-туннель использует ту же конфигурацию прокси, что и другие команды CLI Databricks. См. конфигурацию прокси-сервера.
  • Проверьте, есть ли у вашего локального компьютера HTTPS-доступ к github.com и release-assets.githubusercontent.com.
  • Увеличьте время ожидания SSH. См. статью "Подключение с помощью Visual Studio Code" или "Курсор".
  • Для ошибок несоответствия ключей удалите ~/.databricks/ssh-tunnel-keys и повторно выполните команду databricks ssh setup.
  • Для ошибок "идентификация удаленного узла изменилась", проверьте файл ~/.ssh/known_hosts и удалите записи, связанные с вашим кластером.
  • Сеансы SSH могут прерываться через 1 час, и к одному кластеру можно установить не более 10 SSH-подключений. См. Ограничения.

Команда code не найдена

Если вы видите Error: exec: "code": executable file not found in $PATH, откройте палитру команд (Cmd/CTRL+SHIFT+P), выберите команду оболочки: установить команду "code" в PATH и перезапустить IDE или сеанс терминала.

Ошибки проверки подлинности CLI

  • Убедитесь, что профиль CLI Databricks действителен, используя databricks auth login.
  • Убедитесь, что у вас есть CAN MANAGE разрешения на кластер.

Мой код не работает

Файлы исчезают или среда сбрасывается после перезапуска кластера

  • Файлы в /Workspace, /Volumes и /dbfs точках монтирования сохраняются после перезапуска кластера. Файлы в /home, /rootа также другие локальные пути являются временными и потеряны при перезапуске.
  • Используйте управление библиотекой кластера для постоянных зависимостей. При необходимости автоматизируйте переустановки с помощью скриптов инициализации. См. статью "Что такое скрипты инициализации?".

Ошибка при настройке SSH в Windows (WSL)

Запустите databricks ssh setup непосредственно в Windows, а не в WSL. Экземпляр Windows Visual Studio Code не может найти конфигурации SSH, созданные на стороне WSL.

Часто задаваемые вопросы

Как туннель SSH отличается от Databricks Connect?

Databricks Connect позволяет создавать код с помощью API Spark и выполнять их удаленно на вычислительных ресурсах Databricks, а не в локальном сеансе Spark. Расширение Databricks Visual Studio Code использует Databricks Connect для обеспечения встроенной отладки пользовательского кода в Databricks.

Туннель SSH позволяет получить доступ к рабочей области из интегрированной среды разработки и перемещать всю среду разработки на вычислительные ресурсы — Python, ядро и все выполнение выполняется в Databricks с полным доступом к вычислительным ресурсам.

Как защищены код и данные?

Весь код выполняется внутри вашего облачного VPC Databricks. Данные или код не покидают безопасную среду. Трафик SSH полностью зашифрован.

Какие интегрированные среды разработки поддерживаются?

Visual Studio Code и Cursor официально поддерживаются. Любая интегрированная среда разработки с возможностями SSH совместима, но тестируются только VS Code и Cursor.

Доступны ли все функции записной книжки Databricks из интегрированной среды разработки?

Некоторые функции, такие как display(), dbutilsи %sql доступны с ограничениями или ручной настройкой. См. различия записных книжек Databricks.

Запускается ли кластер автоматически при подключении с помощью туннеля SSH?

Да, но если для запуска кластера требуется больше времени ожидания подключения, попытка подключения завершится ошибкой. Чтобы предотвратить это, увеличьте значение Remote.SSH: подключите время ожидания из палитры команд (или remote.SSH.connectTimeout в settings.json), чтобы уменьшить вероятность ошибок времени ожидания.

Как узнать, запущен ли кластер?

Перейдите к вычислению в пользовательском интерфейсе рабочей области Databricks и проверьте состояние кластера. Кластер должен показывать состояние работа, чтобы подключение SSH работало.

Как отключить сеанс SSH/IDE?

Сеанс можно отключить, закрыв окно интегрированной среды разработки, используя параметр "Отключить " в интегрированной среде разработки, закрыв терминал SSH или выполнив exit команду в терминале.

Как остановить кластер и избежать расходов, когда я не работаю?

Чтобы немедленно остановить кластер, завершите работу кластера из пользовательского интерфейса рабочей области. Перейдите к разделу "Вычисления " в пользовательском интерфейсе рабочей области Databricks, найдите кластер и нажмите кнопку "Завершить " или "Остановить".

Задайте короткую политику автоматического завершения в кластере из пользовательского интерфейса рабочей области. После отключения сервер SSH ожидает в течение shutdown-delay периода (по умолчанию: 10 минут), затем применяется время ожидания простоя для кластера.

Как обрабатывать постоянные зависимости?

Зависимости, установленные во время сеанса, теряются после перезапуска кластера. Используйте постоянное хранилище (/Workspace/Users/<your-username>) для требований и сценариев установки. Используйте библиотеки кластера или скрипты инициализации для автоматизации.

Какие методы проверки подлинности поддерживаются?

Проверка подлинности использует CLI Databricks и ваш файл конфигурации профилей ~/.databrickscfg. Ключи SSH обрабатываются туннельом SSH.

Можно ли подключиться к внешним базам данных или службам из кластера?

Да, если сеть кластера разрешает исходящие подключения и у вас есть необходимые библиотеки.

Можно ли использовать дополнительные расширения интегрированной среды разработки?

Большинство расширений работают при установке в удаленном сеансе SSH в зависимости от интегрированной среды разработки и кластера. Visual Studio Code по умолчанию не устанавливает локальные расширения на удаленных узлах. Их можно установить вручную, открыв панель расширений и включив локальные расширения на удаленном узле. Вы также можете настроить Visual Studio Code для удаленной установки определенных расширений. См. статью "Подключение к Databricks".

Да, однако администраторы рабочей области должны добавить URL-адреса маркетплейсов расширений Visual Studio Code и Cursor в список разрешённых. Локальный компьютер также должен иметь возможность доступа к Интернету.