Limitações e considerações do Dataproc sem servidor
- Os jobs do Spark são executados com a identidade da conta de serviço, não com a identidade do usuário que fez o envio.
Antes de começar
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Ative a API Dataproc.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Ative a API Dataproc.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
Instalar o plug-in JupyterLab do Dataproc
É possível instalar e usar o plug-in JupyterLab do Dataproc em uma máquina ou VM com acesso aos serviços do Google, como sua máquina local ou uma instância de VM do Compute Engine.
Para instalar o plug-in, siga estas etapas:
Verifique se
Python 3.8+
está instalado na sua máquina. Faça o download e instale o Python empython.org/downloads
.Verifique a instalação do Python 3.8+.
python3 --version
Instale o
JupyterLab 3.6.3+
na sua máquina.pip3 install --upgrade jupyterlab
Verifique a instalação do JupyterLab 3.6.3+.
pip3 show jupyterlab
Instalar o plug-in Dataproc JupyterLab.
pip3 install dataproc-jupyter-plugin
Se sua versão do JupyterLab for anterior à
4.0.0
, ative a extensão de plug-in.jupyter server extension enable dataproc_jupyter_plugin
-
jupyter lab
A página Acesso rápido do JupyterLab vai aparecer no navegador. Ela contém a seção Jobs e sessões do Dataproc. Ele também pode conter as seções Notebooks sem servidor do Dataproc e Notebooks de cluster do Dataproc se você tiver acesso aos notebooks sem servidor do Dataproc ou aos clusters do Dataproc com o componente opcional Jupyter em execução no seu projeto.
Por padrão, a sessão interativa do Dataproc sem servidor para Spark é executada no projeto e na região definidos ao executar
gcloud init
em Antes de começar. É possível alterar as configurações do projeto e da região para suas sessões na página Configurações > Configurações do Dataproc do JupyterLab.
Criar um modelo de ambiente de execução sem servidor do Dataproc
Os modelos de ambiente de execução sem servidor do Dataproc (também chamados de modelos session
) contêm definições de configuração para executar o código Spark em uma sessão. É possível
criar e gerenciar modelos de ambiente de execução usando o Jupyterlab ou a CLI gcloud.
JupyterLab
Clique no card
New runtime template
na seção Notebooks sem servidor do Dataproc na página Acesso rápido do JupyterLab.Preencha o formulário Modelo de ambiente de execução.
Especifique um Nome de exibição e uma Descrição e insira ou confirme as outras configurações.
Observações:
Configuração de rede: a sub-rede precisa ter o Acesso privado do Google ativado e permitir a comunicação de sub-rede em todas as portas. Consulte Configuração de rede do Dataproc sem servidor para Spark.
Se a sub-rede da rede
default
da região que você configurou quando executougcloud init
em Antes de começar não estiver ativada para o Acesso privado do Google:- Ative para o Acesso privado do Google ou
- Selecione outra rede com uma sub-rede regional que tenha o Acesso privado do Google ativado. É possível alterar a região que o Dataproc sem servidor usa na página Configurações > Configurações do Dataproc do JupyterLab.
Metastore: para usar um serviço Metastore do Dataproc nas sessões, selecione o ID, a região e o serviço do projeto do metastore.
Tempo máximo de inatividade: o tempo máximo de inatividade do notebook antes que a sessão seja encerrada. Intervalo permitido: de 10 minutos a 336 horas (14 dias).
Tempo máximo da sessão: o ciclo de vida máximo de uma sessão antes do encerramento dela. Intervalo permitido: de 10 minutos a 336 horas (14 dias).
PHS: é possível selecionar um servidor de histórico permanente do Spark para acessar registros durante e após as sessões.
Propriedades do Spark: clique em Adicionar propriedade em cada propriedade a ser definida para as sessões do Spark sem servidor. Consulte as propriedades do Spark para uma lista de propriedades compatíveis e incompatíveis, incluindo o ambiente de execução, os recursos e as propriedades de escalonamento automático do Spark.
Rótulos: clique em Adicionar rótulo para cada rótulo a ser definido nas sessões do Spark sem servidor.
Veja os modelos de ambiente de execução na página Configurações > Configurações do Dataproc.
- Você pode excluir um modelo do menu Ação dele.
Clique em Salvar.
Abra e atualize a página Acesso rápido do JupyterLab para visualizar o card de modelo de notebook salvo na página Acesso rápido do JupyterLab.
gcloud
Crie um arquivo YAML com a configuração do modelo de ambiente de execução.
YAML simples
environmentConfig: executionConfig: networkUri: default jupyterSession: kernel: PYTHON displayName: Team A labels: purpose: testing description: Team A Development Environment
YAML complexo
environmentConfig: executionConfig: serviceAccount: sa1 # Choose either networkUri or subnetworkUri networkUri: default subnetworkUri: subnet networkTags: - tag1 kmsKey: key1 idleTtl: 3600s ttl: 14400s stagingBucket: staging-bucket peripheralsConfig: metastoreService: projects/my-project-id/locations/us-central1/services/my-metastore-id sparkHistoryServerConfig: dataprocCluster: projects/my-project-id/regions/us-central1/clusters/my-cluster-id jupyterSession: kernel: PYTHON displayName: Team A labels: purpose: testing runtimeConfig: version: "1.1" containerImage: gcr.io/my-project-id/my-image:1.0.1 properties: "p1": "v1" description: Team A Development Environment
Se a sub-rede da rede
default
da região que você configurou quando executougcloud init
em Antes de começar não estiver ativada para o Acesso privado do Google:- Ative para o Acesso privado do Google ou
- Selecione outra rede com uma sub-rede regional que tenha o Acesso privado do Google ativado. É possível alterar a região que o Dataproc sem servidor usa na página Configurações > Configurações do Dataproc do JupyterLab.
Crie um modelo de sessão (ambiente de execução) com base no arquivo YAML executando o seguinte comando gcloud beta dataproc session-templates import localmente ou no Cloud Shell:
gcloud beta dataproc session-templates import TEMPLATE_ID \ --source=YAML_FILE \ --project=PROJECT_ID \ --location=REGION
- Consulte gcloud beta dataproc session-templates para ver comandos que descrevem, listam, exportam e excluem modelos de sessão.
Iniciar e gerenciar notebooks
Depois de instalar o plug-in JupyterLab do Dataproc, clique nos cards de modelo na página Acesso rápido do JupyterLab para:
Iniciar um notebook do Jupyter no Dataproc sem servidor
A seção Notebooks sem servidor do Dataproc na página do JupyterLab Launcher mostra cards de modelo de notebook que mapeiam para os modelos de ambiente de execução sem servidor do Dataproc. Consulte Criar um modelo de ambiente de execução sem servidor do Dataproc.
Clique em um card para criar uma sessão do Dataproc sem servidor e iniciar um notebook. Quando a criação da sessão estiver concluída e o kernel do notebook estiver pronto para uso, o status do kernel mudará de
Unknown
paraIdle
.escrever e testar o código do notebook.
Copie e cole o seguinte código
Pi estimation
do PySpark na célula do notebook PySpark e pressione Shift+Return para executar o código.import random def inside(p): x, y = random.random(), random.random() return x*x + y*y < 1 count = sc.parallelize(range(0, 10000)) .filter(inside).count() print("Pi is roughly %f" % (4.0 * count / 10000))
Resultado do notebook:
Depois de criar e usar um notebook, é possível encerrar a sessão do notebook clicando em Encerrar kernel na guia Kernel.
- Se você não encerrar a sessão, o Dataproc a encerrará quando o timer de inatividade da sessão expirar. É possível configurar o tempo de inatividade da sessão na configuração do modelo de ambiente de execução. O tempo de inatividade padrão da sessão é de uma hora.
Iniciar um notebook em um cluster do Dataproc no Compute Engine
Se você criou um Dataproc no cluster Jupyter do Compute Engine, a página Launcher do JupyterLab conterá uma seção Notebook de cluster do Dataproc com cartões de kernel pré-instalados.
Para iniciar uma anotação do Jupyter no cluster do Dataproc no Compute Engine:
Clique em um card na seção Notebook de cluster do Dataproc.
Quando o status do kernel muda de
Unknown
paraIdle
, é possível começar a escrever e executar o código do notebook.Depois de criar e usar um notebook, é possível encerrar a sessão do notebook clicando em Encerrar kernel na guia Kernel.
Gerenciar arquivos de entrada e saída no Cloud Storage
A análise de dados exploratórios e a criação de modelos de ML geralmente envolvem entradas e saídas baseadas em arquivos. O Dataproc sem servidor acessa esses arquivos no Cloud Storage.
Para acessar o navegador do Cloud Storage, clique no ícone do navegador do Cloud Storage na barra lateral da página Acesso rápido do JupyterLab e clique duas vezes em uma pasta para visualizar o conteúdo dela.
Você pode clicar nos tipos de arquivos compatíveis com o Jupyter para abri-los e editá-los. Quando você salva alterações nos arquivos, elas são gravadas no Cloud Storage.
Para criar uma nova pasta do Cloud Storage, clique no ícone "Nova pasta" e insira o nome dela.
Para fazer upload de arquivos em um bucket ou pasta do Cloud Storage, clique no ícone de upload e selecione os arquivos.
Desenvolver código do notebook Spark
Depois de instalar o plug-in JupyterLab do JupyterLab, é possível iniciar os notebooks do Jupyter na página Acesso rápido do JupyterLab para desenvolver o código do aplicativo.
Desenvolvimento de código com PySpark e Python
Os clusters do Dataproc sem servidor e do Dataproc no Compute Engine são compatíveis com kernels do PySpark. O Dataproc no Compute Engine também oferece suporte a kernels do Python.
Clique em um cartão PySpark na seção Notebooks sem servidor do Dataproc ou Notebook de cluster do Dataproc na página do Launcher do JupyterLab para abrir um notebook do PySpark.
Clique em um card do kernel do Python na seção Notebook de cluster do Dataproc na página do Launcher do JupyterLab para abrir um notebook do Python.
Desenvolvimento de código SQL
Clique no cartão do kernel do PySpark na seção Notebooks sem servidor do Dataproc ou Notebook de cluster do Dataproc da página do Launcher do JupyterLab para abrir um notebook do PySpark para gravar e executar o código SQL.
Mágico do Spark SQL: como o kernel do PySpark que inicia Notebooks sem servidor do Dataproc
é pré-carregado com o comando mágico Spark SQL, em vez de usar spark.sql('SQL STATEMENT').show()
para agrupar sua instrução SQL, digite
%%sparksql magic
na parte superior de uma célula e digite a instrução SQL nela.
BigQuery SQL:com o conector Spark do BigQuery, o código do seu notebook pode carregar dados de tabelas do BigQuery, realizar análises no Spark e gravar os resultados em uma tabela do BigQuery.
O ambiente de execução do Dataproc sem servidor 2.1 inclui o conector do BigQuery Spark. Se você usa o ambiente de execução sem servidor do Dataproc 2.0 ou anterior para iniciar notebooks sem servidor do Dataproc, instale o conector do Spark para o BigQuery adicionando a seguinte propriedade do Spark ao modelo de ambiente de execução sem servidor do Dataproc:
spark.jars: gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.25.2.jar
Desenvolvimento de código em Scala
Os clusters do Dataproc no Compute Engine criados com as versões de imagem 2.0 e 2.1 ou posteriores incluem o Apache Toree, um kernel do Scala da plataforma Jupyter Notebook que fornece acesso interativo ao Spark.
Clique no cartão Apache Toree na seção Notebook de cluster do Dataproc na página Launcher do JupyterLab para abrir um notebook para desenvolvimento de código do Scala.
Pesquisador de metadados
Se uma instância do Metastore do Dataproc (DPMS) estiver anexada a um modelo de ambiente de execução sem servidor do Dataproc ou a um cluster do Dataproc no Compute Engine, o esquema da instância do DPMS será exibido no JupyterLab Metadata Explorer quando um notebook for aberto. O DPMS é um serviço Hive Metastore (HMS) totalmente gerenciado e escalonável horizontalmente no Google Cloud.
Para visualizar metadados HMS no Explorador de metadados:
Ative a API Data Catalog no seu projeto.
Ative a sincronização do Data Catalog no seu serviço DPMS.
Especifique uma instância do DPMS ao criar o modelo de ambiente de execução sem servidor do Dataproc ou ao criar o cluster do Dataproc no Compute Engine.
Para abrir o JupyterLab Metadata Explorer, clique no ícone dele na barra lateral.
Você pode pesquisar um banco de dados, tabela ou coluna no Explorador de metadados. Clique no nome de um banco de dados, tabela ou coluna para visualizar os metadados associados.
Implantar o código
Depois de instalar o plug-in JupyterLab do Dataproc, use-o para:
Executar o código do notebook na infraestrutura sem servidor do Dataproc
Enviar jobs em lote para a infraestrutura sem servidor do Dataproc ou para o cluster do Dataproc no Compute Engine.
Executar o código do notebook no Dataproc sem servidor
Clique no ícone Executar ou pressione as teclas Shift-Return para executar o código em uma célula do notebook.
Use o menu Executar para executar o código em uma ou mais células do notebook.
Enviar um job em lote para o Dataproc sem servidor
Clique no cartão Sem servidor na seção Jobs e sessões do Dataproc na página Acesso rápido do JupyterLab.
Clique na guia Lote, depois em Criar lote e preencha os campos Informações do lote.
Clique em Enviar para enviar o job.
Enviar um job em lote para um cluster do Dataproc no Compute Engine
Clique no cartão Clusters na seção Jobs e sessões do Dataproc na página Acesso rápido do JupyterLab.
Clique na guia Jobs e, em seguida, clique em Enviar job.
Selecione um Cluster e preencha os campos de Job.
Clique em Enviar para enviar o job.
Ver e gerenciar recursos
Depois de instalar o plug-in JupyterLab do Dataproc, visualize e gerencie o Dataproc sem servidor e o Dataproc no Compute Engine a partir da seção Jobs e sessões do Dataproc na página Launcher do JupyterLab.
Clique na seção Jobs e sessões do Dataproc para mostrar os cards Clusters e Sem servidor.
Para visualizar e gerenciar sessões do Dataproc sem servidor:
- Clique no cartão Sem servidor.
- Clique na guia Sessões e em um ID de sessão para abrir a página Detalhes da sessão e visualizar as propriedades da sessão, o registro do Google Cloud na Análise de registros e encerrar uma sessão. Observação: uma sessão exclusiva do Dataproc sem servidor é criada para iniciar cada notebook do Dataproc sem servidor.
Para visualizar e gerenciar lotes sem servidor do Dataproc:
- Clique na guia Lotes para visualizar a lista de lotes do Dataproc sem servidor no projeto e na região atuais. Clique em um ID de lote para visualizar os detalhes.
Para ver e gerenciar o Dataproc em clusters do Compute Engine:
- Clique no card Clusters. A guia Clusters é selecionada para listar clusters ativos do Dataproc no Compute Engine no projeto e na região atuais. É possível clicar nos ícones da coluna Ações para iniciar, interromper ou reiniciar um cluster. Clique no nome de um cluster para consultar os detalhes dele. É possível clicar nos ícones da coluna Ações para clonar, interromper ou excluir um job.
Para ver e gerenciar jobs do Dataproc no Compute Engine:
- Clique no cartão Jobs para ver a lista de jobs do projeto atual. Clique em um ID de job para consultar os detalhes.