Objetivos
En este tutorial se explica cómo hacer lo siguiente:
- Crea un clúster de Dataproc e instala Apache HBase y Apache ZooKeeper en él
- Crea una tabla de HBase con el shell de HBase que se ejecuta en el nodo maestro del clúster de Dataproc
- Usar Cloud Shell para enviar una tarea de Spark de Java o PySpark al servicio Dataproc que escribe datos en la tabla de HBase y, a continuación, lee datos de ella
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Antes de empezar
Si aún no lo has hecho, crea un proyecto de Google Cloud Platform.
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. Ejecuta el siguiente comando en un terminal de sesión de Cloud Shell para hacer lo siguiente:
- Instala los componentes HBase y ZooKeeper.
- Aprovisiona tres nodos de trabajador (se recomienda usar entre tres y cinco trabajadores para ejecutar el código de este tutorial).
- Habilita Pasarela de componentes.
- Usar la versión 2.0 de la imagen
- Usa la marca
--properties
para añadir la configuración y la biblioteca de HBase a las rutas de clase del controlador y del ejecutor de Spark.
Desde la Google Cloud consola o un terminal de sesión de Cloud Shell, conéctate al nodo maestro del clúster de Dataproc mediante SSH.
Verifica la instalación del conector Apache HBase Spark en el nodo maestro:
Ejemplo de salida:ls -l /usr/lib/spark/jars | grep hbase-spark
-rw-r--r-- 1 root root size date time hbase-spark-connector.version.jar
Mantén abierto el terminal de la sesión SSH para lo siguiente:
- Crear una tabla de HBase
- (Usuarios de Java): ejecuta comandos en el nodo maestro del clúster para determinar las versiones de los componentes instalados en el clúster.
- Escanea tu tabla de Hbase después de ejecutar el código.
Abre el shell de HBase:
hbase shell
Crea una tabla de HBase llamada "my-table" con una familia de columnas "cf":
create 'my_table','cf'
- Para confirmar la creación de la tabla, en la consola Google Cloud , haz clic en HBase
en los enlaces de Component Gateway de la consolaGoogle Cloud
para abrir la interfaz de usuario de Apache HBase.
my-table
se muestra en la sección Tablas de la página Principal.
- Para confirmar la creación de la tabla, en la consola Google Cloud , haz clic en HBase
en los enlaces de Component Gateway de la consolaGoogle Cloud
para abrir la interfaz de usuario de Apache HBase.
Abre una terminal de sesión de Cloud Shell.
Clona el repositorio de GitHub GoogleCloudDataproc/cloud-dataproc en el terminal de tu sesión de Cloud Shell:
git clone https://github.com/GoogleCloudDataproc/cloud-dataproc.git
Cambia al directorio
cloud-dataproc/spark-hbase
: Ejemplo de salida:cd cloud-dataproc/spark-hbase
user-name@cloudshell:~/cloud-dataproc/spark-hbase (project-id)$
Envía la tarea de Dataproc.
- Define las versiones de los componentes en el archivo
pom.xml
.- En la página Versiones de lanzamiento de Dataproc 2.0.x se indican las versiones de los componentes Scala, Spark y HBase instaladas con las cuatro últimas versiones secundarias de la imagen 2.0 y la más reciente.
- Para encontrar la versión secundaria de tu clúster con la versión de imagen 2.0, haz clic en el nombre del clúster en la página Clústeres de la consolaGoogle Cloud para abrir la página Detalles del clúster, donde se muestra la Versión de imagen del clúster.
- Para encontrar la versión secundaria de tu clúster con la versión de imagen 2.0, haz clic en el nombre del clúster en la página Clústeres de la consolaGoogle Cloud para abrir la página Detalles del clúster, donde se muestra la Versión de imagen del clúster.
- También puede ejecutar los siguientes comandos en un terminal de sesión SSH desde el nodo maestro de su clúster para determinar las versiones de los componentes:
- Comprueba la versión de Scala:
scala -version
- Comprueba la versión de Spark (pulsa Ctrl + D para salir):
spark-shell
- Comprueba la versión de HBase:
hbase version
- Identifica las dependencias de las versiones de Spark, Scala y HBase en Maven
pom.xml
: Nota:<properties> <scala.version>scala full version (for example, 2.12.14)</scala.version> <scala.main.version>scala main version (for example, 2.12)</scala.main.version> <spark.version>spark version (for example, 3.1.2)</spark.version> <hbase.client.version>hbase version (for example, 2.2.7)</hbase.client.version> <hbase-spark.version>1.0.0(the current Apache HBase Spark Connector version)> </properties>
hbase-spark.version
es la versión actual del conector Spark HBase. No cambies este número de versión.
- Comprueba la versión de Scala:
- Edita el archivo
pom.xml
en el editor de Cloud Shell para insertar los números de versión correctos de Scala, Spark y HBase. Cuando termines de editar, haz clic en Abrir terminal para volver a la línea de comandos del terminal de Cloud Shell.cloudshell edit .
- Cambia a Java 8 en Cloud Shell. Esta versión del JDK es necesaria para compilar el código (puedes ignorar los mensajes de advertencia de los complementos):
sudo update-java-alternatives -s java-1.8.0-openjdk-amd64 && export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
- Verifica la instalación de Java 8:
Ejemplo de salida:java -version
openjdk version "1.8..."
- En la página Versiones de lanzamiento de Dataproc 2.0.x se indican las versiones de los componentes Scala, Spark y HBase instaladas con las cuatro últimas versiones secundarias de la imagen 2.0 y la más reciente.
- Crea el archivo
jar
: El archivomvn clean package
.jar
se coloca en el subdirectorio/target
(por ejemplo,target/spark-hbase-1.0-SNAPSHOT.jar
. Envía el trabajo.
gcloud dataproc jobs submit spark \ --class=hbase.SparkHBaseMain \ --jars=target/filename.jar \ --region=cluster-region \ --cluster=cluster-name
--jars
: inserta el nombre de tu archivo.jar
después de "target/" y antes de ".jar".- Si no has definido las rutas de clase de HBase del controlador y del ejecutor de Spark al crear el clúster, debes definirlas con cada envío de trabajo. Para ello, incluye la siguiente marca
‑‑properties
en el comando de envío de trabajo:--properties='spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
Consulta la salida de la tabla de HBase en la salida del terminal de la sesión de Cloud Shell:
Waiting for job output... ... +----+----+ | key|name| +----+----+ |key1| foo| |key2| bar| +----+----+
Envía el trabajo.
gcloud dataproc jobs submit pyspark scripts/pyspark-hbase.py \ --region=cluster-region \ --cluster=cluster-name
- Si no has definido las rutas de clase de HBase del controlador y del ejecutor de Spark al crear el clúster, debes definirlas con cada envío de trabajo. Para ello, incluye la siguiente marca
‑‑properties
en el comando de envío de trabajo:--properties='spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
- Si no has definido las rutas de clase de HBase del controlador y del ejecutor de Spark al crear el clúster, debes definirlas con cada envío de trabajo. Para ello, incluye la siguiente marca
Consulta la salida de la tabla de HBase en la salida del terminal de la sesión de Cloud Shell:
Waiting for job output... ... +----+----+ | key|name| +----+----+ |key1| foo| |key2| bar| +----+----+
- Abre el shell de HBase:
hbase shell
- Escanear "mi-mesa":
Ejemplo de salida:scan 'my_table'
ROW COLUMN+CELL key1 column=cf:name, timestamp=1647364013561, value=foo key2 column=cf:name, timestamp=1647364012817, value=bar 2 row(s) Took 0.5009 seconds
Limpieza
Cuando hayas terminado el tutorial, puedes eliminar los recursos que has creado para que dejen de usar cuota y generar cargos. En las siguientes secciones se explica cómo eliminar o desactivar dichos recursos.
Eliminar el proyecto
La forma más fácil de evitar que te cobren es eliminar el proyecto que has creado para el tutorial.
Para ello, sigue las instrucciones que aparecen a continuación:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimina el clúster
- Para eliminar tu clúster, sigue estos pasos:
gcloud dataproc clusters delete cluster-name \ --region=${REGION}
Crear una agrupación Dataproc
gcloud dataproc clusters create cluster-name \ --region=region \ --optional-components=HBASE,ZOOKEEPER \ --num-workers=3 \ --enable-component-gateway \ --image-version=2.0 \ --properties='spark:spark.driver.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*,spark:spark.executor.extraClassPath=/etc/hbase/conf:/usr/lib/hbase/*'
Verificar la instalación del conector
Crear una tabla de HBase
Ejecuta los comandos que se indican en esta sección en la sesión SSH del terminal del nodo maestro que has abierto en el paso anterior.
Ver el código de Spark
Java
Python
Ejecutar el código
Java
Python
Analizar la tabla de HBase
Para analizar el contenido de tu tabla de HBase, ejecuta los siguientes comandos en el terminal de la sesión SSH del nodo maestro que has abierto en Verificar la instalación del conector: