Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Туннель SSH Databricks находится в бета-версии.
Туннель SSH Databricks позволяет подключить интегрированную среду разработки к вычислительным ресурсам Databricks. Это просто настроить, позволяет выполнять и отлаживать код в интерактивном режиме в кластере, уменьшать несоответствия среды и обеспечивать безопасность всего кода и данных в рабочей области Databricks.
Требования
Чтобы использовать туннель SSH, необходимо:
- Интерфейс командной строки Databricks версии 0.269 или более поздней, установленный на локальном компьютере, и настроена проверка подлинности. См. раздел "Установка".
- Вычисления в рабочей области Databricks в режиме выделенного доступа для одного пользователя. Обзор выделенных вычислений.
- Вычислительные ресурсы должны использовать Databricks Runtime 17.0 и выше.
- Каталог Unity должен быть включен.
- Если политика вычислений существует, она не должна запрещать выполнение заданий.
Настройка туннеля SSH
Сначала настройте туннель SSH с помощью команды databricks ssh setup. Замените <connection-name> именем туннеля, например my-tunnel.
databricks ssh setup --name <connection-name>
Интерфейс командной строки предлагает выбрать кластер или предоставить идентификатор кластера путем передачи --cluster <cluster-id>.
Замечание
Для IntelliJ Databricks рекомендует включить –-auto-start-cluster=false в команду установки. Запуск интегрированной среды разработки JetBrains автоматически запускает все кластеры, что может привести к непредвиденным затратам на вычисления. Если этот параметр задан, необходимо запустить кластер в рабочей области, чтобы запустить туннель SSH.
Подключение к Databricks
Затем подключитесь к Databricks с помощью интегрированной среды разработки или терминала.
Подключение с помощью Visual Studio Code или Курсора
Для Visual Studio Code установите расширение Remote SSH. Курсор включает удаленное расширение SSH.
В главном меню интегрированной среды разработки щелкните "View">Палитра команд. Выберите Remote-SSH: Параметры. Кроме того, выберите Параметры: Откройте параметры пользователя (JSON), чтобы изменить их напрямую.
В разделе 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.В палитре команд выберите Remote-SSH: Подключиться к узлу.
В раскрывающемся списке выберите туннель, настроенный на первом шаге. IDE подключается в новом окне.
Замечание
Если вычислительная система не запущена, она будет запущена. Однако если для запуска вычислений требуется больше времени ожидания, попытка подключения SSH завершится ошибкой.
Выберите Linux при появлении запроса на тип сервера.
Подключение с использованием IntelliJ IDEs
Следуйте инструкциям по удаленной разработке , чтобы настроить его.
На новом экране подключения введите следующее:
Имя пользователя:
root<connection-name>
Подключение с помощью терминала
Чтобы подключиться к Databricks из командной строки, укажите ssh имя подключения, например:
ssh my-tunnel
Открытие проектов
- Начальное подключение открывает пустое окно интегрированной среды разработки без открытой папки. В Visual Studio Code используйте команду "Открыть папку " из палитры команд , чтобы открыть нужный проект.
- Используйте точку монтирования рабочей области (
/Workspace/Users/<your-username>) для постоянного хранилища данных.
Запуск кода (Visual Studio Code)
- Если вы открываете проект Python, расширение Python может автоматически обнаруживать виртуальные среды, но вам по-прежнему нужно вручную активировать правильный. Выберите команду Интерпретатора в палитре команд и выберите среду
pythonEnv-xxx. Это имеет доступ ко всем встроенным библиотекам среды выполнения Databricks или всем, что вы установили глобально в кластере. - В некоторых случаях расширение Python не может автоматически обнаруживать виртуальные среды (
venvнапример, при открытии папки, которая не может быть распознана как проект Python). Чтобы устранить эту проблему, откройте терминал и выполнитеecho $DATABRICKS_VIRTUAL_ENV, затем скопируйте путь и используйте его в команде Python: Select интерпретатор.
После выбора venv файлы или записные книжки Python можно выполнять с обычными действиями выполнения или отладки, предоставляемыми расширениями Python или Jupyter.
Управление зависимостями Python
Самый простой способ установки необходимых зависимостей — использовать пользовательский интерфейс рабочей области. См. библиотеки для вычислительных процессов. С помощью этого подхода вы устанавливаете зависимости глобально для кластера. При каждом перезапуске кластера не требуется переустановить библиотеки.
Однако для более автоматизированной настройки, ориентированной на определенный проект, используйте установку с областью записной книжки.
Блокнот настроек для конкретного проекта
Управление зависимостями для конкретного проекта:
setup.ipynbСоздайте файл в проекте.Интерфейс командной строки SSH создает среду Python (
pythonEnv-xxx), которая уже имеет встроенные библиотеки среды выполнения Databricks или библиотеки с областью вычислений. Подключите записную книжку к этой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пути) если вы собрали и загрузили пользовательскую библиотеку в виде wheel-пакета
%pipкоманды имеют специфическую для Databricks логику с дополнительными ограничениями. Логика также гарантирует, что зависимости доступны всем узлам исполнителя Spark, а не только узлу драйвера, к которому вы подключены. Это позволяет определяемым пользователем функциям с пользовательскими зависимостями.Дополнительные примеры использования см. в разделе "Управление библиотеками с помощью
%pipкоманд".-
Запустите эту записную книжку каждый раз при создании нового сеанса SSH. При удалении существующего сеанса SSH и повторном подключении к кластеру в течение 10 минут не требуется повторно устанавливать зависимости. (Время настраивается с -shutdown-delay=10m параметром в локальной конфигурации SSH.)
Замечание
Если одновременно подключено несколько сеансов SSH к одному кластеру, они используют одну и ту же виртуальную среду.
Ограничения
Туннель SSH Databricks имеет следующие ограничения:
- Расширение Databricks для Visual Studio Code и туннель Databricks SSH еще не совместимы и не следует использовать вместе.
- Любая папка Git , созданная в рабочей области с помощью пользовательского интерфейса рабочей области Databricks, не будет распознана как репозиторий git CLI и интеграции GIT IDE, так как эти папки не имеют метаданных Git. Чтобы обойти эту проблему, см. статью "Как использовать Git с туннельом SSH?".
- Точки монтирования home и root на кластере, к которому вы подключаетесь, являются эфемерными. Любое содержимое в кластере не сохраняется при перезапуске кластера.
Различия записных книжек Databricks
При использовании туннеля SSH существуют некоторые различия в записных книжках:
- Файлы Python не определяют глобальные значения Databricks (например
spark, илиdbutils). Их необходимо импортировать явным образом сfrom databricks.sdk.runtime import spark. - Для записных книжек ipynb доступны следующие функции:
- Databricks globals:
display,displayHTML,dbutils,table,sql,udf,getArgument,sc,sqlContext,spark -
%sqlволшебная команда для выполнения ячеек SQL
- Databricks globals:
Для работы с исходным кодом Python "записные книжки":
Выполните поиск для
jupyter.interactiveWindow.cellMarker.codeRegexи задайте его значение:^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])Выполните поиск для
jupyter.interactiveWindow.cellMarker.defaultи задайте его значение:# COMMAND ----------
Устранение неполадок
В этом разделе содержатся сведения об устранении распространенных проблем.
Ошибка подключения SSH или тайм-аут
- Убедитесь, что кластер запущен в пользовательском интерфейсе Databricks, а не просто остановлен или запущен.
- Убедитесь, что исходящий порт 22 открыт и разрешен на ноутбуке, сети или VPN.
- Увеличьте время ожидания подключения SSH в интегрированной среде разработки. См. статью "Подключение с помощью Visual Studio Code" или "Курсор".
- Если вы видите ошибки несоответствия открытого или закрытого ключа, попробуйте удалить папку
~/.databricks/ssh-tunnel-keys. - Если вы видите ошибки "идентификация удаленного узла изменена", проверьте
~/.ssh/known_hostsфайл и удалите записи, связанные с кластером. - Если сеанс SSH удаляется через 1 час, это известное ограничение. См. Ограничения.
- В одном кластере разрешено не более 10 SSH-подключений.
Ошибки проверки подлинности CLI
- Убедитесь, что профиль CLI Databricks действителен и прошел проверку подлинности (
databricks auth login). - Убедитесь, что у вас есть соответствующие разрешения кластера, например
CAN MANAGE.
Файлы исчезают или среда сбрасывается после перезапуска кластера
- Только
/Workspace,/Volumesи/dbfsподключения являются постоянными. Все данные в/home,/rootи т. д. удаляются после перезагрузки. - Используйте управление библиотекой кластера для постоянных зависимостей. При необходимости автоматизируйте переустановки с помощью скриптов инициализации. См. статью "Что такое скрипты инициализации?".
Ошибка "Не является репозиторием Git" или отсутствуют функции Git в интегрированной среде разработки
Git работает только если вы клонируете в /Workspace/Users/<your-username> через терминал. У веб-созданных папок нет метаданных Git. Узнайте , как использовать Git с туннельом SSH?.
Мой код не работает
- Убедитесь, что выбран правильный интерпретатор Python, имеющий доступ ко всем зависимостям среды выполнения Databricks.
- Если вы открываете проект Python, расширение Python может автоматически обнаруживать виртуальные среды, но вам по-прежнему нужно вручную активировать правильный. Выполните Python: выберите команду интерпретатора и выберите среду pythonEnv-xxx . Он будет иметь доступ ко всем встроенным библиотекам среды выполнения Databricks или всем, что вы установили глобально в кластере.
- В некоторых случаях расширение Python не может автоматически обнаруживать виртуальные среды, например при открытии папки, которая не может быть распознана как проект Python. Вы можете открыть терминал и выполнить
echo $DATABRICKS_VIRTUAL_ENV, а затем скопировать путь и использовать его в команде Python: Выбрать интерпретатор.
- Записные книжки IPYNB и
*.pyзаписные книжки Databricks имеют доступ к глобальным переменным Databricks, но файлы Python*.pyне имеют. См. различия записных книжек Databricks.
Не удается настроить подключение ssh в windows в WSL
Databricks рекомендует выполнять настройку SSH непосредственно в Windows. Если вы настроили его на стороне WSL, но используете Windows-версию Visual Studio Code, она не сможет найти необходимые настройки SSH.
Часто задаваемые вопросы
Как защищены код и данные?
Весь код исполняется в виртуальном частном облаке (VPC) платформы Databricks. Данные или код не покидают безопасную среду. Трафик SSH полностью зашифрован.
Какие интегрированные среды разработки поддерживаются?
Visual Studio Code и Cursor официально поддерживаются, но туннель Databricks SSH совместим с любой интегрированной среду разработки с возможностями SSH.
Доступны ли все функции записной книжки Databricks из интегрированной среды разработки?
Некоторые функции, такие как display(), dbutilsи %sql доступны с ограничениями или ручной настройкой. См. различия записных книжек Databricks.
Может ли несколько пользователей одновременно работать на одном кластере?
Нет.
Запускается ли кластер автоматически при подключении через туннель SSH?
Да, но если для запуска кластера требуется больше времени ожидания подключения, попытка подключения завершится ошибкой.
Как узнать, запущен ли кластер?
Перейдите к вычислению в пользовательском интерфейсе рабочей области Databricks и проверьте состояние кластера. Кластер должен показывать Запущено, чтобы соединения туннеля SSH работали.
Как отключить сеанс SSH/IDE?
Сеанс можно отключить, закрыв окно интегрированной среды разработки, используя параметр "Отключить " в интегрированной среде разработки, закрыв терминал SSH или выполнив exit команду в терминале.
Автоматически ли отключение SSH останавливает кластер?
Нет, ssh-сервер имеет настраиваемую задержку до завершения работы и будет продолжать работать в фоновом режиме в течение указанного времени (по умолчанию 10 минут, можно изменить в конфигурации ssh ProxyCommand, изменив параметр -shutdown-delay). После завершения работы сервера запускается время ожидания простоя кластера, которое вы настраиваете во время создания кластера.
Как остановить кластер, чтобы избежать ненужных расходов?
Перейдите к разделу "Вычисления " в пользовательском интерфейсе рабочей области Databricks, найдите кластер и нажмите кнопку "Завершить " или "Остановить".
Как обрабатывать постоянные зависимости?
Зависимости, установленные во время сеанса, теряются после перезапуска кластера. Используйте постоянное хранилище (/Workspace/Users/<your-username>) для требований и сценариев установки. Используйте библиотеки кластера или скрипты инициализации для автоматизации.
Какие методы проверки подлинности поддерживаются?
Проверка подлинности использует CLI Databricks и ваш файл конфигурации профилей ~/.databrickscfg. Ключи SSH обрабатываются туннельом Databrick SSH.
Можно ли подключиться к внешним базам данных или службам из кластера?
Да, если сеть кластера разрешает исходящие подключения и у вас есть необходимые библиотеки.
Можно ли использовать дополнительные расширения интегрированной среды разработки?
Большинство расширений работают при установке в удаленном сеансе SSH в зависимости от интегрированной среды разработки и кластера. Visual Studio Code по умолчанию не устанавливает локальные расширения на удаленных узлах. Их можно установить вручную, открыв панель расширений и включив локальные расширения на удаленном узле. Вы также можете настроить Visual Studio Code для удаленной установки определенных расширений. См. статью "Подключение к Databricks".
Как использовать Git с туннельом SSH?
В настоящее время папки Git, созданные с помощью пользовательского интерфейса рабочей области Databricks, не распознаются как репозитории git в idEs. Чтобы обойти эту проблему, клонируйте репозитории с помощью интерфейса командной строки Git из сеанса SSH в папку постоянной рабочей области:
- Откройте терминал и перейдите к нужному родительскому каталогу (например,
cd /Workspace/Users/<your-username>) - Клонируйте репозиторий в этом каталоге.
- В Visual Studio Code откройте эту папку в новом окне, выполнив
code <repo-name>или откройте папку в новом окне с помощью пользовательского интерфейса.