Partager via


Tunnel SSH Databricks

Important

Le tunnel SSH Databricks est en version bêta.

Le tunnel SSH Databricks vous permet de connecter votre IDE à votre calcul Databricks. Il est simple de configurer, vous permet d’exécuter et de déboguer du code de manière interactive sur le cluster, de réduire les incompatibilités de l’environnement et de sécuriser tout le code et les données dans votre espace de travail Databricks.

Spécifications

Pour utiliser le tunnel SSH, vous devez avoir :

  • L’interface CLI Databricks version 0.269 ou ultérieure installée sur votre ordinateur local et l’authentification configurées. Consultez Installer.
  • Calculez dans votre espace de travail Databricks avec un mode d’accès dédié (mono-utilisateur). Consultez la vue d’ensemble du calcul dédié.
    • Le calcul doit utiliser Databricks Runtime 17.0 et versions ultérieures.
    • Le catalogue Unity doit être activé.
    • Si une stratégie de calcul existe, elle ne doit pas interdire l’exécution des travaux.

Configurer le tunnel SSH

Tout d’abord, configurez le tunnel SSH à l’aide de la commande de configuration ssh databricks . Remplacez <connection-name> par le nom du tunnel, par exemple my-tunnel.

databricks ssh setup --name <connection-name>

L’interface CLI vous invite à choisir un cluster, ou vous pouvez fournir un ID de cluster en passant --cluster <cluster-id>.

Note

Pour IntelliJ, Databricks vous recommande d’inclure –-auto-start-cluster=false dans la commande d’installation. Le démarrage d’un IDE JetBrains démarre automatiquement tous les clusters, ce qui peut entraîner des coûts de calcul inattendus. Si vous définissez cette option, vous devez démarrer le cluster dans l’espace de travail pour démarrer le tunnel SSH.

Se connecter à Databricks

Ensuite, connectez-vous à Databricks à l’aide d’un IDE ou d’un terminal.

Se connecter à l’aide de Visual Studio Code ou du curseur

  1. Pour Visual Studio Code, installez l’extension SSH distante. Le curseur inclut une extension SSH distante.

  2. Dans le menu principal de l’IDE, cliquez sur Afficher> lapalette de commandes. Sélectionnez Remote-SSH : Paramètres. Vous pouvez également sélectionner Préférences : Ouvrir les paramètres utilisateur (JSON) pour modifier settings.json directement.

  3. Sous Remote.SSH : Extensions par défaut (ou remote.SSH.defaultExtensions in settings.json), ajouter ms-Python.Python et ms-toolsai.jupyter.

    Si vous modifiez settings.json:

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

    Note

    Si vous le souhaitez, augmentez la valeur de Remote.SSH : Délai d’expiration de connexion (ou remote.SSH.connectTimeout in settings.json) pour réduire davantage le risque d’erreurs de délai d’expiration. Le délai d’expiration par défaut est 360.

  4. Dans la palette de commandes, sélectionnez Remote-SSH : Se connecter à l’hôte.

  5. Dans la liste déroulante, sélectionnez le tunnel que vous configurez à la première étape. L’IDE continue de se connecter dans une nouvelle fenêtre.

    Note

    Si le calcul n’est pas en cours d’exécution, il est démarré. Toutefois, s’il faut plus de temps que le délai d’attente de démarrage du calcul, la tentative de connexion SSH échoue.

  6. Sélectionnez Linux quand vous êtes invité à entrer le type de serveur.

Se connecter à l’aide d’IDE IntelliJ

  1. Suivez le didacticiel de développement à distance pour configurer.

  2. Dans le nouvel écran de connexion, entrez les éléments suivants :

    Nom d’utilisateur : rootHôte :<connection-name>

Se connecter à l’aide d’un terminal

Pour vous connecter à Databricks à partir de la ligne de commande, indiquez le ssh nom de votre connexion, par exemple :

ssh my-tunnel

Ouvrir des projets

  1. La connexion initiale ouvre une fenêtre IDE vide sans dossier ouvert. Dans Visual Studio Code, utilisez la commande Ouvrir le dossier à partir de la palette de commandes pour ouvrir un projet souhaité.
  2. Utilisez le montage de l’espace de travail (/Workspace/Users/<your-username>) pour le stockage persistant.

Exécuter du code (Visual Studio Code)

  • Si vous ouvrez un projet Python, l’extension Python peut détecter automatiquement les environnements virtuels, mais vous devez toujours activer manuellement celle qui convient. Sélectionnez la commande Interpréteur dans la palette de commandes, puis choisissez l’environnement pythonEnv-xxx. Cela a accès à toutes les bibliothèques Databricks Runtime intégrées ou à tout ce que vous avez installé globalement sur le cluster.
  • Dans certains cas, l’extension Python ne peut pas détecter automatiquement les environnements virtuels (venvpar exemple, lorsque vous ouvrez un dossier qui ne peut pas être reconnu comme un projet Python). Pour résoudre ce problème, ouvrez un terminal et exécutez echo $DATABRICKS_VIRTUAL_ENV, puis copiez le chemin d’accès et utilisez-le dans la commande Python : Sélectionner l’interpréteur .

Une fois le venv sélectionné, les fichiers ou notebooks Python peuvent être exécutés avec des actions d’exécution ou de débogage normales fournies par les extensions Python ou Jupyter.

Gérer les dépendances Python

La façon la plus simple d’installer les dépendances requises consiste à utiliser l’interface utilisateur de l’espace de travail. Consultez les bibliothèques délimitées par le calcul. Avec cette approche, vous installez des dépendances globalement pour le cluster. Vous n’avez pas besoin de réinstaller des bibliothèques chaque fois que le cluster est redémarré.

Toutefois, pour une configuration plus programmatique destinée à un projet spécifique, utilisez une installation limitée au notebook.

Carnet de configuration spécifique au projet

Pour gérer les dépendances pour un projet spécifique :

  1. Créez un setup.ipynb fichier dans votre projet.

  2. L’interface CLI ssh crée un environnement Python (pythonEnv-xxx), qui a déjà des bibliothèques Databricks Runtime intégrées ou des bibliothèques délimitées par le calcul. Attachez le notebook à cet pythonEnv-xxx environnement.

  3. Utilisez %pip install commandes pour installer vos dépendances :

    • %pip install . si vous avez pyproject.toml (%pip install .<group> pour le restreindre)
    • %pip install -r dependencies.txt si vous avez dependencies.txt
    • %pip install /Volumes/your/wheel.whl (ou /Workspace chemins) si vous avez créé et chargé une bibliothèque personnalisée en tant que roue

    %pip les commandes ont une logique spécifique à Databricks avec des garde-fous supplémentaires. La logique garantit également que les dépendances sont disponibles pour tous les nœuds d’exécuteur Spark, pas seulement le nœud de pilote auquel vous êtes connecté. Cela permet d'utiliser des fonctions définies par l’utilisateur (UDF) avec des dépendances personnalisées.

    Pour plus d’exemples d’utilisation, consultez Gérer les bibliothèques avec les commandes %pip.

Exécutez ce notebook chaque fois que vous établissez une nouvelle session SSH. Vous n’avez pas besoin de réinstaller les dépendances si une session SSH existante est supprimée et reconnectée au cluster en moins de 10 minutes. (L’heure est configurable avec -shutdown-delay=10m l’option dans votre configuration ssh locale.)

Note

Si plusieurs sessions SSH sont connectées au même cluster en même temps, elles utilisent le même environnement virtuel.

Limites

Le tunnel SSH Databricks présente les limitations suivantes :

  • L’extension Databricks pour Visual Studio Code et le tunnel SSH Databricks ne sont pas encore compatibles et ne doivent pas être utilisées ensemble.
  • Tout dossier Git que vous avez créé dans votre espace de travail via l’interface utilisateur de l’espace de travail Databricks n’est pas reconnu comme dépôt Git par l’interface de ligne de commande Git git et les intégrations git de l’IDE git, car ces dossiers n’ont pas de métadonnées .git. Pour contourner ce problème, consultez Comment utiliser Git avec le tunnel SSH ?.
  • Les montages home et root sur le cluster auquel vous vous connectez sont éphémères. Tout contenu du cluster n’est pas conservé lorsque le cluster est redémarré.

Différences entre les notebooks Databricks

Il existe des différences dans les notebooks lors de l’utilisation du tunnel SSH :

  • Les fichiers Python ne définissent pas de globals Databricks (comme spark ou dbutils). Vous devez les importer explicitement avec from databricks.sdk.runtime import spark.
  • Pour les notebooks ipynb, ces fonctionnalités sont disponibles :
    • Databricks globals : display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql commande magic pour exécuter des cellules SQL

Pour utiliser la source Python « notebooks » :

  • Recherchez jupyter.interactiveWindow.cellMarker.codeRegex et définissez-le sur :

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Recherchez jupyter.interactiveWindow.cellMarker.default et définissez-le sur :

    # COMMAND ----------
    

Résolution des problèmes

Cette section contient des informations sur la résolution des problèmes courants.

Échec ou expiration de la connexion SSH

  • Assurez-vous que votre cluster est en cours d’exécution dans l’interface utilisateur Databricks et pas simplement arrêté ou démarré.
  • Vérifiez que le port sortant 22 est ouvert et autorisé sur votre ordinateur portable/réseau/VPN.
  • Augmentez le délai d’expiration de connexion SSH dans votre IDE. Consultez Se connecter à l’aide de Visual Studio Code ou du curseur.
  • Si vous voyez des erreurs d’incompatibilité de clé publique ou privée, essayez de supprimer le ~/.databricks/ssh-tunnel-keys dossier.
  • Si vous voyez « l’identification de l’hôte distant a changé », vérifiez le ~/.ssh/known_hosts fichier et supprimez les entrées associées à votre cluster.
  • Si la session SSH est supprimée après 1 heure, il s’agit d’une limitation connue. Consultez Limitations.
  • Plus de 10 connexions ssh ne sont autorisées à un seul cluster.

Erreurs d’authentification CLI

  • Vérifiez que votre profil Databricks CLI est valide et authentifié (databricks auth login).
  • Vérifiez que vous disposez d’autorisations de cluster appropriées, telles que CAN MANAGE.

Les fichiers disparaissent ou l'environnement se réinitialise après le redémarrage du cluster.

  • Seuls les montages /Workspace, /Volumes et /dbfs sont persistants. Toutes les données dans /home, /rootetc. sont effacées après un redémarrage.
  • Utilisez la gestion des bibliothèques de cluster pour les dépendances persistantes. Automatisez les réinstallations à l’aide de scripts init si nécessaire. Voir Que sont les scripts d'initialisation ?.

Erreur « Non un dépôt Git » ou des fonctionnalités git manquantes dans l’IDE

Git fonctionne uniquement si vous clonez /Workspace/Users/<your-username> en utilisant le terminal. Les dossiers créés sur le web n’ont pas de métadonnées .git. Découvrez comment utiliser Git avec le tunnel SSH ?.

Mon code ne fonctionne pas

  • Veillez à sélectionner l’interpréteur Python approprié qui a accès à toutes les dépendances Databricks Runtime.
    • Si vous ouvrez un projet Python, l’extension Python peut détecter automatiquement les environnements virtuels, mais vous devez toujours activer manuellement celle qui convient. Exécutez Python : sélectionnez la commande Interpréteur , puis choisissez l’environnement pythonEnv-xxx . Il aura accès à toutes les bibliothèques Databricks Runtime intégrées ou à tout ce que vous avez installé globalement sur le cluster.
    • Dans certains cas, l’extension Python ne peut pas détecter automatiquement les environnements virtuels, par exemple lorsque vous ouvrez un dossier qui ne peut pas être reconnu comme un projet Python. Vous pouvez ouvrir un terminal et l’exécuter echo $DATABRICKS_VIRTUAL_ENV, puis copier le chemin et l’utiliser dans la commande Python : Sélectionner l’interpréteur .
  • Les notebooks IPYNB et *.py les notebooks Databricks ont accès aux variables globales de Databricks, mais pas les fichiers Python *.py. Consultez les différences entre Databricks Notebooks.

Impossible de configurer la connexion SSH sur windows sous WSL

Databricks recommande d’effectuer une configuration ssh directement sur Windows. Si vous la configurez côté WSL, mais utilisez une version Windows de Visual Studio Code, elle ne trouve pas les configurations ssh nécessaires.

Questions fréquentes (FAQ)

Comment mon code et mes données sont-ils sécurisés ?

Tout le code s’exécute dans votre cloud Databricks virtual private cloud (VPC). Aucune donnée ou code ne quitte votre environnement sécurisé. Le trafic SSH est entièrement chiffré.

Quels environnements de développement intégrés (IDE) sont pris en charge ?

Visual Studio Code et Cursor sont officiellement pris en charge, mais le tunnel SSH Databricks est compatible avec n’importe quel IDE avec des fonctionnalités SSH.

Toutes les fonctionnalités de notebook Databricks sont-elles disponibles à partir de l’IDE ?

Certaines fonctionnalités telles que display(), dbutilset %sql sont disponibles avec des limitations ou une configuration manuelle. Consultez les différences entre Databricks Notebooks.

Plusieurs utilisateurs peuvent-ils développer sur le même cluster à la fois ?

Non.

Mon cluster démarre-t-il automatiquement quand je me connecte via ssh Tunnel ?

Oui, mais s’il faut plus de temps pour démarrer le cluster que le délai d’expiration de connexion, la tentative de connexion échoue.

Comment savoir si mon cluster est en cours d’exécution ?

Accédez à Compute dans l’interface utilisateur de l’espace de travail Databricks et vérifiez l’état du cluster. Le cluster doit afficher le statut En cours d'exécution pour que les connexions de tunnel SSH fonctionnent.

Comment déconnecter ma session SSH/IDE ?

Vous pouvez déconnecter une session en fermant votre fenêtre IDE, en utilisant l’option Déconnexion dans votre IDE, en fermant votre terminal SSH ou en exécutant la exit commande dans le terminal.

La déconnexion de SSH arrête-t-elle automatiquement mon cluster ?

Non, le serveur ssh a un délai d'arrêt configurable et il continuera à s'exécuter en arrière-plan pendant une durée spécifiée (10m par défaut, peut être modifié dans la configuration ssh avec l'option ProxyCommand en modifiant l'option -shutdown-delay). Une fois le délai d’expiration écoulé, le serveur s'arrête, ce qui déclenche le délai d'inactivité du cluster (que vous configurez lors de la création du cluster).

Comment arrêter le cluster pour éviter les frais inutiles ?

Accédez à Calcul dans l’interface utilisateur de l’espace de travail Databricks, recherchez votre cluster, puis cliquez sur Arrêter ou arrêter.

Comment gérer les dépendances persistantes ?

Les dépendances installées pendant une session sont perdues après le redémarrage du cluster. Utilisez le stockage persistant (/Workspace/Users/<your-username>) pour les exigences et les scripts d’installation. Utilisez des bibliothèques de cluster ou des scripts init pour l’automatisation.

Quelles méthodes d’authentification sont prises en charge ?

L’authentification utilise l’interface CLI Databricks et votre ~/.databrickscfg fichier de profils. Les clés SSH sont gérées par le tunnel SSH Databrick.

Puis-je me connecter à des bases de données ou services externes à partir du cluster ?

Oui, tant que la mise en réseau de votre cluster autorise les connexions sortantes et que vous disposez des bibliothèques nécessaires.

Puis-je utiliser des extensions IDE supplémentaires ?

La plupart des extensions fonctionnent quand elles sont installées dans votre session SSH distante, en fonction de votre IDE et de votre cluster. Visual Studio Code par défaut n’installe pas les extensions locales sur les hôtes distants. Vous pouvez les installer manuellement en ouvrant le panneau des extensions et en activant vos extensions locales sur l’hôte distant. Vous pouvez également configurer Visual Studio Code pour toujours installer certaines extensions à distance. Consultez Se connecter à Databricks.

Comment utiliser Git avec le tunnel SSH ?

Actuellement, les dossiers Git créés à l’aide de l’interface utilisateur de l’espace de travail Databricks ne sont pas reconnus comme référentiels Git dans les IDE. Pour contourner ce problème, clonez les référentiels à l’aide de l’interface CLI git de votre session SSH dans votre dossier d’espace de travail persistant :

  1. Ouvrez un terminal et accédez à un répertoire parent souhaité (par exemple, cd /Workspace/Users/<your-username>)
  2. Clonez votre référentiel dans ce répertoire.
  3. Dans Visual Studio Code, ouvrez ce dossier dans une nouvelle fenêtre en exécutant code <repo-name> ou en ouvrant le dossier dans une nouvelle fenêtre à l’aide de l’interface utilisateur.