Megosztás:


Databricks SSH-alagút

Fontos

A Databricks SSH-alagút bétaverzióban található.

A Databricks SSH-alagút lehetővé teszi az IDE csatlakoztatását a Databricks-számításhoz. Egyszerűen beállítható, lehetővé teszi a kód interaktív futtatását és hibakeresését a fürtön, csökkenti a környezet eltéréseit, és minden kódot és adatot biztonságosan tart a Databricks-munkaterületen.

Requirements

Az SSH-alagút használatához a következőnek kell lennie:

  • A Databricks CLI 0.269-es vagy újabb verziója telepítve van a helyi gépen és a hitelesítés konfigurálva. Lásd Telepítés.
  • Számításokat végezhet a Databricks-munkaterületén a dedikált (egyfelhasználós) hozzáférési módban. Lásd a dedikált számítási áttekintést.
    • A számításnak a Databricks Runtime 17.0-s vagy újabb verzióját kell használnia.
    • A Unity-katalógust engedélyezni kell.
    • Ha létezik számítási szabályzat, nem tilthatja meg a feladatok végrehajtását.

Az SSH-alagút beállítása

Először állítsa be az SSH-alagutat a databricks ssh setup parancs segítségével. Cserélje le a(z) <connection-name> kifejezést az alagút nevére, például a(z) my-tunnel kifejezésre.

databricks ssh setup --name <connection-name>

A parancssori felület arra kéri, hogy válasszon egy fürtöt, vagy megadhat egy fürt azonosító az --cluster <cluster-id> paraméter átadásával.

Megjegyzés:

Az IntelliJ esetében a Databricks azt javasolja, hogy szerepeljen –-auto-start-cluster=false a beállítási parancsban. A JetBrains IDE indítása automatikusan elindítja az összes fürtöt, ami nem tervezett számítási költségeket eredményezhet. Ha ezt a beállítást választja, el kell indítania a fürtöt a munkaterületen az SSH-alagút elindításához.

Csatlakozás a Databrickshez

Ezután csatlakozzon a Databrickshez egy IDE-t vagy terminált használva.

Csatlakozás a Visual Studio Code vagy a Kurzor használatával

  1. Visual Studio Code esetén telepítse a távoli SSH-bővítményt. A kurzor egy távoli SSH-bővítményt tartalmaz.

  2. Az IDE főmenüjében kattintson aParancskatalógus>. Válassza a Remote-SSH: Settings (Távoli SSH: Beállítások) lehetőséget. Másik lehetőségként válassza a Beállítások: Felhasználói beállítások megnyitása (JSON) lehetőséget a közvetlen módosításhoz settings.json .

  3. A Remote.SSH: Default Extensions (vagy remote.SSH.defaultExtensions a settings.json), hozzáad ms-Python.Python és ms-toolsai.jupyter.

    Ha módosítja a következőt settings.json:

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

    Megjegyzés:

    Ha szeretné, növelje a Remote.SSH: Connect Timeout (vagy remote.SSH.connectTimeout in settings.json) értékét az időtúllépési hibák esélyének további csökkentése érdekében. Az alapértelmezett időtúllépés 360 másodperc.

  4. A parancskatalógusban válassza a Remote-SSH: Csatlakozás gazdagéphez lehetőséget.

  5. A legördülő menüben válassza ki az első lépésben beállított alagutat. Az IDE egy új ablakban folytatja a csatlakozást.

    Megjegyzés:

    Ha a számítási erőforrás nem fut, akkor elindítjuk. Ha azonban a számítás indításának időtúllépése hosszabb időt vesz igénybe, az SSH-kapcsolati kísérlet meghiúsul.

  6. Válassza ki a linuxot , amikor a rendszer kéri a kiszolgáló típusát.

Csatlakozás IntelliJ IDE-k használatával

  1. A beállításhoz kövesse a távoli fejlesztési oktatóanyagot .

  2. Az új kapcsolati képernyőn adja meg a következőket:

    Felhasználónév: rootGazdagép:<connection-name>

Csatlakozás terminállal

Ha a Databrickshez szeretne csatlakozni a parancssorból, adja meg a ssh parancsnak a kapcsolat nevét, például:

ssh my-tunnel

Projektek megnyitása

  1. A kezdeti kapcsolat megnyit egy üres IDE-ablakot anélkül, hogy bármilyen mappa meg lenne nyitva. A Visual Studio Code-ban a ParancskatalógusMappa megnyitása parancsával nyissa meg a kívánt projektet.
  2. Használja a munkaterület csatolást (/Workspace/Users/<your-username>) az állandó tároláshoz.

Kód futtatása (Visual Studio Code)

  • Ha megnyit egy Python-projektet, a Python-bővítmény automatikusan észleli a virtuális környezeteket, de továbbra is manuálisan kell aktiválnia a megfelelőt. Válassza ki az Értelmező parancsot a Parancskatalógusból, és válassza ki a környezetet pythonEnv-xxx. Ez hozzáféréssel rendelkezik az összes beépített Databricks Runtime könyvtárhoz, vagy bármihez, amit globálisan telepített a fürtre.
  • Bizonyos esetekben a Python-bővítmény nem képes automatikusan észlelni a virtuális környezeteket (venvpéldául amikor olyan mappát nyit meg, amely nem ismerhető fel Python-projektként). A probléma megoldásához nyisson meg egy terminált, és hajtsa végre echo $DATABRICKS_VIRTUAL_ENV, majd másolja ki az elérési utat, és használja a Python: Értelmező kiválasztása parancsban.

A venv kiválasztása után a Python-fájlok vagy jegyzetfüzetek a Python- vagy Jupyter-bővítmények által biztosított normál futtatási vagy hibakeresési műveletekkel végrehajthatók.

Python-függőségek kezelése

A szükséges függőségek telepítésének legegyszerűbb módja a munkaterület felhasználói felületének használata. Lásd Számítási hatókörű könyvtárak. Ezzel a módszerrel globálisan telepít függőségeket a fürt számára. Nem kell újratelepítenie a könyvtárakat, valahányszor a fürt újraindul.

Egy adott projektre hatókörrel rendelkező programozottabb beállításhoz azonban használjon jegyzetfüzet-hatókörű telepítést.

Projektspecifikus beállítási jegyzetfüzet

Egy adott projekt függőségeinek kezelése:

  1. Hozzon létre egy setup.ipynb fájlt a projektben.

  2. Az ssh CLI létrehoz egy Python-környezetet (pythonEnv-xxx), amely már rendelkezik beépített Databricks-futtatókörnyezeti kódtárakkal vagy számítási hatókörű kódtárakkal. Csatolja a jegyzetfüzetet ehhez a pythonEnv-xxx környezethez.

  3. A függőségek telepítéséhez használjon %pip install parancsokat:

    • %pip install . ha van pyproject.toml (%pip install .<group> szűkítésére)
    • %pip install -r dependencies.txt ha rendelkezik dependencies.txt
    • %pip install /Volumes/your/wheel.whl (vagy /Workspace útvonalak), ha egyéni könyvtárat készített és töltött fel wheelként.

    %pip Ezek a parancsok Databricks-specifikus logikával rendelkeznek további biztonsági védelmi elemekkel. A logika azt is biztosítja, hogy a függőségek minden Spark-végrehajtó csomópont számára elérhetők legyenek, nem csak a csatlakoztatott illesztőprogram-csomópont számára. Ez egyéni függőségekkel rendelkező, felhasználó által definiált függvényeket (UDF-eket) tesz lehetővé.

    További használati példákért lásd: Kódtárak kezelése parancsokkal%pip.

Futtassa ezt a jegyzetfüzetet minden alkalommal, amikor új ssh-munkamenetet hoz létre. Nem kell újratelepítenie a függőségeket, ha egy meglévő ssh-munkamenet megszakad, de 10 percen belül vissza tud kapcsolódni a fürtre. (Az idő a helyi ssh-konfiguráció beállításával -shutdown-delay=10m konfigurálható.)

Megjegyzés:

Ha egyszerre több ssh-munkamenet is csatlakozik azonos fürthöz, ugyanazt a virtuális környezetet használják.

Korlátozások

A Databricks SSH-alagútra a következő korlátozások vonatkoznak:

  • A Visual Studio Code Databricks-bővítménye és a Databricks SSH-alagút még nem kompatibilis, és nem használható együtt.
  • A Git CLI- és IDE Git-integrációk nem ismerik fel Git-repositoryként a Databricks munkaterületének felhasználói felületén a munkaterületen létrehozott Git-mappákat, mivel ezek a mappák nem rendelkeznek .git metaadatokkal. Ennek megkerüléséhez lásd: Hogyan használhatom a Gitet az SSH-alagúttal?.
  • A fürthöz csatlakozó otthoni és gyökércsatlakozások rövid élettartamúak. A fürt tartalma nem őrződik meg a fürt újraindításakor.

A Databricks Notebooks különbségei

Az SSH-alagút használatakor a jegyzetfüzetek között van néhány különbség:

  • A Python-fájlok nem definiálnak Databricks-globálisokat (például spark vagy dbutils). Ezeket explicit módon kell importálnia a .-val from databricks.sdk.runtime import spark.
  • Az ipynb-jegyzetfüzetek esetében az alábbi funkciók érhetők el:
    • Databricks globals: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql varázsutasítás SQL cellák végrehajtásához

Python-forrás "jegyzetfüzetek" használata:

  • Keresse meg jupyter.interactiveWindow.cellMarker.codeRegex és állítsa be a következőre:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Keresse meg jupyter.interactiveWindow.cellMarker.default és állítsa be a következőre:

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

Hibaelhárítás

Ez a szakasz a gyakori problémák megoldásával kapcsolatos információkat tartalmaz.

Az SSH-kapcsolat meghiúsul vagy túllépi az időkorlátot

  • Győződjön meg arról, hogy a fürt fut a Databricks felhasználói felületén, és nem csak leállt vagy elindult.
  • Ellenőrizze, hogy a 22-es kimenő port nyitva van és engedélyezett a laptopon/hálózaton/VPN-en.
  • Állítsa magasabbra az SSH-csatlakozás időtúllépését az IDE-ben. Lásd: Csatlakozás a Visual Studio Code vagy a Kurzor használatával.
  • Ha a nyilvános vagy titkos kulcsok eltérési hibáit tapasztalja, próbálja meg törölni a ~/.databricks/ssh-tunnel-keys mappát.
  • Ha megjelenik az "A távoli gazdagép azonosítása megváltozott" hibaüzenet, ellenőrizze a ~/.ssh/known_hosts fájlt, és törölje a fürtjéhez kapcsolódó bejegyzéseket.
  • Ha az SSH-munkamenet 1 óra elteltével megszakad, ez egy ismert korlátozás. Lásd: Korlátozások.
  • Egyetlen fürthöz legfeljebb 10 ssh-kapcsolat engedélyezett.

CLI-hitelesítési hibák

  • Győződjön meg arról, hogy a Databricks CLI-profil érvényes és hitelesített (databricks auth login).
  • Győződjön meg arról, hogy megfelelő klaszterengedélyekkel rendelkezik, például CAN MANAGE.

A fájlok eltűnnek, vagy a környezet visszaáll az alapértelmezett állapotba a fürt újraindítása után

  • Csak a /Workspace, /Volumes és /dbfs csatolások állandóak. Az összes adat a /home, /root stb. elemekben törlődik az újraindítás után.
  • Klaszter könyvtárkezelés használata tartós függőségekhez. Szükség esetén init-szkriptekkel automatizálhatja az újratelepítéseket. Lásd: Mik azok az init szkriptek?.

"Nem git-adattár" hiba vagy hiányzó git-funkciók az IDE-ben

A Git csak akkor működik, ha a /Workspace/Users/<your-username>-t a terminált használva klónozza. A webre létrehozott mappák nem rendelkeznek .git metaadatokkal. Lásd : Hogyan használhatom a Gitet az SSH-alagúttal?.

A kód nem működik

  • Győződjön meg arról, hogy a megfelelő Python-értelmezőt választja, amely hozzáfér az összes Databricks Runtime-függőséghez.
    • Ha megnyit egy Python-projektet, a Python-bővítmény automatikusan észleli a virtuális környezeteket, de továbbra is manuálisan kell aktiválnia a megfelelőt. Hajtsa végre a(z) Python: Az Értelmező kiválasztása parancsot, majd válassza ki a pythonEnv-xxx környezetet. Hozzáfér az összes beépített Databricks Runtime-kódtárhoz, vagy bármihez, amit globálisan telepített a klaszterre.
    • Bizonyos esetekben a Python-bővítmény nem képes automatikusan észlelni a virtuális környezeteket, például amikor olyan mappát nyit meg, amely nem ismerhető fel Python-projektként. Megnyithat egy terminált, és végrehajthatja echo $DATABRICKS_VIRTUAL_ENV, majd kimásolhatja az elérési utat, és használhatja a Python: Értelmező kiválasztása parancsban.
  • Az IPYNB-jegyzetfüzetek és *.py a Databricks-jegyzetfüzetek hozzáférnek a Databricks globális fájljaihoz, a Python-fájlok *.py azonban nem. Lásd a Databricks-jegyzetfüzetek eltéréseit.

Nem lehet ssh-kapcsolatot beállítani windowson a WSL alatt

A Databricks azt javasolja, hogy közvetlenül Windows rendszeren végezze el az ssh-beállításokat. Ha a WSL oldalán állítja be, de a Visual Studio Code Windows-verzióját használja, nem találja a szükséges ssh-konfigurációkat.

GYIK

Hogyan védik a kódot és az adatokat?

Minden kód a Databricks felhőbeli virtuális magánfelhőben (VPC) fut. Egyetlen adat vagy kód sem hagyhatja el a biztonságos környezetet. Az SSH-forgalom teljes mértékben titkosítva van.

Mely fejlesztői környezetek támogatottak?

A Visual Studio Code és a Kurzor hivatalosan támogatott, de a Databricks SSH-alagút kompatibilis bármely IDE-vel, amely SSH-képességekkel rendelkezik.

Minden Databricks-jegyzetfüzet-funkció elérhető az IDE-ből?

Néhány funkció, például display()a , dbutilsés %sql korlátozásokkal vagy manuális beállítással érhető el. Lásd a Databricks-jegyzetfüzetek eltéréseit.

Egyszerre több felhasználó is fejleszthet ugyanazon a fürtön?

Nem.

Elindul automatikusan a klaszter, amikor SSH-alagúton keresztül csatlakozom?

Igen, de ha a fürt elindítása hosszabb időt vesz igénybe, mint a csatlakozási időkorlát, a csatlakozási kísérlet meghiúsul.

Honnan tudhatom, hogy fut-e a fürt?

Lépjen a Databricks-munkaterület felhasználói felületén található Compute elemre, és ellenőrizze a fürt állapotát. A fürtnek a Futás állapotot kell mutatnia ahhoz, hogy az SSH-alagútkapcsolatok működjenek.

Hogyan lehet leválasztani az SSH-/IDE-munkamenetet?

A munkameneteket az IDE-ablak bezárásával, az IDE Leválasztás lehetőségével, az SSH-terminál bezárásával vagy a exit parancs terminálon való futtatásával szakíthatja meg.

Az SSH leválasztása automatikusan leállítja a fürtöt?

Nem, az ssh-kiszolgáló konfigurálható leállítási késleltetéssel rendelkezik, és egy meghatározott ideig továbbra is fut a háttérben (alapértelmezés szerint 10 m, módosítható az ssh config ProxyCommand beállításban a módosítási -shutdown-delay beállítással). Az időtúllépés után a kiszolgáló leáll, ami elindítja a fürt tétlen időtúllépését (amelyet a fürt létrehozásakor konfigurál).

Hogyan állíthatom le a klasztert a felesleges költségek elkerülése érdekében?

Lépjen a Databricks-munkaterület felhasználói felületén a Számítás elemre, keresse meg a fürtöt, és kattintson a Leállítás vagy Szolgáltatás megszüntetése gombra.

Hogyan kezeljem az állandó függőségeket?

A munkamenet során telepített függőségek elvesznek a fürt újraindítása után. Használjon állandó tárterületet (/Workspace/Users/<your-username>) a követelményekhez és a beállítási szkriptekhez. Klaszterkönyvtárak vagy init-szkriptek használata automatizáláshoz.

Milyen hitelesítési módszerek támogatottak?

A hitelesítés a Databricks CLI-t és a profilokat tartalmazó fájlt ~/.databrickscfg használja. Az SSH-kulcsokat a Databrick SSH-alagút kezeli.

Csatlakozhatok külső adatbázisokhoz vagy szolgáltatásokhoz a fürtből?

Igen, mindaddig, amíg a fürt hálózatkezelése engedélyezi a kimenő kapcsolatokat, és megvannak a szükséges könyvtárak.

Használhatok további IDE-bővítményeket?

A legtöbb bővítmény akkor működik, ha telepítve van egy távoli SSH munkamenetre, az IDE-től és a környezettől függően. A Visual Studio Code alapértelmezés szerint nem telepíti a helyi bővítményeket távoli gazdagépekre. A bővítmények manuális telepítéséhez nyissa meg a bővítmények panelt, és engedélyezze a helyi bővítményeket a távoli gazdagépen. A Visual Studio Code-ot úgy is konfigurálhatja, hogy mindig távolról telepítsen bizonyos bővítményeket. Lásd: Csatlakozás a Databrickshez.

Hogyan használhatom a Gitet az SSH-alagúttal?

A Databricks munkaterület felhasználói felületén létrehozott Git-mappák jelenleg nem ismerhetők fel git-adattárként a fejlesztői környezetekben. Ennek megkerüléséhez klónozza az adattárakat az SSH-munkamenet git parancssori felületének használatával az állandó munkaterület mappájába:

  1. Nyisson meg egy terminált, és keresse meg a kívánt szülőkönyvtárat (például cd /Workspace/Users/<your-username>)
  2. Klónozza az adattárat abban a könyvtárban.
  3. A Visual Studio Code-ban nyissa meg ezt a mappát egy új ablakban úgy, hogy a felhasználói felületen futtatja code <repo-name> vagy megnyitja a mappát egy új ablakban.