Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
O Databricks Container Services para computação padrão está em Beta. Um administrador de espaço de trabalho deve ativar esta funcionalidade a partir da página de Pré-visualizações do espaço de trabalho. Este é um serviço separado dos Databricks Container Services para computação dedicada, que está geralmente disponível.
O Databricks Container Services para computação padrão permite especificar uma imagem Docker ao criar computação padrão, dando-lhe acesso a contentores personalizados em ambientes de computação partilhados. A sua imagem Docker é a única definição do ambiente de carga de trabalho, por isso pode reproduzir o ambiente remoto localmente para obter resultados consistentes entre desenvolvimento e produção.
A sua imagem personalizada é usada para contentores sandbox que executam código de utilizador, como comandos Python REPL e UDFs em Python. O motor Spark funciona num ambiente gerido pelo Databricks, e as consultas Spark são enviadas entre os contentores sandbox e o motor Spark usando o Spark Connect.
Além disso, para ajudar a construir a sua imagem personalizada, o Azure Databricks fornece imagens base alinhadas com versões do ambiente serverless que pode estender para satisfazer as suas necessidades.
Requirements
Para usar os Serviços de Contentores Databricks para computação padrão:
- O recurso de computação deve estar a executar Databricks Runtime 18 LTS ou superior e usar o modo de acesso Standard .
- Tens de ter um daemon do Docker recente com o comando
dockerdisponível no teuPATH.
Note
Certifica-te de escolher 18 LTS. Não selecione 18.0, 18.1 ou 18.2.
Utilize a tabela seguinte para identificar a versão mínima do Databricks Runtime necessária para cada imagem base:
| Imagem base | Tempo mínimo de execução dos Databricks | API mínima spark_version |
Versão do ambiente sem servidor |
|---|---|---|---|
databricksruntime/environment:v6-standard |
19 | 19.x-scala2.13 |
6 |
databricksruntime/environment:v5-standard |
18 LTS | 18.3.x-scala2.13 |
5 |
Passo 1: Ativar os Serviços de Contentores Databricks para computação padrão
Para usar os Serviços de Contentores Databricks para computação padrão, um administrador de espaço de trabalho deve ativar a funcionalidade da página de Pré-visualizações :
- Inicie sessão no seu espaço de trabalho Azure Databricks como administrador.
- No menu do utilizador no canto superior direito, clique em Pré-visualizações.
- Localize DCS para computação padrão e ative-o.
Passo 2: Constrói a tua imagem personalizada
Estas instruções mostram-lhe como construir uma imagem personalizada estendendo uma imagem base fornecida pelo Databricks (recomendada). A imagem base contém as dependências necessárias para lançar as suas cargas de trabalho, como Ubuntu, Python e JDK. Selecione uma imagem de base cujo requisito mínimo do Databricks Runtime seja compatível com os seus recursos de computação e aplique as suas personalizações sobre ela. Reconstrua periodicamente a sua imagem para obter as correções mais recentes da imagem base. Os exemplos neste artigo são usados v6-standard com Databricks Runtime 19.
Se quiser construir uma imagem base minimalista do zero, veja Referência: construa uma imagem base minimalista do zero.
Passo 2a: Extrair a imagem base
Para extrair a imagem base, execute:
docker pull databricksruntime/environment:v6-standard
Passo 2b: Escrever um Dockerfile que estenda a imagem base
Instale pacotes de Python personalizados no ambiente virtual /databricks/python3 da imagem base. Este é o ambiente virtual do sistema que lança as suas cargas de trabalho.
FROM databricksruntime/environment:v6-standard
RUN /databricks/python3/bin/python -m pip install <your python package>
O exemplo seguinte mostra como instalar um pacote a partir de um índice personalizado sem manter a URL do índice no ambiente de execução. Anule PIP_INDEX_URL em tempo de compilação quando usar um índice privado.
FROM databricksruntime/environment:v6-standard
ARG PIP_INDEX_URL=https://pypi.org/simple
RUN PIP_INDEX_URL="${PIP_INDEX_URL}" \
/databricks/python3/bin/python -m pip install --no-cache-dir simplejson
Pode usar qualquer instrução padrão do Dockerfile (por exemplo, RUN, ENV, WORKDIR, COPY). As instruções seguintes são ignoradas devido à forma como o Azure Databricks lança a sua carga de trabalho:
USERCMDENTRYPOINTEXPOSEHEALTHCHECKSHELLSTOPSIGNAL
Note
Para cargas de trabalho do Scala, copie os seus ficheiros JAR para o diretório /scala-jars/user na imagem e chmod 0644 para que o utilizador da sandbox os possa ler. O Azure Databricks carrega JARs deste caminho para o caminho de classes do Scala REPL e do Scala UDF.
Passo 2c: Constrói a imagem
Para construir a imagem, execute:
docker build -f <your-dockerfile> -t <registry-url>/<project>[/<repo>]:<tag> .
Advertência
Teste a sua imagem personalizada de forma exaustiva numa computação do Azure Databricks. Uma imagem que funciona numa máquina local ou de compilação pode falhar ao iniciar, desativar silenciosamente funcionalidades ou deixar de funcionar quando iniciada no Azure Databricks.
Referência: criar uma imagem de base mínima do zero
Se precisar de controlo total sobre o conteúdo da sua imagem base (por exemplo, para cumprir requisitos rigorosos de tamanho da imagem, cadeia de fornecimento ou conformidade), pode construir uma imagem mínima focada em Python do zero em vez de estender databricksruntime/environment:v6-standard.
A referência criada do zero recria apenas o ambiente Python essencial. Não inclui o JDK nem outros componentes de tempo de execução não Python provenientes de v6-standard e não suporta cargas de trabalho em Scala. Estende a imagem base fornecida pelo Databricks quando as tuas cargas de trabalho exigirem esses componentes.
Advertência
Construir do zero é uma opção avançada. Assumes a responsabilidade de acompanhar as alterações a montante da v6-standard imagem, incluindo pinos Python, patches de segurança, ferramentas da plataforma e os ficheiros exigidos pela plataforma sob /databricks/ e /etc/environment. O Databricks recomenda a extensão databricksruntime/environment:v6-standard , como mostrado anteriormente no Passo 2.
O Databricks fornece ficheiros de referência que recriam o ambiente Python essencial de cada imagem base. Descarregue o Dockerfile e o ficheiro de dependência da sua imagem base no mesmo diretório antes de compilar. Guardar Dockerfile.txt como Dockerfile.
| Imagem base | Dockerfile | Ficheiro de dependência |
|---|---|---|
v6-standard |
Dockerfile.txt | pyproject.toml |
v5-standard |
Dockerfile.txt | requirements.txt |
Para construir a imagem, execute:
docker build -t <your-registry>/<repo>:<tag> .
Se o teu host de build não conseguir aceder a https://pypi.org, substitui o índice do pip durante o build, executando:
docker build --build-arg PIP_INDEX_URL=https://your-mirror/simple -t <your-registry>/<repo>:<tag> .
Antes de avançar para o passo seguinte, verifique se os pacotes Python curados são importados de forma limpa, executando:
docker run --rm --cpus 2 <your-registry>/<repo>:<tag> \
/databricks/python3/bin/python -c \
"import pandas, numpy, pyarrow, mlflow, databricks.connect; print('OK')"
Passo 3: Empurra a tua imagem para um registo
De seguida, envie a sua imagem para um registo Docker. O Databricks Container Services suporta os mesmos registos tanto em computação padrão como dedicada:
- Docker Hub sem autenticação ou autenticação básica.
- Azure Container Registry com autenticação básica.
Outros registos que não suportam autenticação ou autenticação básica também devem funcionar. A autenticação básica usa o seu nome de utilizador e palavra-passe do registo.
Para obter o melhor desempenho ao obter imagens, utilize um repositório na mesma cloud e região que o seu espaço de trabalho do Azure Databricks.
echo "$REGISTRY_PASSWORD" | docker login -u <registry-username> --password-stdin <registry-url>
docker push <registry-url>/<project>[/<repo>]:<tag>
Note
Se usar o Docker Hub, verifique se os seus limites de taxa acomodam o cálculo que espera lançar num período de seis horas. Consulte a documentação do Docker para obter detalhes. Se este limite for ultrapassado, os pedidos retornam 429 Too Many Requests.
Passo 4: Inicie o seu cálculo
Podes lançar computação que usa a tua imagem personalizada usando a interface ou API. Devem ser cumpridos os seguintes requisitos:
- O modo de acesso de computação deve ser Standard (na API, definido
data_security_modeparaDATA_SECURITY_MODE_STANDARD). Se o cálculo estiver definido para modo de acesso dedicado , é usada uma versão diferente do Databricks Container Services, que espera uma imagem base diferente e falhará ao iniciar com a imagem base que construiu. - A versão de Runtime do Databricks deve ser 18 LTS ou superior. Certifica-te de selecionar 18 LTS, não 18.0, 18.1 ou 18.2.
- A versão Databricks Runtime deve cumprir o requisito mínimo para a sua imagem base.
Note
Para iniciar num pool de instâncias, o pool tem de ser criado com preloaded_docker_images definido, e o docker_image do cluster tem de corresponder. Consulte Databricks Container Services com um conjunto de instâncias antes de iniciar.
Inicie sua computação usando a interface do usuário
Na página Criar computação, defina o modo de Acesso para Standard e selecione um Databricks Runtime que cumpra o requisito mínimo para a sua imagem base.
Em Avançado , selecione a guia Docker.
Selecione Usar seu próprio contêiner do Docker.
No campo URL da Imagem Docker , introduza a sua imagem personalizada.
Registry Formato da etiqueta Docker Hub <organization>/<repository>:<tag>(por exemplo:databricksruntime/environment:v6-standard)Azure Container Registry <your-registry-name>.azurecr.io/<repository-name>:<tag>Selecione o tipo de autenticação. Consulte de autenticação de imagem do Docker .
Note
Se não vir as definições do Docker ao criar um recurso de computação, o Databricks Container Services poderá não estar ativado no seu espaço de trabalho. Um administrador de espaço de trabalho deve habilitá-lo antes de qualquer utilizador poder especificar uma imagem Docker. Ver Passo 1: Ativar os Serviços de Contentores Databricks para computação padrão.
Inicie sua computação usando a API
A seguinte chamada de API de exemplo cria computação padrão com uma v6-standard imagem personalizada no Databricks Runtime 19. Defina data_security_mode como DATA_SECURITY_MODE_STANDARD. O spark_version deve cumprir o requisito mínimo para a sua imagem base.
databricks clusters create \
--cluster-name <cluster-name> \
--node-type-id Standard_DS3_v2 \
--json '{
"num_workers": 1,
"docker_image": {
"url": "<docker-registry-image-url>",
"basic_auth": {
"username": "<docker-registry-username>",
"password": "<docker-registry-password>"
}
},
"spark_version": "19.x-scala2.13",
"data_security_mode": "DATA_SECURITY_MODE_STANDARD"
}'
Autenticação de imagem do Docker
Os requisitos de autenticação dependem do tipo de imagem do Docker. Você também pode usar segredos para armazenar nomes de usuário e senhas de autenticação. Consulte Usar segredos para autenticação.
- Para imagens públicas do Docker, não é necessário incluir informações de autenticação. Na UI, defina Autenticação como Padrão. Para a chamada de API, não incluir os campos
basic_auth. - Para imagens privadas do Docker, autentique-se usando um ID e senha da entidade de serviço (ou segredos aplicáveis) como nome de usuário e senha.
- Para o Registo de Contentores do Azure, autentique-se usando uma ID da Entidade de Serviço e senha (ou segredos aplicáveis) como nome de utilizador e senha. Consulte a documentação de autenticação do principal de serviço do Registo de Contentores do Azure para obter informações sobre como criar o principal de serviço.
Usar segredos para autenticação
O Databricks Container Service suporta o uso de segredos para autenticação. Ao criar seu recurso de computação na interface do usuário, use o campo de Autenticação para selecionar nome de usuário e senhae, em vez de inserir seu nome de usuário ou senha de texto simples, insira seus segredos usando o formato {{secrets/<scope-name>/<dcs-secret>}}. Se você usar a API, insira os segredos nos campos basic_auth.
Para obter informações sobre como criar segredos, consulte Gerenciamento secreto.
Utilizar o Databricks Container Services com um grupo de instâncias
Para usar o Databricks Container Services com um pool de instâncias, deve criar o pool usando a API do Instance Pools, não a interface.
O pool deve ser criado com imagens Docker pré-carregadas. Isto aquece as instâncias de inatividade com a tua imagem personalizada, permitindo que as cargas de trabalho comecem mais depressa. Define o preloaded_docker_images campo no pedido com as mesmas referências de imagem e autenticação que usas ao iniciar o cálculo diretamente. O campo é uma lista, por isso um único pool pode pré-carregar várias imagens.
O pool e os seus recursos de computação associados devem concordar sobre se o Docker está em uso. Se um pool não tiver preloaded_docker_images definido, não pode iniciar o processamento Databricks Container Services contra ele. Cria um novo pool com preloaded_docker_images definido.
Para pools criados com preloaded_docker_images, qualquer recurso de computação iniciado nesse pool tem de fornecer um docker_image correspondente no respetivo pedido de criação. Caso contrário, a criação de computação falha com 'docker_image' must be provided for cluster created with instance pool: <pool-id>.
Migrar do Databricks Container Services original
O Databricks Container Services para computação padrão é um serviço diferente dos Databricks Container Services originais para computação dedicada. Esta funcionalidade apresenta as seguintes diferenças:
- As cargas de trabalho são executadas através do protocolo Spark Connect .
- Os scripts de init não modificam o ambiente Python da tua carga de trabalho. Tens de instalar todas as dependências do Python na imagem do Docker. Pode continuar a usar scripts init para aplicações que consomem dados do Spark, como agentes Datadog ou Kafka.
Para migrar dos Databricks Container Services originais para computação dedicada, reconstrua a sua imagem personalizada nos Databricks Container Services para computação padrão e atualize a sua configuração de computação:
- Substitua a linha
FROMno seu Dockerfile por uma imagem base cujo requisito mínimo do Databricks Runtime seja satisfeito pelo seu runtime de destino. Para o AWS Graviton, use a variante de imagem correspondente-arm. - Porta as instruções do teu Dockerfile para a nova imagem base. São suportadas instruções padrão do Dockerfile, com as exceções listadas no Passo 2: Construa a sua imagem personalizada.
- Instale pacotes Python em
/databricks/python3em vez de qualquer outro ambiente virtual. As cargas de trabalho (cadernos, trabalhos de roda em Python, trabalhos de scripts em Python) seguem este caminho. - Atualize a sua configuração de computação para usar o modo de acesso Standard e selecione uma versão Databricks em tempo de execução que cumpra o requisito mínimo para a sua imagem base.
- Move qualquer configuração de ambiente Python que um script de init tenha executado anteriormente para o Dockerfile.
Limitações
Para além das limitações padrão de computação, o Databricks Container Services para computação padrão apresenta as seguintes limitações:
- Bibliotecas compute-scoped não são suportadas.
- Repositórios privados de pacotes não são suportados.
- O Databricks Runtime for Machine Learning não é suportado.
- Para iniciar o processamento padrão com o Databricks Container Services com um pool de instâncias, o pool tem de ser criado com
preloaded_docker_imagesdefinido. Veja Usar os Serviços de Contentor da Databricks com um conjunto de instâncias.
Troubleshooting
Se o separador Docker não aparecer no separador Avançado ao criar um recurso de computação, o Databricks Container Services não está ativado no seu espaço de trabalho. Um administrador de espaço de trabalho deve ativar esta imagem no espaço de trabalho antes de qualquer utilizador poder especificar uma imagem Docker. Consulte Ativar os serviços de contentores.
O separador Docker também pode ser ocultado por uma política de computação que oculta o docker_image.url atributo. Se a funcionalidade estiver ativada mas o separador ainda estiver em falta, pede a um administrador de espaço de trabalho para verificar se a política que lhe foi atribuída esconde este atributo.
Ver Atributos Suportados.