Aracılığıyla paylaş


Databricks SSH tüneli

Önemli

Databricks SSH tüneli Beta sürümündedir.

Databricks SSH tüneli, IDE'nizi Databricks işlemininize bağlamanıza olanak tanır. Kurulumu kolaydır, kümede kodu etkileşimli olarak çalıştırmanıza ve hata ayıklamanıza olanak tanır, ortam uyuşmazlıklarını azaltır ve Databricks çalışma alanınızda tüm kod ve verilerin güvenliğini sağlar.

Gereksinimler

SSH tünelini kullanmak için aşağıdakilere sahip olmanız gerekir:

  • Databricks CLI sürüm 0.269 veya üzeri yerel makinenizde yüklü ve kimlik doğrulaması yapılandırılmış. Bkz. Yükleme.
  • Ayrılmış (tek kullanıcı) erişim moduyla Databricks çalışma alanınızda işlem yapın. Bkz . Ayrılmış işlem genel bakışı.
    • İşlem Databricks Runtime 17.0 ve üzerini kullanıyor olmalıdır.
    • Unity Kataloğu etkinleştirilmelidir.
    • Bir hesaplama ilkesi varsa, işlerin yürütülmesine engel olmamalıdır.

SSH tünelini ayarlama

İlk olarak , databricks ssh kurulum komutunu kullanarak SSH tünelini ayarlayın. değerini tünelin adıyla değiştirin <connection-name> , örneğin, my-tunnel.

databricks ssh setup --name <connection-name>

CLI sizden bir küme seçmenizi ister veya --cluster <cluster-id> belirterek bir küme kimliği sağlayabilirsiniz.

Uyarı

Databricks, IntelliJ için kurulum komutuna eklemenizi –-auto-start-cluster=false önerir. JetBrains IDE'nin başlatılması tüm kümeleri otomatik olarak başlatır ve bu da istenmeyen işlem maliyetlerine neden olabilir. Bu seçeneği ayarlarsanız, SSH tünelini başlatmak için kümeyi çalışma alanında başlatmanız gerekir.

Databricks'e bağlanma

Ardından, IDE veya terminal kullanarak Databricks'e bağlanın.

Visual Studio Code veya İmleç kullanarak bağlanma

  1. Visual Studio Code için Uzak SSH uzantısını yükleyin. İmleç uzak bir SSH uzantısı içerir.

  2. IDE ana menüsündeKomut Paletini> tıklayın. Uzak-SSH: Ayarlar'ı seçin. Alternatif olarak, Tercihler: Kullanıcı Ayarları'nı (JSON) açın seçeneğini seçerek doğrudan settings.json değiştirebilirsiniz.

  3. Remote.SSH: Varsayılan Uzantılar (veya remote.SSH.defaultExtensions içinde settings.json), ms-Python.Python ve ms-toolsai.jupyter ekleyin.

    Eğer settings.json değiştiriyorsanız:

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

    Uyarı

    İsteğe bağlı olarak, zaman aşımı hatalarının olasılığını daha da azaltmak için Remote.SSH: Connect Timeout (veya remote.SSH.connectTimeout içinde settings.json) değerini artırın. Varsayılan zaman aşımı 360'tır.

  4. Komut Paleti'nde Uzak SSH: Konağa Bağlan'ı seçin.

  5. Açılan listeden, ilk adımda ayarladığınız tüneli seçin. IDE yeni bir pencerede bağlanmaya devam eder.

    Uyarı

    İşlem çalışmıyorsa başlatılır. Ancak işlemin başlatılması zaman aşımından uzun sürerse SSH bağlantı girişimi başarısız olur.

  6. Sunucu türü istendiğinde linux'u seçin.

IntelliJ IDE'lerini kullanarak bağlanma

  1. Ayarlamak için Uzaktan geliştirme öğreticisini izleyin.

  2. Yeni bağlantı ekranında aşağıdakileri girin:

    Kullanıcı adı: rootKonak:<connection-name>

Terminal kullanarak bağlanma

Komut satırından Databricks'e bağlanmak için komutuna ssh bağlantınızın adını girin, örneğin:

ssh my-tunnel

Projeleri açma

  1. İlk bağlantı, açık klasör olmadan boş bir IDE penceresi açar. Visual Studio Code'da, istenen projeyi açmak için Komut paletindekiKlasör Aç komutunu kullanın.
  2. Kalıcı depolama için çalışma alanı bağlamasını (/Workspace/Users/<your-username>) kullanın.

Kod çalıştırma (Visual Studio Code)

  • Python projesini açarsanız Python uzantısı sanal ortamları otomatik olarak algılayabilir ancak yine de doğru ortamı el ile etkinleştirmeniz gerekir. Komut paletindenYorumlayıcı komutunu seçin ve ortamını pythonEnv-xxxseçin. Bunun tüm yerleşik Databricks Runtime kitaplıklarına veya kümeye genel olarak yüklediğiniz herhangi bir şeye erişimi vardır.
  • Bazı durumlarda Python uzantısı, Python projesi olarak tanınmayan bir klasörü açtığınızda olduğu gibi sanal ortamları (venv ) otomatik olarak algılayamaz. Bunu düzeltmek için bir terminal açın ve komutunu yürüterek echo $DATABRICKS_VIRTUAL_ENVyolu kopyalayın ve Python: Yorumlayıcı Seç komutunda kullanın.

Venv seçildikten sonra Python dosyaları veya not defterleri, Python veya Jupyter uzantıları tarafından sağlanan normal çalıştırma veya hata ayıklama eylemleriyle yürütülebilir.

Python bağımlılıklarını yönetme

Gerekli bağımlılıkları yüklemenin en basit yolu çalışma alanı kullanıcı arabirimini kullanmaktır. Bkz. İşlem kapsamlı kütüphaneler. Bu yaklaşımla, küme için genel olarak bağımlılıkları yüklersiniz. Küme her yeniden başlatıldığında kitaplıkları yeniden yüklemeniz gerekmez.

Ancak, belirli bir proje kapsamında daha programlı bir kurulum için not defteri odaklı bir kurulum kullanın.

Projeye özel kurulum defteri

Belirli bir projenin bağımlılıklarını yönetmek için:

  1. Projenizde bir setup.ipynb dosya oluşturun.

  2. ssh CLI, yerleşik Databricks Runtime kitaplıklarına veya pythonEnv-xxx sahip olan bir Python ortamı () oluşturur. Not defterini bu pythonEnv-xxx ortama ekleyin.

  3. Bağımlılıklarınızı yüklemek için komutları kullanın %pip install :

    • %pip install . pyproject.toml varsa (%pip install .<group> kapsamı daraltmak için)
    • %pip install -r dependencies.txt eğer dependencies.txt varsa
    • %pip install /Volumes/your/wheel.whl (veya /Workspace yollar) bir özel kitaplığı tekerlek olarak oluşturup yüklediyseniz

    %pip komutları, ek koruma mekanizmaları içeren Databricks'e özgü mantığa sahiptir. Mantık ayrıca bağımlılıkların yalnızca bağlı olduğunuz sürücü düğümü için değil tüm Spark yürütücü düğümleri için kullanılabilir olmasını sağlar. Bu, özel bağımlılıklarla kullanıcı tanımlı işlevleri (UDF) etkinleştirir.

    Daha fazla kullanım örneği için bkz. Kitaplıkları komutlarla %pip yönetme.

Her yeni ssh oturumu oluşturduğunuzda bu not defterini çalıştırın. Mevcut bir ssh oturumu kesilirse ve 10 dakikadan kısa bir sürede kümeye yeniden bağlanırsa, bağımlılıkları yeniden yüklemeniz gerekmez. (Saat, yerel ssh yapılandırmanızdaki seçenekle -shutdown-delay=10m yapılandırılabilir.)

Uyarı

Aynı anda aynı kümeye bağlı birden çok ssh oturumlarınız varsa, bunlar aynı sanal ortamı kullanır.

Sınırlamalar

Databricks SSH tüneli aşağıdaki sınırlamalara sahiptir:

  • Visual Studio Code ve Databricks SSH tüneli için Databricks uzantısı henüz uyumlu değildir ve birlikte kullanılmamalıdır.
  • Databricks çalışma alanı kullanıcı arabirimi aracılığıyla çalışma alanınızda oluşturduğunuz herhangi bir Git klasörü git CLI ve IDE git tümleştirmeleri tarafından git deposu olarak tanınmaz çünkü bu klasörlerde .git meta verileri yoktur. Bu sorunu geçici olarak çözmek için bkz. SSH Tüneli ile Git'i nasıl kullanabilirim?.
  • Bağlandığınız kümedeki giriş ve kök bağlamaları kısa ömürlü olur. Küme yeniden başlatıldığında kümedeki içerik korunmaz.

Databricks Not Defteri farklılıkları

SSH tüneli kullanılırken not defterlerinde bazı farklılıklar vardır:

  • Python dosyaları herhangi bir Databricks globali (örneğin spark veya dbutils) tanımlamaz. Bunları from databricks.sdk.runtime import spark ile açıkça içeri aktarmanız gerekir.
  • ipynb not defterleri için şu özellikler kullanılabilir:
    • Databricks genel ayarları: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql SQL hücrelerini çalıştırmak için sihirli komut

Python kaynağı "not defterleri" ile çalışmak için:

  • Öğesini arayın jupyter.interactiveWindow.cellMarker.codeRegex ve şu şekilde ayarlayın:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Öğesini arayın jupyter.interactiveWindow.cellMarker.default ve şu şekilde ayarlayın:

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

Sorun giderme

Bu bölüm, yaygın sorunları çözme hakkında bilgi içerir.

SSH bağlantısı başarısız oluyor veya zaman aşımına uğradı

  • Kümenizin databricks kullanıcı arabiriminde çalıştığından ve yalnızca durdurulmadığından veya başlatılmadığından emin olun.
  • Dizüstü bilgisayarınızda/ağınızda/VPN'nizde giden bağlantı noktası 22'nin açık olup olmadığını ve izin verilip verilmediğinden emin olun.
  • IDE'nizde SSH bağlantı zaman aşımını artırın. Bkz. Visual Studio Code veya İmleç kullanarak bağlanma.
  • Özel veya ortak anahtar uyuşmazlık hataları görürseniz ~/.databricks/ssh-tunnel-keys klasörünü silmeyi deneyin.
  • Uzak ana bilgisayar tanımlaması değişti hataları görürseniz ~/.ssh/known_hosts dosyasını kontrol edin ve kümenizle ilgili girişleri silin.
  • SSH oturumu 1 saat sonra bırakılırsa, bu bilinen bir sınırlamadır. Bkz. Sınırlamalar.
  • Tek bir kümeye en fazla 10 ssh bağlantısına izin verilmez.

CLI kimlik doğrulaması hataları

  • Databricks CLI profilinizin geçerli ve kimliği doğrulanmış (databricks auth login) olduğunu onaylayın.
  • gibi CAN MANAGEuygun küme izinlerine sahip olduğunuzdan emin olun.

Küme yeniden başlatıldıktan sonra dosyalar kaybolur veya ortam sıfırlanır

  • Yalnızca /Workspace, /Volumesve /dbfs bağlamaları kalıcıdır. , /homevb. içindeki /roottüm veriler yeniden başlatıldıktan sonra silinir.
  • Kalıcı bağımlılıklar için küme kitaplığı yönetimini kullanın. Gerekirse init betiklerini kullanarak yeniden yüklemeleri otomatikleştirin. Bkz. Başlatma betikleri nedir?.

IDE'de "Git deposu değil" hatası veya eksik git özellikleri

Git yalnızca terminali kullanarak /Workspace/Users/<your-username> içine klonlama yaparsanız çalışır. Web'de oluşturulan klasörlerde .git meta verileri yoktur. Bkz. SSH Tüneli ile Git'i nasıl kullanabilirim?.

Kodum çalışmıyor

  • Tüm Databricks Runtime bağımlılıklarına erişimi olan doğru Python yorumlayıcısını seçtiğinizden emin olun.
    • Python projesini açarsanız Python uzantısı sanal ortamları otomatik olarak algılayabilir ancak yine de doğru ortamı el ile etkinleştirmeniz gerekir. Python yürütme: Yorumlayıcı komutunu seçin ve pythonEnv-xxx ortamı'nı seçin. Tüm yerleşik Databricks Runtime kitaplıklarına veya kümeye genel olarak yüklediğiniz her şeye erişebilir.
    • Bazı durumlarda Python uzantısı, Python projesi olarak tanınmayan bir klasörü açtığınızda olduğu gibi sanal ortamları otomatik olarak algılayamaz. Bir terminal açıp komutunu yürütebilir echo $DATABRICKS_VIRTUAL_ENV, ardından yolu kopyalayıp Python: Yorumlayıcı Seç komutunda kullanabilirsiniz .
  • IPYNB not defterleri ve *.py Databricks not defterleri Databricks genel ayarlarına erişebilir, ancak Python *.py dosyalarına erişemez. Bkz. Databricks Not Defterleri farklılıkları.

WSL altındaki pencerelerde ssh bağlantısı kurulamıyor

Databricks doğrudan Windows üzerinde ssh kurulumu gerçekleştirmenizi önerir. WSL tarafında ayarlayıp Visual Studio Code'un Windows sürümünü kullanırsanız gerekli ssh yapılandırmalarını bulamazsınız.

FAQ

Kodum ve verilerim nasıl güvenli hale getirildi?

Tüm kod, Databricks bulut sanal özel bulutunuzda (VPC) çalışır. Hiçbir veri veya kod güvenli ortamınızdan ayrılmaz. SSH trafiği tamamen şifrelenir.

Hangi IDE'ler desteklenir?

Visual Studio Code ve İmleç resmi olarak desteklenir, ancak Databricks SSH tüneli SSH özelliklerine sahip tüm IDE'lerle uyumludur.

Tüm Databricks not defteri özellikleri IDE'den kullanılabilir mi?

, display()ve dbutils gibi %sqlbazı özellikler sınırlamalar veya el ile kurulum ile kullanılabilir. Bkz. Databricks Not Defterleri farklılıkları.

Aynı kümede aynı anda birden çok kullanıcı geliştirilebilir mi?

Hayır.

SSH Tüneli üzerinden bağlandığımda kümem otomatik olarak başlatılacak mı?

Evet, ancak kümenin başlatılması, bağlantı zaman aşımından daha uzun sürerse bağlantı girişimi başarısız olur.

Kümemin çalışıp çalışmadığını nasıl anlarım?

Databricks çalışma alanı kullanıcı arabiriminde İşlem'e gidin ve kümenin durumunu denetleyin. Kümede SSH tünel bağlantılarının çalışması için Çalışıyor gösterilmelidir.

SSH/IDE oturumumu nasıl kesebilirim?

IDE pencerenizi kapatarak, IDE'nizdeki Bağlantıyı Kes seçeneğini kullanarak, SSH terminalinizi kapatarak veya terminalde komutunu çalıştırarak oturumun exit bağlantısını kesebilirsiniz.

SSH bağlantısını kesmek kümemi otomatik olarak durduruyor mu?

Hayır, ssh sunucusunun kapatma gecikme süresi yapılandırılabilir ve belirtilen süre boyunca arka planda çalışmayı sürdürür (varsayılan olarak 10 dakika, ssh yapılandırmasında ProxyCommand seçeneği değiştirilerek ayarlanabilir). Zaman aşımından sonra sunucu sonlandırılır ve küme boşta kalma zaman aşımı başlar (küme oluşturma sırasında yapılandırırsınız).

Gereksiz ücretlerden kaçınmak için kümeyi nasıl durdurabilirim?

Databricks çalışma alanı kullanıcı arabiriminde İşlem'e gidin, kümenizi bulun ve Sonlandır veya Durdur'a tıklayın.

Kalıcı bağımlılıkları nasıl işlemem gerekir?

Bir oturum sırasında yüklenen bağımlılıklar küme yeniden başlatıldıktan sonra kaybolur. Gereksinimler ve kurulum betikleri için kalıcı depolama (/Workspace/Users/<your-username>) kullanın. Otomasyon için küme kitaplıklarını veya başlatma betiklerini kullanın.

Hangi kimlik doğrulama yöntemleri desteklenir?

Kimlik doğrulaması Databricks CLI'sini ve profil dosyanızı ~/.databrickscfg kullanır. SSH anahtarları Databrick SSH tüneli tarafından işlenir.

Kümeden dış veritabanlarına veya hizmetlere bağlanabilir miyim?

Evet, küme ağınız giden bağlantılara izin verdiği ve gerekli kitaplıklara sahip olduğunuz sürece.

Ek IDE uzantıları kullanabilir miyim?

Uzantıların çoğu, IDE'nize ve kümenize bağlı olarak uzak SSH oturumunuz içinde yüklendiğinde çalışır. Visual Studio Code varsayılan olarak uzak konaklara yerel uzantılar yüklemez. Uzantılar panelini açıp uzak konakta yerel uzantılarınızı etkinleştirerek bunları el ile yükleyebilirsiniz. Ayrıca Visual Studio Code'u her zaman belirli uzantıları uzaktan yükleyecek şekilde yapılandırabilirsiniz. Bkz . Databricks'e bağlanma.

SSH Tüneli ile Git'i nasıl kullanabilirim?

Şu anda Databricks çalışma alanı kullanıcı arabirimi kullanılarak oluşturulan Git klasörleri IDE'lerde git depoları olarak tanınmıyor. Bu sorunu çözmek için, SSH oturumunuzdan git CLI kullanarak depoları kalıcı çalışma alanı klasörünüze kopyalayın:

  1. Bir terminal açın ve istenen üst dizine gidin (örneğin, cd /Workspace/Users/<your-username>)
  2. Deponuzu bu dizinde kopyalayın.
  3. Visual Studio Code'da, code <repo-name> komutunu çalıştırarak veya kullanıcı arabirimini kullanarak bu klasörü yeni bir pencerede açın.