Criar uma sessão do Dataproc sem servidor para a sessão interativa do Spark

Aprender a usar o Dataproc sem servidor para sessões do Spark Interactive para escrever e executar código em notebooks do Jupyter.

Limitações da versão de pré-lançamento

  • 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.
  • As métricas de faturamento não são registradas no Stackdriver. O Dataproc para Spark Serverless Interactive não tem custo financeiro durante o pré-lançamento.
  • As GPUs ainda não são compatíveis.
  • As sessões são encerradas após 24 horas, independentemente da configuração da propriedade max session time no modelo de ambiente de execução. Essa limitação vai ser removida da versão de disponibilidade geral.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Dataproc API.

    Enable the API

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Enable the Dataproc API.

    Enable the API

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init

Criar uma sessão interativa sem servidor do Dataproc para Spark

Abra os notebooks do Jupyter em sessões sem servidor do Dataproc para sessões do Spark Interactive. Durante a versão da Visualização interativa sem servidor do Dataproc, é possível criar uma sessão de duas maneiras:

  1. Use o plug-in Dataproc JupyterLab para criar modelos que os usuários possam usar para iniciar sessões com base nas configurações do modelo.

  2. Usar o Vertex AI Workbench para criar uma sessão gerenciada pelo Google.

Plug-in JupyterLab

Nas seções a seguir, mostramos como criar uma sessão do Dataproc sem servidor para o Spark Interactive usando o plug-in do Dataproc JupyterLab.

Configurar sua máquina

É possível configurar e executar este guia de início rápido em uma máquina que tenha acesso aos serviços do Google, como sua máquina local ou uma instância de VM do Compute Engine.

  1. Verifique se o Python 3.8+ está instalado na sua máquina. É possível fazer o download e instalar o Python em python.or/downloads (em inglês).

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

      python3 --version
      
  2. Instale [JupyterLab 3.6.3+] e na sua máquina.

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

      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 a 4.0.0, ative a extensão de plug-in.

      jupyter server extension enable dataproc_jupyter_plugin
      
  4. Iniciar o JupyterLab

    jupyter lab
    
    1. A página da tela de início do Jupyter é aberta no navegador. Ela 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 aos notebooks sem servidor ou clusters do Dataproc com o componente opcional Jupyter em execução no seu projeto.

    2. Por padrão, a sessão do Dataproc sem servidor para Spark Interactive é executada no projeto e na região que você definiu quando executou gcloud init em Antes de começar. É possível alterar as configurações de projeto e 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 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 de cluster do Dataproc na página do JupyterLab Launcher.

  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-redes em todas as portas. Consulte Dataproc sem servidor para configuração de rede Spark. Se a sub-rede da rede default para a região configurada ao executar gcloud init em Antes de começar não estiver ativada para o Acesso privado do Google, ative 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: use os campos nesta seção para escolher um serviço Metastore do Dataproc disponível para usar com sua sessão.

    • Tempo máximo de inatividade: tempo máximo de inatividade do notebook antes que a sessão seja encerrada automaticamente. Intervalo permitido: 10 minutos a 336 horas (14 dias).

    • Tempo máximo da sessão:ciclo de vida máximo de uma sessão antes que ela seja encerrada automaticamente. Intervalo permitido: 10 minutos a 336 horas (14 dias).

    • PHS: é possível selecionar um servidor de histórico permanente do Spark disponível para acessar os registros da sessão durante e após a sessão.

    • Propriedades do Spark: clique em Adicionar propriedade para cada propriedade que será definida para suas sessões do Spark sem servidor. Consulte Configuração de rede do Dataproc sem servidor para Spark para uma explicação das propriedades do Spark com ou sem suporte.

    • Rótulos:clique em Adicionar rótulo para cada rótulo que você quer definir nas sessões do Spark sem servidor.

  4. A página Configurações do Dataproc lista os modelos de ambiente de execução. É possível excluir um modelo da lista no menu Action para cada um deles.

  5. Clique em Save.

  6. Abra e atualize a página de acesso rápido para ver o card de modelo de notebook salvo na tela de início do JupyterLab.

gcloud

  1. Crie um arquivo YAML com a configuração do modelo de ambiente de execução.

    Exemplo:

    environmentConfig:
      executionConfig:
        networkUri: default
    jupyterSession:
      kernel: PYTHON
      displayName: Team A
    labels:
      purpose: testing
    description: Team A Development Environment
    

    Se a sub-rede da rede default para a região configurada ao executar gcloud init em Antes de começar não estiver ativada para o Acesso privado do Google, ative 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. Execute o comando gcloud beta Dataproc session-templates import a seguir localmente ou no Cloud Shell para criar um modelo de sessão (ambiente de execução) com base em um arquivo YAML.

    gcloud beta dataproc session-templates import TEMPLATE_ID \
        --source=YAML_FILE \
        --project=PROJECT_ID \
        --location=REGION
    

Abrir um notebook

A seção Notebooks sem servidor do Dataproc na página do JupyterLab Launcher exibe cards de modelo de notebook que mapeiam os kernels do ambiente de execução especificados pelos modelos de ambiente de execução sem servidor.

  1. Clique em um card do kernel do ambiente de execução para criar uma sessão e abrir um notebook. Quando a criação da sessão é concluída e o kernel está pronto para uso, o status dele muda de Unknown para Idle, e um notebook é aberto.

    Para ver o status da sessão, clique no card Sem servidor na seção Jobs e sessão do Dataproc da página de início do JupyterLab e clique na guia Sessões. O status da sessão mudará de Creating para Active quando ela estiver totalmente provisionada e pronta para executar o código.

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

    1. Copie e cole o seguinte código Pi estimation do PySpark na célula do notebook do 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 Encerrar kernel na guia Kernel.

    • Se você não encerrar a sessão, o Dataproc encerrará a sessão quando o timer de inatividade da sessão expirar. Você pode 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.

Vertex AI

Nesta seção, mostramos como usar o Vertex AI Workbench para criar uma sessão gerenciada e, em seguida, abrir e usar um notebook do PySpark na sessão.

  1. Acesse a página do Vertex AI Workbench no console do Google Cloud. Clique em Novo notebook para abrir um novo notebook gerenciado.
  2. Preencha os campos na página Criar um notebook gerenciado:
    1. Nome do notebook:insira um nome para o notebook.
    2. Região:selecione uma região na lista. Os notebooks gerenciados da Vertex AI estão disponíveis nas regiões listadas.
    3. Permissão:selecione Single user only.
    4. E-mail do usuário:digite seu endereço de e-mail.
    5. Clique em Criar para criar o notebook e retornar à página do Vertex AI Workbench.
  3. Seu notebook está listado na página do Vertex AI Workbench. Clique em Abrir JupyterLab na linha do notebook depois que esse link for ativado.
  4. Na caixa de diálogo Autenticar seu notebook gerenciado exibida, clique em Autenticar para permitir que o Vertex AI Workbench acesse os dados e autentique o notebook gerenciado. Em seguida, selecione sua conta e permita o acesso para abrir o JupyterLab.
  5. Na guia Launcher do notebook, selecione Serverless Spark para criar uma sessão.
  6. Preencha a página Criar sessão do Spark sem servidor:
    1. Nome da sessão:insira um nome para sua sessão. Cada sessão é compatível com um notebook do Jupyter.
    2. Idioma:selecione PySpark.
    3. Configuração de execução: deixe o item da conta de serviço em branco para usar a conta de serviço padrão do Compute Engine.
    4. Configuração de rede:
      1. Clique em Redes neste projeto. A sub-rede VPC que executa uma sessão precisa atender aos requisitos listados em Configuração de rede do Dataproc sem servidor para Spark.
      2. Selecione uma rede e uma sub-rede no projeto na lista. A lista exibe sub-redes na rede selecionada que estão ativadas para o Acesso privado do Google.
    5. Clique em Enviar para iniciar a sessão. O Registro de atividades mostra o progresso da inicialização da sessão.
      Também é possível monitorar o status da sua sessão na página Sessões do Dataproc no console do Google Cloud.
  7. Quando a inicialização da sessão for concluída, uma guia do notebook Untitled.ipynb será aberta no JupyterLab. Copie e cole o seguinte código Pi estimation do PySpark na célula do notebook do 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))
    
  8. Feche a guia do notebook Untitled.ipynb. Tentativas sem servidor do Dataproc para detectar e encerrar a sessão depois de fechar um notebook no JupyterLab.