Instala y ejecuta un notebook de Jupyter en un clúster de Cloud Dataproc

Antes de comenzar

Si aún no lo has hecho, crea un proyecto de Google Cloud Platform y un depósito de Cloud Storage.

Configura tu proyecto

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. Selecciona o crea un proyecto de GCP.

    Ir a la página Administrar recursos

  3. Asegúrate de tener habilitada la facturación para tu proyecto.

    Aprende a habilitar la facturación

  4. Habilita las Cloud Dataproc y Compute Engine API necesarias.

    Habilita las API

  5. Realiza la instalación y la inicialización del SDK de Cloud.

Crea un depósito de Cloud Storage en tu proyecto

  1. En GCP Console, dirígete al navegador de Cloud Storage.

    Ir al navegador de Cloud Storage

  2. Haz clic en Crear depósito.
  3. En el diálogo Crear depósito especifica los siguientes atributos:
  4. Haz clic en Crear.
  5. Tus notebooks se almacenarán en Cloud Storage en gs://bucket-name/notebooks/.

Descripción general

En este instructivo, se demuestra la creación de un clúster de Cloud Dataproc con una secuencia de comandos de inicialización de shell Bash que instala y ejecuta un notebook de Jupyter en el clúster. La secuencia de comandos se encuentra en Cloud Storage en gs://dataproc-initialization-actions/jupyter/jupyter.sh y se ubica junto con otras secuencias de comandos de inicialización en el repositorio GoogleCloudPlatform/dataproc-initialization-actions.

Después de crear el clúster con una secuencia de comandos de inicialización que instala el notebook de Jupyter en el clúster, podrás ver en este instructivo cómo conectarte al notebook con tu navegador local.

#!/bin/bash

#

set -exo pipefail

readonly ROLE="$(/usr/share/google/get_metadata_value attributes/dataproc-role)"
readonly INIT_ACTIONS_REPO="$(/usr/share/google/get_metadata_value attributes/INIT_ACTIONS_REPO \
  || echo 'https://github.com/GoogleCloudPlatform/dataproc-initialization-actions.git')"
readonly INIT_ACTIONS_BRANCH="$(/usr/share/google/get_metadata_value attributes/INIT_ACTIONS_BRANCH \
  || echo 'master')"

readonly JUPYTER_CONDA_CHANNELS="$(/usr/share/google/get_metadata_value attributes/JUPYTER_CONDA_CHANNELS)"

readonly JUPYTER_CONDA_PACKAGES="$(/usr/share/google/get_metadata_value attributes/JUPYTER_CONDA_PACKAGES)"

echo "Cloning fresh dataproc-initialization-actions from repo ${INIT_ACTIONS_REPO} and branch ${INIT_ACTIONS_BRANCH}..."
git clone -b "${INIT_ACTIONS_BRANCH}" --single-branch "${INIT_ACTIONS_REPO}"

bash ./dataproc-initialization-actions/conda/bootstrap-conda.sh

if [[ -f /etc/profile.d/conda.sh ]]; then
  source /etc/profile.d/conda.sh
fi

if [[ -f /etc/profile.d/effective-python.sh ]]; then
  source /etc/profile.d/effective-python.sh
fi

PYTHON="$(ls /opt/conda/bin/python || which python)"
PYTHON_VERSION="$(${PYTHON} --version 2>&1 | cut -d ' ' -f 2)"
conda install jupyter matplotlib "python==${PYTHON_VERSION}"

conda install 'testpath<0.4'

if [ -n "${JUPYTER_CONDA_CHANNELS}" ]; then
  echo "Adding custom conda channels '${JUPYTER_CONDA_CHANNELS//:/ }'"
  declare -a a_channels=();
  a_channels=${JUPYTER_CONDA_CHANNELS//:/ };

  for channel in ${a_channels[@]};
  do
    conda config --add channels ${channel}
  done
fi

if [ -n "${JUPYTER_CONDA_PACKAGES}" ]; then
  echo "Installing custom conda packages '${JUPYTER_CONDA_PACKAGES/:/ }'"
  conda install ${JUPYTER_CONDA_PACKAGES//:/ }
fi

pip install jgscm==0.1.7

if [[ "${ROLE}" == 'Master' ]]; then
  ./dataproc-initialization-actions/jupyter/internal/setup-jupyter-kernel.sh
  ./dataproc-initialization-actions/jupyter/internal/launch-jupyter-kernel.sh
fi
echo "Completed installing Jupyter!"

if [[ ! -v "${INSTALL_JUPYTER_EXT}" ]]; then
  INSTALL_JUPYTER_EXT=false
fi
if [[ "${INSTALL_JUPYTER_EXT}" = true ]]; then
  echo "Installing Jupyter Notebook extensions..."
  ./dataproc-initialization-actions/jupyter/internal/bootstrap-jupyter-ext.sh
  echo "Jupyter Notebook extensions installed!"
fi

Crea un clúster e instala un notebook de Jupyter

Comando de gcloud

  1. Ejecuta el comando gcloud dataproc clusters create que se muestra a continuación de forma local en una ventana de la terminal o en Cloud Shell (Cloud Shell se ejecuta en Linux) para crear tu clúster e instalar tu notebook de Jupyter en el nodo principal del clúster. Inserta tus valores en los marcadores de posición cluster-name, project-id, y bucket-name. Para bucket-name, especifica el nombre del depósito que creaste en Crea un depósito de Cloud Storage en tu proyecto (solo especifica el nombre del depósito). Tus notebooks se almacenarán en Cloud Storage en gs://bucket-name/notebooks/. La marca --initialization-actions especifica la ubicación en Cloud Storage, en la que se encuentra la secuencia de comandos de inicialización (consulta Acciones de inicialización para obtener más información).

    Linux/macOS

    gcloud dataproc clusters create cluster-name \
        --project project-id \
        --bucket bucket-name \
        --initialization-actions \
            gs://dataproc-initialization-actions/jupyter/jupyter.sh
    

    Windows

    gcloud dataproc clusters create cluster-name ^
        --project project-id ^
        --bucket bucket-name ^
        --initialization-actions ^
            gs://dataproc-initialization-actions/jupyter/jupyter.sh
    

Console

  1. Ve a la página Clústeres de Cloud Dataproc de GCP Console.
  2. Haz clic en Create cluster (Crear clúster) para abrir la página Create a cluster (Crea un clúster).
  3. Ingresa el nombre de tu clúster en el campo Name (Nombre).
  4. Selecciona una región y zona para el clúster en los menús desplegables Region (Región) y Zone (Zona) (consulta Regiones y zonas disponibles). La región global, que es la predeterminada, es un espacio de nombres especial multirregión capaz de implementar instancias en todas las zonas de Compute Engine a nivel mundial. También puedes especificar una región determinada y seleccionar "No preference" (Sin preferencia) a fin de que la zona permita que Cloud Dataproc elija una zona dentro de la región seleccionada para tu clúster (consulta Ubicación de zona automática de Cloud Dataproc).
  5. Expande el panel de Advanced options (Opciones avanzadas).

  6. Ingresa el nombre del depósito que creaste en Crea un depósito de Cloud Storage en tu proyecto en el campo Cloud Storage staging bucket (Depósito de etapa de pruebas de Cloud Storage) (solo especifica el nombre del depósito). Tus notebooks se almacenarán en Cloud Storage en gs://bucket-name/notebooks/.
  7. Ingresa gs://dataproc-initialization-actions/jupyter/jupyter.sh en el campo Initialization actions (Acciones de inicialización). Esta secuencia de comandos, que configura y ejecuta un notebook de Jupyter en la instancia principal del clúster, se ejecutará de forma inmediata tras la creación del clúster nuevo.

    Puedes copiar y pegar el URI del bloque de código que se muestra a continuación.
    gs://dataproc-initialization-actions/jupyter/jupyter.sh
    
  8. Puedes mantener los valores predeterminados para todas las demás opciones.

  9. Haz clic en Crear para crear el clúster y luego instalar el notebook de Jupyter en el nodo principal del clúster.

Abre el notebook de Jupyter en tu navegador

Una vez que tu clúster se encuentre activo, realiza los pasos a continuación para abrir el notebook de Jupyter en tu navegador:

  1. Crea un túnel SSH. Actualmente, dado que Jupyter usa mensajes de protocolo de WebSocket, que no es compatible con Cloud Shell, no uses Cloud Shell con la redirección de puertos local para crear el túnel SSH. En su lugar, usa un proxy de SOCKS con redirección de puertos dinámica para crear el túnel SSH.

  2. Configura tu navegador.

  3. Conéctate a la interfaz del notebook. Dado que usaste un proxy de SOCKS con redirección de puertos dinámica para crear un túnel SSH, ingresa la siguiente URL en tu navegador a fin de conectarte a tu notebook: http://cluster-name-m:8123.

Se muestra la página de inicio del notebook de Jupyter en tu navegador local.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Dataproc
¿Necesitas ayuda? Visita nuestra página de asistencia.