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.
Adicionalmente, para ajudar a construir a sua imagem personalizada, Azure Databricks fornece uma imagem base alinhada 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 tem de estar a executar o Databricks Runtime 18 ou superior e utilizar o modo de acesso Standard.
- Tens de ter um daemon do Docker recente com o comando
dockerdisponível no teuPATH.
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. Podes puxar databricksruntime/environment:v5-standard, sobrepor os teus pacotes e herdar atualizações e patches de segurança geridos pelo Databricks.
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:v5-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:v5-standard
RUN /databricks/python3/bin/python -m pip install <your python package>
O exemplo seguinte mostra como instalar um pacote a partir de um repositório privado.
FROM databricksruntime/environment:v5-standard
ENV PIP_INDEX_URL=https://pypi.org/simple
RUN /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 os JARs deste caminho na classpath do Spark.
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 os conteúdos da sua imagem de base (por exemplo, para cumprir requisitos rigorosos de tamanho da imagem, cadeia de abastecimento ou conformidade), pode criar de raiz um equivalente mínimo ao databricksruntime/environment:v5-standard em vez de o expandir.
Advertência
Construir do zero é uma opção avançada. Assumes a responsabilidade de acompanhar alterações a montante na imagem v5-standard, incluindo pinos de Python, patches de segurança, ferramentas de plataforma e os ficheiros necessários pela plataforma sob /databricks/ e /etc/environment. Em vez disso, o Databricks recomenda estender databricksruntime/environment:v5-standard como mostrado anteriormente no Passo 2.
A Databricks fornece um Dockerfile de referência e requirements.txt que recriam o ambiente Python essencial de v5-standard. Descarregue ambos os ficheiros para o mesmo diretório antes de compilar:
-
Dockerfile (guardar como
Dockerfile, sem a.txtextensão) - 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 ou superior.
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, certifique-se de que o modo de Acesso está definido para Standard e que o tempo de execução do Databricks está definido para 18 ou superior.
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:v5-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
Segue-se um exemplo de chamada API que cria um cálculo padrão com a sua imagem personalizada. Garantir data_security_mode está definido para DATA_SECURITY_MODE_STANDARD e spark_version está definido para 18.x-scala2.13 ou acima.
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": "18.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 porFROM databricksruntime/environment:v5-standard(ouv5-standard-armpara AWS Graviton). - 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 Databricks Runtime 18 ou superior.
- 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. Ver Passo 1: Ativar os Serviços de Contentores Databricks para computação padrão.