Bagikan melalui


Terowongan Databricks SSH

Penting

Terowongan Databricks SSH berada di Beta.

Terowongan Databricks SSH memungkinkan Anda untuk menghubungkan IDE Anda ke komputasi Databricks Anda. Mudah disiapkan, memungkinkan Anda menjalankan dan men-debug kode secara interaktif pada kluster, mengurangi ketidakcocokan lingkungan, dan menjaga semua kode dan data tetap aman dalam ruang kerja Databricks Anda.

Persyaratan

Untuk menggunakan terowongan SSH, Anda harus memiliki:

  • Databricks CLI versi 0.269 atau lebih tinggi telah diinstal pada komputer lokal dan autentikasi Anda telah dikonfigurasi. Lihat Menginstal.
  • Komputasi di ruang kerja Databricks Anda dengan mode akses khusus (pengguna tunggal). Lihat Gambaran umum komputasi khusus.
    • Komputasi harus menggunakan Databricks Runtime 17.0 ke atas.
    • Katalog Unity harus diaktifkan.
    • Jika ada kebijakan komputasi, kebijakan tersebut tidak boleh melarang eksekusi pekerjaan.

Menyiapkan terowongan SSH

Pertama, siapkan terowongan SSH menggunakan perintah databricks ssh konfigurasi. Ganti <connection-name> dengan nama untuk terowongan, misalnya, my-tunnel.

databricks ssh setup --name <connection-name>

CLI meminta Anda untuk memilih kluster, atau Anda dapat memberikan ID kluster dengan meneruskan --cluster <cluster-id>.

Nota

Untuk IntelliJ, Databricks merekomendasikan agar Anda menyertakan –-auto-start-cluster=false dalam perintah penyiapan. Memulai IDE JetBrains secara otomatis memulai semua kluster, yang dapat mengakibatkan biaya komputasi yang tidak diinginkan. Jika Anda mengatur opsi ini, Anda harus memulai kluster di ruang kerja untuk memulai terowongan SSH.

Terhubung ke Databricks

Selanjutnya, sambungkan ke Databricks menggunakan IDE atau terminal.

Menyambungkan menggunakan Visual Studio Code atau Kursor

  1. Untuk Visual Studio Code, instal ekstensi SSH Jarak Jauh. Kursor menyertakan ekstensi SSH jarak jauh.

  2. Di menu utama IDE, klik Tampilkan>Palet Perintah. Pilih Remote-SSH: Pengaturan. Atau, pilih Preferensi: Buka Pengaturan Pengguna (JSON) untuk memodifikasi settings.json secara langsung.

  3. Di bawah Remote.SSH: Ekstensi Default (atau remote.SSH.defaultExtensions di settings.json), tambahkan ms-Python.Python dan ms-toolsai.jupyter.

    Jika Anda memodifikasi settings.json:

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

    Nota

    Secara opsional, tingkatkan nilai Remote.SSH: Connect Timeout (atau remote.SSH.connectTimeout in settings.json) untuk mengurangi kemungkinan kesalahan batas waktu lebih lanjut. Batas waktu default adalah 360.

  4. Di Palet Perintah, pilih Remote-SSH: Sambungkan ke Host.

  5. Dari menu dropdown, pilih terowongan yang Anda siapkan di langkah pertama. IDE melanjutkan untuk terhubung di jendela baru.

    Nota

    Jika komputasi tidak berjalan, komputasi akan dimulai. Namun, jika membutuhkan waktu lebih lama dari waktu habis untuk memulai komputasi, upaya koneksi SSH akan gagal.

  6. Pilih linux saat diminta untuk jenis server.

Menyambungkan menggunakan IDE IntelliJ

  1. Ikuti tutorial pengembangan remote untuk memulai.

  2. Pada layar koneksi baru masukkan yang berikut ini:

    Nama pengguna: rootHost:<connection-name>

Menyambungkan menggunakan terminal

Untuk menyambungkan ke Databricks dari baris perintah, berikan ssh perintah nama koneksi Anda, misalnya:

ssh my-tunnel

Membuka proyek

  1. Koneksi awal membuka jendela IDE kosong tanpa folder yang terbuka. Di Visual Studio Code, gunakan perintah Buka Folder dari palet Perintah untuk membuka proyek yang diinginkan.
  2. Gunakan pemasangan ruang kerja (/Workspace/Users/<your-username>) untuk penyimpanan persisten.

Jalankan kode (Visual Studio Code)

  • Jika Anda membuka proyek Python, ekstensi Python dapat secara otomatis mendeteksi lingkungan virtual, tetapi Anda masih perlu mengaktifkan yang tepat secara manual. Pilih perintah Interpreter dari palet Perintah, dan pilih lingkungan pythonEnv-xxx. Ini memiliki akses ke semua pustaka Databricks Runtime bawaan, atau apa pun yang telah Anda instal secara global pada kluster.
  • Dalam beberapa kasus ekstensi Python tidak dapat secara otomatis mendeteksi lingkungan virtual (venv), seperti ketika Anda membuka folder yang tidak dapat dikenali sebagai proyek Python. Untuk memperbaikinya, buka terminal dan jalankan echo $DATABRICKS_VIRTUAL_ENV, lalu salin jalur dan gunakan di perintah Python: Pilih Interpreter .

Setelah venv dipilih, file atau notebook Python dapat dijalankan dengan tindakan eksekusi atau debug normal yang disediakan oleh ekstensi Python atau Jupyter.

Mengelola dependensi Python

Cara paling sederhana untuk menginstal dependensi yang diperlukan adalah menggunakan UI ruang kerja. Lihat Pustaka cakupan komputasi. Dengan pendekatan ini, Anda menginstal dependensi secara global untuk kluster. Anda tidak perlu menginstal ulang pustaka setiap kali kluster dimulai ulang.

Namun, untuk penyiapan yang lebih berbasis program yang khusus untuk proyek tertentu, gunakan penginstalan dengan cakupan notebook.

Buku catatan penyiapan khusus proyek

Untuk mengelola dependensi untuk proyek tertentu:

  1. Buat setup.ipynb file di proyek Anda.

  2. Ssh CLI membuat lingkungan Python (pythonEnv-xxx), yang sudah memiliki pustaka Databricks Runtime bawaan atau pustaka cakupan komputasi. Lampirkan buku catatan ke lingkungan pythonEnv-xxx ini.

  3. Gunakan %pip install perintah untuk menginstal dependensi Anda:

    • %pip install . jika Anda memiliki pyproject.toml (%pip install .<group> untuk mempersempitnya)
    • %pip install -r dependencies.txt jika Anda memiliki dependencies.txt
    • %pip install /Volumes/your/wheel.whl (atau jalur /Workspace) jika Anda membuat dan mengunggah pustaka kustom sebagai wheel

    %pip perintah memiliki logika spesifik Databricks dengan pengaman tambahan. Logika ini juga memastikan bahwa dependensi tersedia untuk semua simpul pelaksana Spark, bukan hanya simpul driver yang terhubung dengan Anda. Ini memungkinkan fungsi yang ditentukan pengguna (UDF) dengan dependensi kustom.

    Untuk contoh penggunaan lainnya, lihat Mengelola pustaka dengan %pip perintah.

Jalankan buku catatan ini setiap kali Anda membuat sesi ssh baru. Anda tidak perlu menginstal ulang dependensi jika sesi ssh yang ada dihilangkan dan disambungkan kembali ke kluster dalam waktu kurang dari 10 menit. (Waktu dapat dikonfigurasi dengan -shutdown-delay=10m opsi di konfigurasi ssh lokal Anda.)

Nota

Jika Anda memiliki beberapa sesi ssh yang terhubung ke kluster yang sama secara bersamaan, mereka menggunakan lingkungan virtual yang sama.

Keterbatasan

Terowongan Databricks SSH memiliki batasan berikut:

  • Ekstensi Databricks untuk Visual Studio Code dan terowongan Databricks SSH belum kompatibel dan tidak boleh digunakan bersama-sama.
  • Folder Git apa pun yang Anda buat di ruang kerja Anda melalui antarmuka pengguna ruang kerja Databricks tidak akan dikenali sebagai repositori git oleh integrasi git git CLI dan IDE, karena folder ini tidak memiliki metadata .git. Untuk mengatasi hal ini, lihat Bagaimana cara menggunakan Git dengan Terowongan SSH?.
  • Pemasangan direktori home dan root pada kluster yang Anda sambungkan bersifat sementara. Konten apa pun pada kluster tidak dipertahankan saat kluster dimulai ulang.

Perbedaan Notebook Databricks

Ada beberapa perbedaan dalam notebook saat menggunakan terowongan SSH:

  • File Python tidak menentukan databricks global apa pun (seperti spark atau dbutils). Anda harus mengimpornya secara eksplisit dengan from databricks.sdk.runtime import spark.
  • Untuk buku catatan ipynb, fitur-fitur ini tersedia:
    • Databricks globals: display, displayHTML, dbutils, table, sqludf, getArgument, sc, sqlContext, spark
    • %sql perintah magic untuk menjalankan sel SQL

Untuk bekerja dengan sumber Python "notebooks":

  • Cari jupyter.interactiveWindow.cellMarker.codeRegex dan atur ke:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Cari jupyter.interactiveWindow.cellMarker.default dan atur ke:

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

Troubleshooting

Bagian ini berisi informasi tentang mengatasi masalah umum.

Koneksi SSH gagal atau kehabisan waktu

  • Pastikan kluster Anda BERJALAN di UI Databricks dan tidak hanya berhenti atau dimulai.
  • Pastikan port keluaran 22 dalam keadaan terbuka serta diizinkan di laptop/jaringan/VPN Anda.
  • Tingkatkan batas waktu koneksi SSH di IDE Anda. Lihat Menyambungkan menggunakan Visual Studio Code atau Kursor.
  • Jika Anda melihat kesalahan ketidakcocokan kunci publik atau privat, coba hapus ~/.databricks/ssh-tunnel-keys folder.
  • Jika Anda melihat kesalahan "identifikasi host jarak jauh telah berubah", periksa ~/.ssh/known_hosts file dan hapus entri yang terkait dengan kluster Anda.
  • Jika sesi SSH dihilangkan setelah 1 jam, ini adalah batasan yang diketahui. Lihat Batasan.
  • Tidak lebih dari 10 koneksi ssh diizinkan ke satu kluster.

Kesalahan autentikasi CLI

  • Konfirmasikan profil Databricks CLI Anda valid dan diautentikasi (databricks auth login).
  • Pastikan Anda memiliki izin kluster yang tepat, seperti CAN MANAGE.

File terhapus atau pengaturan lingkungan direset setelah kluster dimulai ulang

  • Hanya mount /Workspace, /Volumes, dan /dbfs yang persisten. Semua data dalam /home, /root, dll dihapus setelah menghidupkan ulang.
  • Gunakan manajemen pustaka kluster untuk dependensi persisten. Mengotomatiskan instalasi ulang menggunakan skrip init jika diperlukan. Lihat Apa itu skrip init?.

Kesalahan "Bukan repositori git" atau fitur git yang hilang di IDE

Git hanya berfungsi jika Anda mengkloning ke dalam /Workspace/Users/<your-username> dengan menggunakan terminal. Folder yang dibuat web tidak memiliki metadata .git. Lihat Bagaimana cara menggunakan Git dengan Terowongan SSH?.

Kode saya tidak berfungsi

  • Pastikan Anda memilih penerjemah Python yang tepat yang memiliki akses ke semua dependensi Databricks Runtime.
    • Jika Anda membuka proyek Python, ekstensi Python dapat secara otomatis mendeteksi lingkungan virtual, tetapi Anda masih perlu mengaktifkan yang tepat secara manual. Jalankan Python: Pilih perintah Interpreter , dan pilih lingkungan pythonEnv-xxx . Ini akan memiliki akses ke semua pustaka Databricks Runtime bawaan, atau apa pun yang telah Anda instal secara global pada kluster.
    • Dalam beberapa kasus ekstensi Python tidak dapat secara otomatis mendeteksi lingkungan virtual, seperti saat Anda membuka folder yang tidak dapat dikenali sebagai proyek Python. Anda dapat membuka terminal dan menjalankan echo $DATABRICKS_VIRTUAL_ENV, lalu menyalin jalur dan menggunakannya di perintah Python: Pilih Interpreter .
  • Notebook IPYNB dan *.py notebook Databricks memiliki akses ke global Databricks, tetapi file Python *.py tidak. Lihat Perbedaan Notebook Databricks.

Tidak dapat mengatur koneksi ssh pada jendela di bawah WSL

Databricks merekomendasikan untuk melakukan penyiapan ssh langsung di Windows. Jika Anda menyiapkannya di sisi WSL, tetapi kemudian menggunakan Visual Studio Code versi Windows, itu tidak akan menemukan konfigurasi ssh yang diperlukan.

FAQ

Bagaimana kode dan data saya diamankan?

Semua kode berjalan dalam cloud virtual private cloud (VPC) Databricks Anda. Tidak ada data atau kode yang meninggalkan lingkungan aman Anda. Lalu lintas SSH sepenuhnya dienkripsi.

Platform IDE apa yang didukung?

Visual Studio Code dan Kursor secara resmi didukung, tetapi terowongan Databricks SSH kompatibel dengan IDE apa pun dengan kemampuan SSH.

Apakah semua fitur notebook Databricks tersedia dari IDE?

Beberapa fitur seperti display(), dbutils, dan %sql tersedia dengan batasan atau penyiapan manual. Lihat Perbedaan Notebook Databricks.

Dapatkah beberapa pengguna berkembang pada kluster yang sama sekaligus?

Tidak.

Apakah kluster saya akan dimulai secara otomatis saat saya terhubung melalui Terowongan SSH?

Ya, tetapi jika diperlukan waktu lebih lama untuk memulai kluster daripada batas waktu koneksi, upaya koneksi akan gagal.

Bagaimana cara mengetahui apakah kluster saya berjalan?

Navigasi ke Komputasi di UI ruang kerja Databricks, dan periksa status kluster. Kluster harus menunjukkan Berjalan agar koneksi terowongan SSH berfungsi.

Bagaimana cara memutuskan sambungan sesi SSH/IDE saya?

Anda dapat memutuskan sesi dengan menutup jendela IDE Anda, menggunakan opsi Putuskan sambungan di IDE Anda, menutup terminal SSH Anda, atau menjalankan exit perintah di terminal.

Apakah memutuskan SSH secara otomatis menghentikan kluster saya?

Tidak, server ssh memiliki penundaan matikan yang dapat dikonfigurasi, dan akan terus berjalan di latar belakang untuk jumlah waktu yang ditentukan (10m secara default, dapat diubah dalam konfigurasi ssh ProxyCommand dengan memodifikasi -shutdown-delay opsi). Setelah batas waktu server berakhir, batas waktu diam untuk kluster akan dimulai (yang Anda konfigurasikan selama pembuatan kluster).

Bagaimana cara menghentikan kluster untuk menghindari biaya yang tidak perlu?

Navigasi ke Komputasi di UI ruang kerja Databricks, temukan kluster Anda, dan klik Hentikan atau Hentikan.

Bagaimana cara menangani dependensi persisten?

Dependensi yang diinstal selama sesi hilang setelah mulai ulang kluster. Gunakan penyimpanan persisten (/Workspace/Users/<your-username>) untuk persyaratan dan skrip penyiapan. Gunakan pustaka kluster atau skrip init untuk otomatisasi.

Metode autentikasi apa yang didukung?

Autentikasi menggunakan Databricks CLI dan file profil Anda ~/.databrickscfg . Kunci SSH ditangani oleh terowongan Databrick SSH.

Bisakah saya menyambungkan ke database atau layanan eksternal dari kluster?

Ya, selama jaringan klaster Anda memungkinkan koneksi keluar dan Anda memiliki pustaka yang diperlukan.

Dapatkah saya menggunakan ekstensi IDE tambahan?

Sebagian besar ekstensi berfungsi saat diinstal dalam sesi SSH jarak jauh Anda, tergantung pada IDE dan kluster Anda. Visual Studio Code secara default tidak menginstal ekstensi lokal pada host jarak jauh. Anda dapat menginstalnya secara manual dengan membuka panel ekstensi dan mengaktifkan ekstensi lokal Anda di host jarak jauh. Anda juga dapat mengonfigurasi Visual Studio Code untuk selalu menginstal ekstensi tertentu dari jarak jauh. Lihat Menyambungkan ke Databricks.

Bagaimana cara menggunakan Git dengan Terowongan SSH?

Saat ini folder Git yang dibuat menggunakan UI ruang kerja Databricks tidak dikenali sebagai repositori git di IDEs. Untuk mengatasi hal ini, kloning repositori menggunakan CLI git dari sesi SSH Anda ke folder ruang kerja persisten Anda:

  1. Buka terminal dan navigasikan ke direktori induk yang diinginkan (misalnya, cd /Workspace/Users/<your-username>)
  2. Kloning repositori Anda di direktori tersebut.
  3. Di Visual Studio Code, buka folder ini di jendela baru dengan menjalankan code <repo-name> atau membuka folder di jendela baru menggunakan UI.