Use o plug-in Dataproc JupyterLab para sessões interativas de notebook e lote sem servidor

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

  1. 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.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Ative a API Dataproc.

    Ative a API

  4. Instale a CLI do Google Cloud.
  5. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  6. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  7. Ative a API Dataproc.

    Ative a API

  8. Instale a CLI do Google Cloud.
  9. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Instalar o plug-in do Dataproc JupyterLab

É possível instalar e usar o plug-in JupyterLab do Dataproc em uma máquina ou VM que tenha 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:

  1. Verifique se o Python 3.8+ está instalado na sua máquina. Faça o download e instale o Python em python.org/downloads (em inglês).

    1. Verifique a instalação do Python 3.8+.

      python3 --version
      
  2. Instale o JupyterLab 3.6.3+ na sua máquina.

    pip3 install --upgrade jupyterlab
    
    1. Verifique a instalação do JupyterLab 3.6.3+.

      pip3 show jupyterlab
      
  3. Instalar o plug-in do Dataproc JupyterLab.

    pip3 install dataproc-jupyter-plugin
    
    1. Se sua versão do JupyterLab for anterior à 4.0.0, ative a extensão do plug-in.

      jupyter server extension enable dataproc_jupyter_plugin
      
  4. Inicie o JupyterLab.

    jupyter lab
    
    1. A página Iniciador do JupyterLab será aberta no navegador. Ele contém uma 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 a notebooks sem servidor do Dataproc ou clusters do Dataproc com o componente opcional Jupyter em execução no projeto.

    2. Por padrão, a sessão do Dataproc Serverless para Spark Interactive é executada no projeto e na região definidos quando você executou gcloud init em Antes de começar. É possível alterar as configurações do projeto e da região das 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 configurações 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

  1. Clique no card New runtime template na seção Notebooks sem servidor do Dataproc na página Iniciador do JupyterLab.

  2. Preencha o formulário Modelo de ambiente de execução.

  3. 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 Dataproc sem servidor para configuração de rede do Spark.

      Se a sub-rede da rede default para a região configurada quando você executou gcloud init em Antes de começar não estiver ativada para o Acesso privado do Google:

      • Ative o recurso 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 do metastore do Dataproc nas suas sessões, selecione o ID do projeto, a região e o serviço do metastore.

    • Tempo máximo de inatividade: o tempo máximo de inatividade do notebook antes do encerramento da sessão. 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 do Spark permanente disponível para acessar os registros durante e após as sessões.

    • Propriedades do Spark: clique em Adicionar propriedade para cada propriedade a ser definida para sessões do Spark sem servidor. Consulte Propriedades do Spark para ver uma lista de propriedades compatíveis e incompatíveis do Spark, incluindo o ambiente de execução, os recursos e as propriedades de escalonamento automático.

    • Rótulos: clique em Adicionar rótulo para cada rótulo a ser definido nas sessões do Spark sem servidor.

  4. Confira os modelos de ambiente de execução na página Configurações > Configurações do Dataproc.

    • É possível excluir um modelo do menu Ação do modelo.
  5. Clique em Salvar.

  6. Abra e recarregue a página Iniciador do JupyterLab para visualizar o card do modelo de notebook salvo na página de Iniciador do JupyterLab.

gcloud

  1. 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 para a região configurada quando você executou gcloud init em Antes de começar não estiver ativada para o Acesso privado do Google:

    • Ative o recurso 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.
  2. 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
    

Iniciar e gerenciar notebooks

Depois de instalar o plug-in do Dataproc JupyterLab, é possível clicar nos cards de modelo na página Iniciador 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 exibe cards de modelos de notebook que são mapeados para os modelos de ambiente de execução do Dataproc sem servidor. Consulte Criar um modelo de ambiente de execução do Dataproc sem servidor.

  1. Clique em um card para criar uma sessão do Dataproc sem servidor e iniciar um notebook. Quando a criação da sessão for concluída e o kernel do notebook estiver pronto para uso, o status do kernel mudará de Unknown para Idle.

  2. Escreva e teste o código do notebook.

    1. Copie e cole o código Pi estimation do PySpark a seguir 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:

  3. Depois de criar e usar um notebook, é possível encerrar a sessão dele clicando em Desligar o 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 cluster do Jupyter do Dataproc no Compute Engine, a página Iniciador do JupyterLab contém uma seção Notebook de cluster do Dataproc com cartões de kernel pré-instalados.

Para iniciar um notebook do Jupyter no cluster do Dataproc no Compute Engine:

  1. Clique em um card na seção Notebook de cluster do Dataproc.

  2. Quando o status do kernel muda de Unknown para Idle, é possível começar a escrever e executar o código do notebook.

  3. Depois de criar e usar um notebook, é possível encerrar a sessão dele clicando em Desligar o 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 envolve 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 Inicializador do JupyterLab e clique duas vezes em uma pasta para visualizar o conteúdo.

  • Clique nos tipos de arquivo 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 de nova pasta e insira o nome dela.

  • Para fazer upload de arquivos em um bucket ou em uma pasta do Cloud Storage, clique no ícone de upload e selecione os arquivos.

Desenvolver o código do notebook Spark

Depois de instalar o plug-in Dataproc JupyterLab, inicie os notebooks do Jupyter na página Iniciador do JupyterLab para desenvolver o código do aplicativo.

Desenvolvimento de código em 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.

Desenvolvimento de código SQL

Clique no card do kernel do PySpark na seção Notebooks sem servidor do Dataproc ou Notebook do cluster do Dataproc da página Iniciador do JupyterLab para abrir um notebook PySpark para escrever e executar código SQL.

Mágica do Spark SQL: como o kernel do PySpark que inicia os Notebooks sem servidor do Dataproc é pré-carregado com o comando mágico do Spark SQL, em vez de usar spark.sql('SQL STATEMENT').show() para unir sua instrução SQL, digite %%sparksql magic na parte superior de uma célula e insira sua instrução SQL nela.

BigQuery SQL: o conector do BigQuery para Spark permite que o código do notebook carregue dados das tabelas do BigQuery, realize análises no Spark e grave os resultados em uma tabela do BigQuery.

O ambiente de execução do Dataproc sem servidor 2.1 inclui o conector do Spark do BigQuery. Se você usar o Dataproc sem servidor 2.0 ou um ambiente de execução anterior para iniciar notebooks do Dataproc sem servidor, poderá instalar o conector do BigQuery do Spark adicionando a seguinte propriedade do Spark ao modelo de ambiente de execução do Dataproc sem servidor:

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+, 2.1+ e posteriores incluem o Apache Toree, um kernel do Scala para a 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 Iniciador do JupyterLab para abrir um notebook para desenvolvimento de código Scala.

Explorador de metadados

Se uma instância do Metastore do Dataproc (DPMS) for anexada a um modelo de ambiente de execução do Dataproc sem servidor 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 os metadados HMS no Metadata Explorer:

Para abrir o JupyterLab Metadata Explorer, clique no ícone dele na barra lateral.

Você pode pesquisar um banco de dados, uma tabela ou uma coluna no Metadata Explorer. Clique em um banco de dados, tabela ou nome de coluna para visualizar os metadados associados.

Implantar seu código

Depois de instalar o plug-in do Dataproc JupyterLab, você poderá usar o JupyterLab para:

  • Execute o código do seu notebook na infraestrutura sem servidor do Dataproc

  • Envie jobs em lote para a infraestrutura do Dataproc sem servidor 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 + Enter 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 card Sem servidor na seção Jobs e sessões do Dataproc na página Iniciador do JupyterLab.

  • Clique na guia Batch e depois em Create Batch e preencha os campos de Batch Info.

  • Clique em Enviar para enviar o job.

Enviar um job em lote para um cluster do Dataproc no Compute Engine

  • Clique no card Clusters na seção Jobs e sessões do Dataproc na página Iniciador do JupyterLab.

  • Clique na guia Jobs e depois 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 Dataproc JupyterLab, será possível visualizar e gerenciar o Dataproc sem servidor e o Dataproc no Compute Engine na seção Jobs e sessões do Dataproc na página Iniciador do JupyterLab.

Clique na seção Jobs e sessões do Dataproc para mostrar os cartões Clusters e Sem servidor.

Para visualizar e gerenciar sessões do Dataproc sem servidor:

  1. Clique no cartão Sem servidor.
  2. Clique na guia Sessões, depois em um ID de sessão para abrir a página Detalhes da sessão para visualizar as propriedades da sessão, ver os registros 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 desse serviço.

Para visualizar e gerenciar lotes do Dataproc sem servidor:

  1. Clique na guia Lotes para visualizar a lista de lotes do Dataproc sem servidor no projeto e na região atuais. Clique no ID de um lote para visualizar os detalhes dele.

Para visualizar e gerenciar clusters do Dataproc no Compute Engine:

  1. Clique no card Clusters. A guia Clusters está selecionada para listar clusters ativos do Dataproc no Compute Engine no projeto e na região atuais. Clique nos ícones da coluna Ações para iniciar, interromper ou reiniciar um cluster. Clique no nome de um cluster para visualizar os detalhes dele. Clique nos ícones da coluna Ações para clonar, interromper ou excluir um job.

Para visualizar e gerenciar jobs do Dataproc no Compute Engine:

  1. Clique no card Jobs para ver a lista de jobs no projeto atual. Clique em um ID de job para ver os detalhes.