Configurar o Dataproc Hub

O Dataproc Hub é um servidor Jupyterhub personalizado. Os administradores configuram e criam instâncias do Dataproc Hub que podem gerar clusters do Dataproc de usuário único para hospedar ambientes de notebook Jupyter e JupyterLab (consulte Usar o Dataproc Hub).

Objetivos

  1. Defina uma configuração de cluster do Dataproc Hub.

  2. Definir variáveis de ambiente da instância do Dataproc Hub.

  3. Crie uma instância do Dataproc Hub .

Antes de começar

Se ainda não tiver feito isso, crie um projeto do Google Cloud e um bucket do Cloud Storage.

  1. Como configurar o projeto

    1. Faça login na sua conta do Google.

      Se você ainda não tiver uma, inscreva-se.

    2. No Console do Cloud, na página do seletor de projetos, selecione ou crie um projeto do Cloud.

      Acessar a página do seletor de projetos

    3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como confirmar se a cobrança está ativada para o seu projeto.

    4. Ative as APIs Dataproc, Compute Engine, and Cloud Storage.

      Ative as APIs

    5. Instale e inicialize o SDK do Cloud..

  2. Como criar um bucket do Cloud Storage em seu projeto para armazenar os dados usados neste tutorial.

    1. No Console do Cloud, acesse a página Navegador do Cloud Storage.

      Acessar a página "Navegador do Cloud Storage"

    2. Clique em Criar bucket.
    3. Na caixa de diálogo Criar bucket, especifique os seguintes atributos.
    4. Clique em Criar

Defina uma configuração de cluster

Uma instância do Dataproc Hub cria um cluster a partir de valores de configuração contidos em um arquivo de configuração de cluster YAML.

A configuração do cluster pode especificar qualquer recurso ou componente disponível para clusters do Dataproc (como tipo de máquina, ações de inicialização e componentes opcionais).

Amostra do arquivo de configuração do cluster YAML

clusterName: cluster-name
config:
  gceClusterConfig:
    metadata:
      'PIP_PACKAGES': 'google-cloud-core>=1.3.0 google-cloud-storage>=1.28.1'
  initializationActions:
  - executableFile: gs://dataproc-initialization-actions/python/pip-install.sh
  softwareConfig:
    imageVersion: 1.5-ubuntu18
    optionalComponents:
    - ANACONDA
    - JUPYTER

Cada configuração precisa ser salva no Cloud Storage. Você pode criar e salvar vários arquivos de configuração dos dois tipos para oferecer aos usuários uma opção quando eles usam o Dataproc Hub para criar o ambiente do Dataproc Notebook.

Há duas maneiras de criar um arquivo de configuração de cluster YAML:

  1. Crie um arquivo de configuração de cluster YAML no console

  2. Exporte um arquivo de configuração de cluster YAML de um cluster existente

Crie um arquivo de configuração de cluster YAML no console

  1. Abra a página Criar um cluster no Console do Cloud.
  2. Selecione e preencha os campos para especificar o tipo de cluster que o Dataproc Hub gerará para os usuários.
    1. Na parte inferior da página, selecione "REST equivalente".
    2. Copie o bloco JSON gerado, excluindo a linha de solicitação POST principal e cole o bloco JSON em uma conversão JSON para YAML on-line (pesquise "Converter JSON em YAML").
    3. Copie o YAML convertido em um arquivo cluster-config-filename .yaml local.

Exporte um arquivo de configuração de cluster YAML de um cluster existente

  1. Crie um cluster que corresponda aos seus requisitos.
  2. Exporte a configuração do cluster para um arquivo yaml cluster-config-filename local.
    gcloud dataproc clusters export cluster-name \
        --destination cluster-config-filename.yaml  \
        --region region
     

Salve o arquivo de configuração YAML no Cloud Storage

Copie o arquivo de configuração do cluster YAML local para o bucket do Cloud Storage.

gsutil cp cluster-config-name.yaml gs://bucket-name/

Defina variáveis de ambiente da instância do Dataproc Hub

Crie um arquivo de texto que defina as variáveis de ambiente da instância do Dataproc Hub. Ele precisa definir variáveis obrigatórias e definir variáveis opcionais para permitir que os usuários personalizem o cluster do Dataproc gerado pela instância do Dataproc Hub.

Variável Obrigatório/Opcional Descrição Exemplo
NOTEBOOKS_LOCATION Valor Bucket do Cloud Storage ou pasta do bucket que contém blocos de notas do usuário. O prefixo gs:// é opcional. gs://bucket-name/
DATAPROC_CONFIGS Valor Lista delimitada por vírgulas de strings dos caminhos do Cloud Storage para arquivos de configuração do cluster YAML. O prefixo gs:// é opcional. gs://bucket-name/folder/cluster-config-filename1.yaml,gs://bucket/folder/cluster-config-filename2.yaml
DATAPROC_LOCATIONS_LIST Valor Sufixos de zona na região em que a instância do Dataproc Hub está localizada. Os usuários podem selecionar uma dessas zonas como a zona em que o cluster do Dataproc será gerado. b,c,d
DATAPROC_DEFAULT_SUBNET Opcional Sub-rede em que a instância do Dataproc Hub gerará clusters do Dataproc. Precisa ser igual à sub-rede do Dataproc Hub. https://www.googleapis.com/compute/v1/projects/project-id/regions/region/subnetworks/subnet-name
DATAPROC_SERVICE_ACCOUNT Opcional Conta de serviço que será executada em clusters de usuários gerados. Se não for definida, a conta de serviço padrão para clusters do Dataproc será usada. service-account@project-id.iam.gserviceaccount.com
SPAWNER_DEFAULT_URL Opcional Se a IU do Jupyter ou do JupyterLab será exibida em clusters gerados pelo Dataproc por padrão. / ou /lab, para Jupyter ou JupyterLab, respectivamente.
DATAPROC_ALLOW_CUSTOM_CLUSTERS Opcional Se os usuários podem personalizar os clusters do Dataproc. true ou false
DATAPROC_MACHINE_TYPES Opcional Lista de tipos de máquinas que os usuários podem escolher para os clusters gerados pelo Dataproc, se a personalização do cluster (DATAPROC_ALLOW_CUSTOM_CLUSTERS) estiver ativada. n1-standard-4,n1-standard-8,e2-standard-4,n1-highcpu-4
NOTEBOOKS_EXAMPLES_LOCATION Opcional Caminho do Cloud Storage para o bucket to notebook ou a pasta do bucket a ser baixado para o cluster do Dataproc gerado quando o cluster for iniciado. gs://bucket-name/

Para criar um environment-variable-filename local que defina variáveis de ambiente da instância do Dataproc Hub, execute o comando a seguir. Preencha os valores de marcador e altere ou adicione variáveis e seus valores.

cat <<EOF > environment-variables-file
DATAPROC_CONFIGS=gs://bucket/cluster-config-name.yaml
NOTEBOOKS_LOCATION=gs://bucket/notebooks
DATAPROC_DEFAULT_SUBNET=https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/default
DATAPROC_LOCATIONS_LIST=b,c
EOF

Salve o arquivo de variáveis de ambiente da instância do Dataproc Hub no Cloud Storage

Copie o arquivo de variáveis de ambiente da instância do YAML Dataproc Hub local para o bucket do Cloud Storage.

gsutil cp environment-variable-filename gs://bucket-name/folder-name/

Defina papéis do IAM

Por padrão, a instância do Dataproc Hub será executada como a conta de serviço padrão do Compute Engine para o projeto. Você pode optar por criar a instância com uma conta de serviço diferente. A conta de serviço da instância do Dataproc Hub precisa ter os seguintes papéis de IAM (gerenciamento de identidade e acesso):

Para permitir que os usuários do projeto acessem a instância do Hub, também é necessário conceder o roles/iam.serviceAccountUser aos usuários individuais.

Como configurar papéis

Observe que a conta de serviço do hub e o usuário do notebook precisam receber o papel roles/iam.serviceAccountUser, mas cada um precisa ser aplicado a diferentes destinos: a conta de serviço do Hub precisa pode atuar como a conta de serviço do Dataproc, e o usuário precisa ser capaz de atuar como a conta de serviço do Hub. Para aplicar esses papéis:

  1. Conceda o papel serviceAccountUser no nível do projeto à conta de serviço do Hub (<hub-service-account>@<my-project>.iam.gserviceaccount.com) e ao usuário do notebook (<user>@gmail.com) para permitir que ambos atuem como qualquer conta de serviço no projeto. Conceda também o papel roles/dataproc.admin no nível do projeto à conta de serviço do Hub. OR

  2. Conceda os estes papéis aos seguintes agentes:

    • Conceda o papel roles/dataproc.worker à conta de serviço do Dataproc (<dataproc-service-account>@<my-project>.iam.gserviceaccount.com) .
    • Conceda os papéis roles/dataproc.admin e roles/iam.serviceAccountUser à conta de serviço do Hub (<hub-service-account>@<my-project>.iam.gserviceaccount.com). O papel serviceAccountUser pode ser concedido no nível do projeto ou para acesso à conta de serviço do Dataproc (<dataproc-service-account>@<my-project>.iam.gserviceaccount.com).
    • Conceda o papel roles/dataproc.admin ao usuário do notebook (<user>@gmail.com). Esse papel pode ser concedido no nível do projeto ou para acesso à conta de serviço do Hub (<hub-service-account>@<my-project>.iam.gserviceaccount.com).

Crie uma instância do Dataproc Hub

  1. Acesse a página Dataproc → Instâncias de notebooks no Console do Cloud.

  2. Clique em "NOVA INSTÂNCIA" e selecione "Smart Analytics Frameworks → Dataproc Hub".

  3. Na página Nova instância de notebook, forneça as seguintes informações:

    1. Nome da instância: nome da instância do Dataproc Hub.
    2. Região: selecione uma região para a instância do Dataproc Hub. Observação: os clusters do Dataproc gerados por essa instância do Dataproc Hub também serão criados nessa região.
    3. Zona: selecione uma zona na região selecionada.
    4. Ambiente: Dataproc Hub
      1. Variáveis de ambiente
        1. container-env-file: gs://<var>bucket-name</var>/folder-name<var>/<var>environment-variable-filename</var>. Forneça o nome e o local do Cloud Storage do arquivo de variáveis de ambiente da instância do Dataproc Hub.
    5. Configuração da máquina:
      1. Tipo de máquina: selecione o tipo de máquina para o Compute Engine.
      2. Defina outras opções de configuração de máquina.
    6. Clique em CRIAR para iniciar a instância.
  4. Quando a instância estiver em execução, clique no link "JupyterLab" na página de instâncias do Notebook para acessar a instância.

Limpar

Como excluir a instância do Dataproc Hub

  • Para excluir sua instância do Dataproc Hub:
    gcloud compute instances delete --project=${PROJECT} ${INSTANCE_NAME}
    

Exclusão do bucket

  • Para excluir o bucket do Cloud Storage criado em Antes de começar, incluindo os arquivos de dados armazenados no bucket:
    gsutil -m rm -r gs://${BUCKET_NAME}
    

A seguir