Verbinding maken met Databricks met behulp van een SSH-tunnel

Belangrijk

Deze functie bevindt zich in de bètaversie.

Met de SSH-tunnel van Databricks hebt u toegang tot uw werkruimte en kunt u workloads interactief uitvoeren op Databricks-compute van IDE's met behulp van een SSH-tunnel. Het is eenvoudig in te stellen, elimineert de noodzaak van omgevingsbeheer en houdt alle code en gegevens veilig binnen uw Databricks-werkruimte.

Requirements

Als u de SSH-tunnel wilt gebruiken om verbinding te maken met serverloze of klassieke compute van Databricks, hebt u het volgende nodig:

  • Databricks CLI versie 1.5.0 of hoger geïnstalleerd op uw lokale computer en verificatie geconfigureerd. Zie De Databricks CLI installeren of bijwerken.
  • Een van de volgende opties:
    • Visual Studio Code versie: 1.110.0 (Universeel) of hoger en de Remote - SSH-extensie (1.0.46+) geïnstalleerd.
    • Cursorversie: 2.6.11 (Universeel) of hoger.

Als u verbinding wilt maken met serverloze GPU-rekenkracht, moet de AI Runtime-functie zijn ingeschakeld. Zie AI Runtime.

Verbinding maken met klassieke (toegewezen, individuele gebruikers) rekenkracht:

Verbinding maken met serverloze rekencapaciteit

Als u verbinding wilt maken met serverloze berekeningen, voert u de databricks ssh connect opdracht uit vanuit een terminal in uw IDE. Er is geen afzonderlijke installatiestap vereist.

Zie databricks ssh connect voor meer informatie over de opdracht ssh.

databricks ssh connect

Gebruik de --accelerator optie om verbinding te maken met AI Runtime:

databricks ssh connect --accelerator=GPU_1xA10

databricks ssh connect geeft u een interactieve sessie op één knooppunt. Voor langlopende trainingstaken of gedistribueerde training met meerdere knooppunten dient u in plaats daarvan de workload in met de air CLI. Zie AI Runtime CLI.

Nadat u verbinding hebt gemaakt, voltooit u het instellen van uw ontwikkelomgeving. Zie Open projecten.

Als u verbinding wilt maken met serverloze berekeningen en de sessie wilt starten in Visual Studio Code of Cursor, gebruikt u de --ide optie. De CLI opent een IDE-venster dat verwijst naar de map met de basiswerkruimte.

databricks ssh connect --ide=vscode

Verbinding maken met klassieke compute

Als u verbinding wilt maken met klassieke berekeningen, moet u eerst de SSH-verbinding instellen en vervolgens verbinding maken met uw IDE of vanaf de terminal.

De SSH-verbinding instellen

Opmerking

Het instellen van de SSH-verbinding is alleen vereist als u verbinding maakt met klassieke berekeningen.

Stel eerst de SSH-tunnel in met behulp van de opdracht databricks ssh setup . Geef een naam op voor de verbinding, bijvoorbeeld vervangen door <connection-name>my-connection:

databricks ssh setup --name <connection-name>

De CLI vraagt u om een cluster te selecteren. U kunt er ook rechtstreeks een opgeven met --cluster <cluster-id>:

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

Opmerking

Voor IntelliJ-gebruikers raadt Databricks aan om --auto-start-cluster=false toe te voegen aan de installatieopdracht en het cluster handmatig te starten voordat u verbinding maakt. Dit komt doordat JetBrains IDE's alle geconfigureerde clusters starten bij het starten, wat kan leiden tot onverwachte rekenkosten.

Verbinding maken met Visual Studio Code of Cursor

  1. Installeer voor Visual Studio Code de externe SSH-extensie. Cursor bevat standaard een externe SSH-extensie.

  2. Klik in het hoofdmenu van IDE opOpdrachtpalet>. Selecteer Remote-SSH: Instellingen. U kunt ook Voorkeuren selecteren: Gebruikersinstellingen (JSON) openen om rechtstreeks te wijzigen settings.json .

  3. Onder Remote.SSH: Standaardextensies (of remote.SSH.defaultExtensions in settings.json), voeg ms-Python.Python en ms-toolsai.jupyter toe.

    Als u het volgende wijzigt settings.json:

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

    Opmerking

    Verhoog eventueel de waarde van Remote.SSH: Connect Timeout (of remote.SSH.connectTimeout in settings.json) om de kans op time-outfouten verder te verminderen. De standaardtime-out is 360.

  4. Selecteer in het opdrachtpalet de optie Remote-SSH: Verbinding maken met host.

  5. Selecteer in de vervolgkeuzelijst de verbinding die u in de eerste stap hebt ingesteld. De IDE gaat verbinding maken in een nieuw venster.

Verbinding maken met intelliJ IDE's

  1. Volg de zelfstudie over de externe server om de installatie uit te voeren.
  2. Voer in het nieuwe verbindingsscherm het volgende in:
    • Gebruikersnaam: root
    • Host: <connection-name>

Verbinding maken met behulp van terminal

ssh <connection-name>

Open projecten

Standaard wordt de opdracht databricks ssh connect geopend in een tijdelijke map. Als u toegang wilt krijgen tot werkruimtebestanden, gaat u vanuit de IDE of terminal naar uw werkruimtemap:

  • Kies in Visual Studio Code of Cursor in het Opdrachtpalet (Cmd/Ctrl+Shift+P) Map openen en navigeer naar /Workspace/Users/<your-username>.
  • Wijzig uw map vanuit een terminalvenster: cd /Workspace/Users/<your-username>.

Opmerking

Bestanden in /Workspace, /Volumesen /dbfs blijven behouden tijdens het opnieuw opstarten van het cluster. Bestanden in /home, /rooten andere lokale paden zijn kortstondig en verloren bij opnieuw opstarten.

Run-code (Visual Studio Code of Cursor)

Als u code wilt uitvoeren met behulp van de SSH-tunnel, moet de virtuele Databricks-omgeving worden ingesteld. Deze omgeving omvat alle ingebouwde DBR-bibliotheken en compute-geïscopeerde bibliotheken.

  1. Open het opdrachtenpalet (Cmd/Ctrl+Shift+P) en selecteer Python: Interpreter selecteren.

  2. Selecteer de pythonEnv-xxx virtuele omgeving in de lijst. Als dit niet wordt weergegeven:

    1. Uitvoeren echo $DATABRICKS_VIRTUAL_ENV vanuit een terminal in de IDE.

      Voorbeelduitvoer: /local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python

    2. Plak de volledige uitvoer als interpreterpad in de prompt Python: Select Interpreter.

  3. Open een nieuwe terminal en de virtuele omgeving moet automatisch worden geactiveerd.

  4. Als u een Jupyter-notebook wilt uitvoeren, moet u ervoor zorgen dat de virtuele omgeving is geselecteerd als de kernel. Klik op Kernel selecteren in de rechterbovenhoek van het notitieblok.

Voer Python-bestanden en .ipynb notebooks uit en debug deze met de standaardextensies voor Python en Jupyter.

Als u Spark wilt gebruiken in een Python-bestand op serverloze compute, initialiseert u een sessie expliciet:

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

Python-afhankelijkheden beheren

Beheer Python-afhankelijkheden globaal op clusterniveau of, met notebooks, beperkt tot afzonderlijke projecten.

Installeer afhankelijkheden via de gebruikersinterface van de werkruimte onder Compute-bibliotheken>. Deze blijven behouden tijdens het opnieuw opstarten van het cluster en zijn beschikbaar in pythonEnv-xxx. Zie Clusterbibliotheken.

Project-specifieke notebookinstelling

Voer voor projectafhankelijkheden een notebook met %pip install opdrachten uit aan het begin van elke sessie:

# 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 opdrachten bevatten Databricks-specifieke kaders en propageren afhankelijkheden naar Spark-uitvoerknooppunten. Dit maakt door de gebruiker gedefinieerde functies (UDF's) mogelijk met aangepaste afhankelijkheden.

Zie Bibliotheken beheren met %pip opdrachten voor meer voorbeelden.

U hoeft het notebook niet opnieuw uit te voeren als de sessie binnen tien minuten opnieuw verbinding maakt. Dit kan worden geconfigureerd in uw SSH-configuratie met -shutdown-delay.

Opmerking

Meerdere SSH-sessies in hetzelfde cluster delen één virtuele omgeving.

Beperkingen

De SSH-tunnel van Databricks heeft de volgende beperkingen:

  • Gedeelde clusters worden niet ondersteund.
  • De Databricks-extensie voor Visual Studio Code en de SSH-tunnel zijn nog niet compatibel en mogen niet samen worden gebruikt.
  • Bestanden die buiten /Workspace, /Volumes en /dbfs zijn bewerkt, gaan verloren bij het opnieuw opstarten van het cluster.
  • Er zijn maximaal 10 SSH-verbindingen per cluster toegestaan.
  • Inactieve sessies kunnen na 1 uur afnemen.
  • De SSH-tunnel kan niet worden gestart vanuit andere externe omgevingen of Docker-containers.
  • Er kunnen prestatie- of verbindingsproblemen optreden wanneer drie of meer Jupyter-notebooks gelijktijdig zijn geopend. Deze beperking wordt in een toekomstige release opgelost.

Verschillen tussen Databricks Notebooks

Er zijn enkele verschillen in notebooks bij het gebruik van de SSH-tunnel:

  • Python-bestanden definiëren geen globals van Databricks (zoals spark of dbutils). U moet ze expliciet importeren met from databricks.sdk.runtime import spark.
  • Voor ipynb-notebooks zijn deze functies beschikbaar:
    • Databricks globals: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql magic-opdracht om SQL-cellen uit te voeren

Werken met Python-bron 'notebooks':

  • Zoek naar jupyter.interactiveWindow.cellMarker.codeRegex en stel dit in op:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Zoek naar jupyter.interactiveWindow.cellMarker.default en stel dit in op:

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

Probleemoplossingsproces

Deze sectie bevat informatie over het oplossen van veelvoorkomende problemen.

SSH-verbinding mislukt of er treedt een time-out op

  • Controleer of het cluster draait in de UI van de werkruimte.
  • Controleer of uitgaande poort 22 is geopend en toegestaan op uw laptop, netwerk en VPN.
  • Verhoog de SSH-time-out. Zie Verbinding maken met Visual Studio Code of Cursor.
  • Voor sleutelafstemmingsfouten, verwijder ~/.databricks/ssh-tunnel-keys en voer databricks ssh setup opnieuw uit.
  • Controleer bij fouten met de melding 'verandering van externe hostidentificatie' het ~/.ssh/known_hosts-bestand en verwijder vermeldingen die betrekking hebben op uw cluster.
  • SSH-sessies kunnen na 1 uur afnemen en er kunnen maximaal 10 SSH-verbindingen naar één cluster worden gemaakt. Zie Beperkingen.

Kan de opdracht code niet vinden

Als u het opdrachtpalet (Error: exec: "code": executable file not found in $PATH) ziet, selecteert u Shell Command: Installeer de opdracht 'code' in PATH en start u de IDE- of terminalsessie opnieuw.

CLI-verificatiefouten

  • Controleer of uw Databricks CLI-profiel geldig is met behulp van databricks auth login.
  • Controleer of u machtigingen hebt CAN MANAGE voor het cluster.

Mijn code werkt niet

Bestanden verdwijnen of de omgeving wordt opnieuw ingesteld nadat het cluster opnieuw is opgestart

  • Bestanden in /Workspace, /Volumes en /dbfs mounts blijven behouden tijdens het opnieuw opstarten van het cluster. Bestanden in /home, /rooten andere lokale paden zijn kortstondig en verloren bij opnieuw opstarten.
  • Gebruik clusterbibliotheekbeheer voor permanente afhankelijkheden. Automatiseer indien nodig opnieuw installeren met behulp van init-scripts. Zie Wat zijn init-scripts?

SSH-installatie mislukt op Windows (WSL)

Voer databricks ssh setup rechtstreeks uit op Windows, niet in WSL. Het Windows Visual Studio Code exemplaar kan geen SSH-configuraties vinden die aan de WSL-zijde zijn gemaakt.

Veelgestelde vragen

Hoe verschilt de SSH-tunnel van Databricks Connect?

Met Databricks Connect kunt u code schrijven met behulp van Spark-API's en deze op afstand uitvoeren op Databricks Compute in plaats van in de lokale Spark-sessie. De Databricks Visual Studio Code-extensie maakt gebruik van Databricks Connect om ingebouwde foutopsporing van gebruikerscode op Databricks te bieden.

Met de SSH-tunnel hebt u toegang tot de werkruimte vanuit uw IDE en kunt u uw volledige ontwikkelomgeving verplaatsen naar de berekening, Python, kernel en alle uitvoeringen worden uitgevoerd op Databricks met volledige toegang tot rekenresources.

Hoe worden mijn code en gegevens beveiligd?

Alle code wordt uitgevoerd binnen uw Databricks-cloud-VPC. Er blijven geen gegevens of code achter in uw beveiligde omgeving. SSH-verkeer is volledig versleuteld.

Welke IDE's worden ondersteund?

Visual Studio Code en Cursor worden officieel ondersteund. Elke IDE met SSH-mogelijkheden is compatibel, maar alleen VS Code en Cursor worden getest.

Zijn alle Databricks-notebookfuncties beschikbaar via de IDE?

Sommige functies, zoals display(), dbutilsen %sql zijn beschikbaar met beperkingen of handmatige installatie. Zie de verschillen in Databricks Notebooks.

Wordt mijn cluster automatisch gestart wanneer ik verbinding maak met behulp van de SSH-tunnel?

Ja, maar als het langer duurt om het cluster te starten dan de time-out voor de verbinding, mislukt de verbindingspoging. Om dit te voorkomen, verhoogt u de waarde van Remote.SSH: Connect Timeout vanuit het opdrachtpalet (of remote.SSH.connectTimeout in settings.json) om de kans op time-outfouten verder te verminderen.

Hoe weet ik of mijn cluster draait?

Navigeer naar Compute in de gebruikersinterface van de Databricks-werkruimte en controleer de status van het cluster. Het cluster moet Running weergeven voordat de SSH-verbinding werkt.

Hoe verbreek ik de verbinding met mijn SSH/IDE-sessie?

U kunt een sessie verbreken door het IDE-venster te sluiten met behulp van de optie Verbinding verbreken in uw IDE, uw SSH-terminal te sluiten of de exit opdracht uit te voeren in de terminal.

Hoe stop ik het cluster en vermijd ik kosten wanneer ik niet werk?

Als u het cluster onmiddellijk wilt stoppen, beëindigt u het cluster vanuit de gebruikersinterface van de werkruimte. Navigeer naar Compute in de gebruikersinterface van de Databricks-werkruimte, zoek uw cluster en klik op Beëindigen of Stoppen.

Stel een kort beleid voor automatische beëindiging in op uw cluster vanuit de gebruikersinterface van de werkruimte. Nadat u de verbinding hebt verbroken, wacht de SSH-server op de shutdown-delay periode (standaard: 10 minuten), waarna de time-out voor inactiviteit van het cluster van toepassing is.

Hoe kan ik permanente afhankelijkheden verwerken?

Afhankelijkheden die tijdens een sessie zijn geïnstalleerd, gaan verloren nadat het cluster opnieuw is opgestart. Gebruik permanente opslag (/Workspace/Users/<your-username>) voor vereisten en installatiescripts. Gebruik clusterbibliotheken of init-scripts voor automatisering.

Welke verificatiemethoden worden ondersteund?

Verificatie maakt gebruik van de Databricks CLI en uw ~/.databrickscfg profielbestand. SSH-sleutels worden beheerd door de SSH-tunnel.

Kan ik verbinding maken met externe databases of services vanuit het cluster?

Ja, zolang uw clusternetwerken uitgaande verbindingen toestaat en u over de benodigde bibliotheken beschikt.

Kan ik extra IDE-extensies gebruiken?

De meeste extensies werken wanneer ze zijn geïnstalleerd in uw externe SSH-sessie, afhankelijk van uw IDE en cluster. Visual Studio Code installeert standaard geen lokale extensies op externe hosts. U kunt ze handmatig installeren door het deelvenster extensies te openen en uw lokale extensies in te schakelen op de externe host. U kunt Visual Studio Code ook zo configureren dat bepaalde extensies altijd extern worden geïnstalleerd. Zie Verbinding maken met Databricks.

Ja, maar werkruimtebeheerders moeten URL's van Visual Studio Code en Cursor-extensie-marketplaces toestaan. Uw lokale computer moet ook toegang hebben tot internet.