Túnel SSH do Databricks
Beta
O túnel SSH do Databricks está em versão Beta.
O túnel SSH Databricks permite que você conecte seu IDE ao seu compute Databricks . É fácil de configurar, permite executar e depurar código interativamente no cluster, reduz incompatibilidades de ambiente e mantém todo o código e dados seguros dentro do seu workspace Databricks .
Requisitos
Para usar o túnel SSH, você precisa ter:
- A versão 0.269 ou superior da CLI do Databricks deve estar instalada em sua máquina local e a autenticação deve estar configurada. Consulte Instalar.
- Execute tarefas computacionais em seu workspace Databricks com o modo de acesso dedicado (usuário único). Consulte a Visão geral compute dedicada.
- O compute deve estar utilizando Databricks Runtime 17.0 ou superior.
- Unity Catalog precisa estar ativado.
- Caso exista uma política compute , ela não deve proibir a execução de tarefas.
Configure o túnel SSH.
Primeiro, configure o túnel SSH usando o comando ` databricks ssh setup` . Substitua <connection-name> pelo nome do túnel, por exemplo, my-tunnel.
databricks ssh setup --name <connection-name>
A CLI solicita que você escolha um cluster, ou você pode fornecer um ID de cluster passando --cluster <cluster-id>.
Para o IntelliJ, a Databricks recomenda que você inclua –-auto-start-cluster=false no comando de configuração. Ao iniciar um ambiente de desenvolvimento integrado (IDE) da JetBrains, todos clusters são iniciados automaticamente, o que pode resultar em custos compute não intencionais. Se você ativar essa opção, será necessário iniciar o cluster no workspace para iniciar o túnel SSH.
Conecte-se ao Databricks
Em seguida, conecte-se ao Databricks usando uma IDE ou um terminal.
Conecte-se usando o Visual Studio Code ou o cursor.
-
Para o Visual Studio Code, instale a extensão Remote SSH. O Cursor inclui uma extensão SSH remota.
-
No menu principal da IDE, clique em Exibir > Paleta de comandos . Selecione SSH remoto: Configurações . Alternativamente, selecione Preferências: Abrir configurações do usuário (JSON) para modificar
settings.jsondiretamente. -
Em Remote.SSH: extensões padrão (ou
remote.SSH.defaultExtensionsemsettings.json), adicionems-Python.Pythonems-toolsai.jupyter.Se você estiver modificando
settings.json:JSON"remote.SSH.defaultExtensions": [
"ms-Python.Python",
"ms-toolsai.jupyter"
]
Opcionalmente, aumente o valor de Remote.SSH: Connect Timeout (ou remote.SSH.connectTimeout em settings.json) para reduzir ainda mais a chance de erros de tempo limite. O tempo limite default é 360.
-
Na paleta de comandos, selecione Remote-SSH: Conectar ao host .
-
Na dropdown, selecione o túnel que você configurou na primeira etapa. O IDE inicia a conexão em uma nova janela.
Se o compute não estiver em execução, ele será reiniciado. No entanto, se o tempo limite para o compute iniciar for maior que o limite definido, a tentativa de conexão SSH falhará.
- Selecione Linux quando solicitado o tipo de servidor.
Conecte-se usando o IntelliJ IDEs
-
Siga o tutorial de desenvolvimento remoto para configurar tudo.
-
Na tela de nova conexão, insira o seguinte:
Nome de usuário :
rootHospedar:<connection-name>
Conecte-se usando o terminal
Para conectar-se ao Databricks a partir da linha de comando, forneça ao comando ssh o nome da sua conexão, por exemplo:
ssh my-tunnel
Projetos abertos
- A conexão inicial abre uma janela IDE vazia, sem nenhuma pasta aberta. No Visual Studio Code, use o comando Abrir Pasta na paleta de comandos para abrir o projeto desejado.
- Use o ponto de montagem workspace (
/Workspace/Users/<your-username>) para armazenamento persistente.
código de execução (código do Visual Studio)
- Ao abrir um projeto Python, a extensão Python pode detectar automaticamente os ambientes virtuais, mas você ainda precisa ativar manualmente o ambiente correto. Selecione o comando Interpreter na paleta de comandos e escolha o ambiente
pythonEnv-xxx. Isso dá acesso a toda a biblioteca integrada Databricks Runtime , ou a qualquer outra coisa que você tenha instalado globalmente no cluster. - Em alguns casos, a extensão Python não consegue detectar automaticamente ambientes virtuais (
venv), como quando você abre uma pasta que não pode ser reconhecida como um projeto Python. Para corrigir isso, abra um terminal e executeecho $DATABRICKS_VIRTUAL_ENV, depois copie o caminho e use-o no comando Python: Selecionar Interpretador .
Após a seleção do ambiente virtual (venv), arquivos Python ou Notebooks podem ser executados com ações de execução normal ou de depuração fornecidas pelas extensões Python ou Jupyter.
Gerenciar dependências Python
A maneira mais simples de instalar as dependências necessárias é usando a interface do usuário workspace . Veja biblioteca com escopo de computação. Com essa abordagem, você instala as dependências globalmente para o cluster. Não é necessário reinstalar a biblioteca sempre que o cluster for reiniciado.
No entanto, para uma configuração mais programática e específica para um projeto, utilize uma instalação com escopo de Notebook.
Notebook de configuração específico do projeto
Para gerenciar as dependências de um projeto específico:
-
Crie um arquivo
setup.ipynbem seu projeto. -
A CLI ssh cria um ambiente Python (
pythonEnv-xxx), que já possui biblioteca Databricks Runtime integrada ou biblioteca com escopo de computação. Anexe o Notebook a este ambientepythonEnv-xxx. -
Use o comando
%pip installpara instalar suas dependências:%pip install .se você tiverpyproject.toml(%pip install .<group>para reduzir o escopo)%pip install -r dependencies.txtse você tiverdependencies.txt%pip install /Volumes/your/wheel.whl(ou caminhos/Workspace) se você criou e carregou uma biblioteca personalizada como um wheel.
%pipO comando possui lógica específica Databrickscom proteções adicionais. A lógica também garante que as dependências estejam disponíveis para todos os nós executor Spark , e não apenas para o nó de driver ao qual você está conectado. Isso permite funções definidas pelo usuário (UDFs) com dependências personalizadas.Para mais exemplos de uso, consulte gerenciar biblioteca com
%pipcomando.
execute este Notebook sempre que você estabelecer uma nova sessão ssh. Não é necessário reinstalar as dependências se uma sessão SSH existente for encerrada e reconectada ao cluster em menos de 10 minutos. (O tempo pode ser configurado com a opção -shutdown-delay=10m na sua configuração SSH local.)
Se você tiver várias sessões SSH conectadas ao mesmo cluster ao mesmo tempo, elas usarão o mesmo ambiente virtual.
Limitações
O túnel SSH do Databricks apresenta as seguintes limitações:
- A extensão Databricks para Visual Studio Code e o túnel SSH do Databricks ainda não são compatíveis e não devem ser usados em conjunto.
- Qualquer pastaGit criada em seu workspace por meio da workspace Databricks não será reconhecida como um diretório Git pela CLI do Git e pelas integrações do Git em IDEs, pois essas pastas não possuem a extensão .git. metadados. Para contornar isso, consulte Como usar o Git com o túnel SSH?
- Os pontos de montagem raiz e inicial no cluster ao qual você se conecta são efêmeros. O conteúdo presente no cluster não é preservado quando o cluster é reiniciado.
Diferenças entre NotebooksDatabricks
Existem algumas diferenças no Notebook ao usar o túnel SSH:
- Os arquivos Python não definem nenhuma variável global do Databricks (como
sparkoudbutils). Você deve importá-los explicitamente comfrom databricks.sdk.runtime import spark. - Para notebooks ipynb , estes recursos estão disponíveis:
- Valores globais do Databricks:
display,displayHTML,dbutils,table,sql,udf,getArgument,sc,sqlContext,spark %sqlcomando mágico para executar células SQL
- Valores globais do Databricks:
Para trabalhar com o código-fonte Python “Notebook”:
-
Procure por
jupyter.interactiveWindow.cellMarker.codeRegexe defina-o como:^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\]) -
Procure por
jupyter.interactiveWindow.cellMarker.defaulte defina-o como:# COMMAND ----------
Solução de problemas
Esta seção contém informações sobre como resolver problemas comuns.
A conexão SSH falha ou expira.
- Certifique-se de que seu cluster esteja EM EXECUÇÃO na interface do usuário do Databricks e não apenas parado ou iniciando.
- Verifique se a porta de saída 22 está aberta e permitida em seu laptop/rede/VPN.
- Aumente o tempo limite de conexão SSH em sua IDE. Consulte Conectar usando o Visual Studio Code ou o Cursor.
- Se você vir erros de incompatibilidade key pública ou privada, tente excluir a pasta
~/.databricks/ssh-tunnel-keys. - Se você vir erros "a identificação do host remoto foi alterada", verifique o arquivo
~/.ssh/known_hostse exclua as entradas relacionadas ao seu cluster. - Se a sessão SSH for encerrada após 1 hora, trata-se de uma limitação conhecida. Consulte as limitações.
- Não são permitidas mais de 10 conexões SSH em um único cluster.
erros de autenticação da CLI
- Confirme se o seu perfil do Databricks CLI é válido e autenticado (
databricks auth login). - Certifique-se de ter as permissões de cluster adequadas, como
CAN MANAGE.
Os arquivos desaparecem ou o ambiente é redefinido após a reinicialização cluster .
- Apenas as montagens
/Workspace,/Volumese/dbfssão persistentes. Todos os dados em/home,/root, etc. são apagados após uma reinicialização. - Utilize o gerenciamento de bibliotecas cluster para dependências persistentes. Automatize reinstalações usando um script de inicialização, se necessário. Veja O que são scripts de inicialização?
Erro "Não é um repositório git" ou recurso git ausente no IDE
O Git só funciona se você clonar para /Workspace/Users/<your-username> usando o terminal. Pastas criadas na web não possuem a extensão .git. metadados. Veja Como usar o Git com o túnel SSH?
Meu código não funciona.
-
Certifique-se de selecionar o interpretador Python correto que tenha acesso a todas as dependências do Databricks Runtime.
- Ao abrir um projeto Python, a extensão Python pode detectar automaticamente os ambientes virtuais, mas você ainda precisa ativar manualmente o ambiente correto. Executar Python: Selecione o comando Interpreter e escolha o ambiente pythonEnv-xxx . Terá acesso a toda a biblioteca Databricks Runtime integrada, ou a qualquer outra coisa que você tenha instalado globalmente no cluster.
- Em alguns casos, a extensão Python não consegue detectar automaticamente ambientes virtuais, como quando você abre uma pasta que não pode ser reconhecida como um projeto Python. Você pode abrir um terminal e executar
echo $DATABRICKS_VIRTUAL_ENV, depois copiar o caminho e usá-lo no comando Python: Selecionar Interpretador .
-
Os notebooks ipynb e
*.pyDatabricks têm acesso aos globais Databricks , mas os arquivos Python*.pynão. Veja as diferenças entre os notebooksDatabricks.
Não consigo configurar uma conexão SSH no Windows usando o WSL.
A Databricks recomenda realizar a configuração SSH diretamente no Windows. Se você configurar o SSH no WSL, mas usar uma versão do Visual Studio Code para Windows, ele não encontrará as configurações necessárias.
Perguntas frequentes
Como meu código e meus dados são protegidos?
Toda a execução de código ocorre dentro da sua cloud privada virtual (VPC) cloud Databricks . Nenhum dado ou código sai do seu ambiente seguro. O tráfego SSH é totalmente criptografado.
Quais IDEs são suportadas?
O Visual Studio Code e o Cursor são oficialmente suportados, mas o túnel SSH do Databricks é compatível com qualquer IDE que possua recursos SSH.
Todos os recursos Databricks Notebook estão disponíveis no IDE?
Alguns recursos como display(), dbutils e %sql estão disponíveis com limitações ou configuração manual. Veja as diferenças entre os notebooksDatabricks.
Vários usuários podem desenvolver no mesmo cluster simultaneamente?
Não.
Meu cluster iniciará automaticamente quando eu me conectar via túnel SSH?
Sim, mas se a inicialização do cluster demorar mais do que o tempo limite de conexão, a tentativa de conexão falhará.
Como posso saber se meu cluster está em execução?
Navegue até "Compution" na interface do usuário workspace Databricks e verifique o status do cluster. O cluster precisa mostrar "Em execução" para que as conexões de túnel SSH funcionem.
Como faço para desconectar minha sessão SSH/IDE?
Você pode desconectar uma sessão fechando a janela do seu IDE, usando a opção Desconectar no seu IDE, fechando o terminal SSH ou executando o comando exit no terminal.
Desconectar o SSH interrompe automaticamente meu cluster?
Não, o servidor ssh tem um atraso de desligamento configurável e continuará a ser executado em segundo plano por um período de tempo especificado (10 minutos por default, pode ser alterado no ProxyCommand de configuração ssh modificando a opção -shutdown-delay ). Após o tempo limite, o servidor é encerrado, o que aciona o tempo limite do cluster Parado (que você configura durante a criação cluster ).
Como faço para interromper o cluster e evitar cobranças desnecessárias?
Navegue até "Compution" na interface do usuário workspace Databricks , encontre seu cluster e clique em "Terminate " ou "Stop" .
Como devo lidar com dependências persistentes?
As dependências instaladas durante uma sessão são perdidas após a reinicialização do cluster. Use armazenamento persistente (/Workspace/Users/<your-username>) para requisitos e scripts de configuração. Utilize a biblioteca cluster ou o script de inicialização para automação.
Quais métodos de autenticação são suportados?
A autenticação usa a CLI do Databricks e seu arquivo de perfis ~/.databrickscfg . As chaves SSH são gerenciadas pelo túnel SSH do Databrick.
Posso me conectar a bancos de dados ou serviços externos a partir do cluster?
Sim, desde que a sua rede cluster permita conexões de saída e você tenha a biblioteca necessária.
Posso usar extensões adicionais da IDE?
A maioria das extensões funciona quando instalada em sua sessão SSH remota, dependendo do seu IDE e cluster. Por default o Visual Studio Code não instala extensões locais em hosts remotos. Você pode instalá-las manualmente abrindo o painel de extensões e ativando suas extensões locais no host remoto. Você também pode configurar o Visual Studio Code para sempre instalar determinadas extensões remotamente. Consulte Conectar-se ao Databricks.
Como faço para usar o Git com o túnel SSH?
Atualmente, as pastas Git criadas usando a interface de usuário Databricks workspace não são reconhecidas como repositórios Git em IDEs. Para contornar isso, clone os repositórios usando a CLI do Git a partir da sua sessão SSH para a pasta do seu workspace persistente:
- Abra um terminal e navegue até o diretório pai desejado (por exemplo,
cd /Workspace/Users/<your-username>). - Clone seu repositório nesse diretório.
- No Visual Studio Code, abra esta pasta em uma nova janela executando
code <repo-name>ou abra a pasta em uma nova janela usando a interface do usuário.