La biblioteca Java de código abierto del conector de Cloud Storage te permite ejecutar tareas de Apache Hadoop o Apache Spark directamente en los datos de Cloud Storage.
Ventajas del conector de Cloud Storage
- Acceso directo a los datos: almacena tus datos en Cloud Storage y accede a ellos directamente. No es necesario que lo transfieras primero a HDFS.
- Compatibilidad con HDFS: puedes acceder a tus datos de Cloud Storage con el prefijo
gs://
en lugar dehdfs://
. - Interoperabilidad: almacenar datos en Cloud Storage permite una interoperabilidad fluida entre Spark, Hadoop y los servicios de Google.
- Accesibilidad de los datos: cuando apagas un clúster de Hadoop, a diferencia de HDFS, sigues teniendo acceso a tus datos en Cloud Storage.
- Alta disponibilidad de los datos: los datos almacenados en Cloud Storage tienen una alta disponibilidad y se replican a nivel mundial sin pérdida de rendimiento.
- Sin sobrecarga de gestión del almacenamiento: a diferencia de HDFS, Cloud Storage no requiere mantenimiento rutinario, como comprobar el sistema de archivos o actualizarlo o restaurar una versión anterior.
- Inicio rápido: en HDFS, un trabajo de MapReduce no puede iniciarse hasta que el
NameNode
salga del modo seguro, un proceso que puede tardar desde unos segundos hasta varios minutos, en función del tamaño y el estado de los datos. Con Cloud Storage, puedes empezar tu trabajo en cuanto se inicien los nodos de tareas, lo que supone un ahorro de costes significativo a lo largo del tiempo.
Configuración del conector en clústeres de Dataproc
El conector de Cloud Storage está instalado de forma predeterminada en todos los nodos del clúster de Dataproc en el directorio /usr/local/share/google/dataproc/lib/
. En las siguientes
subsecciones se describen los pasos que puedes seguir para completar la configuración del conector en clústeres de Dataproc.
Cuenta de servicio de la VM
Cuando se ejecuta el conector en nodos de clúster de Dataproc y otras VMs de Compute Engine, la propiedad google.cloud.auth.service.account.enable
se define como false
de forma predeterminada, lo que significa que no es necesario configurar las credenciales de la cuenta de servicio de la VM para el conector. El servidor de metadatos de la VM proporciona las credenciales de la cuenta de servicio de la VM.
La cuenta de servicio de la VM de Dataproc debe tener permiso para acceder a tu segmento de Cloud Storage.
Versiones de conectores seleccionadas por el usuario
Las versiones predeterminadas del conector de Cloud Storage que se usan en las imágenes más recientes instaladas en los clústeres de Dataproc se indican en las páginas de versiones de imágenes. Si tu aplicación depende de una versión de conector no predeterminada implementada en tu clúster, puedes realizar una de las siguientes acciones para usar la versión de conector seleccionada:
- Crea un clúster con la marca
--metadata=GCS_CONNECTOR_VERSION=x.y.z
para actualizar el conector que usan las aplicaciones que se ejecutan en el clúster a la versión de conector especificada. - Incluye y cambia la ubicación de las clases y las dependencias del conector de la versión que estés usando en el archivo JAR de tu aplicación. Es necesario cambiar la ubicación para evitar un conflicto entre la versión del conector implementada y la versión predeterminada del conector instalada en el clúster de Dataproc. Consulta también el ejemplo de cambio de ubicación de dependencias de Maven.
Configuración del conector en clústeres que no son de Dataproc
Puedes seguir estos pasos para configurar el conector de Cloud Storage en un clúster que no sea de Dataproc, como un clúster de Apache Hadoop o Spark, que uses para mover datos de HDFS on-premise a Cloud Storage.
Descarga el conector.
- Para descargar el conector de Cloud Storage, sigue estos pasos:
- Para usar una versión
latest
ubicada en un segmento de Cloud Storage (no se recomienda usar una versiónlatest
en aplicaciones de producción): - Para usar una versión específica de tu segmento de Cloud Storage, sustituye las versiones del conector de Hadoop y Cloud Storage en el patrón de nombre
gcs-connector-HADOOP_VERSION-CONNECTOR_VERSION.jar
, por ejemplo,gs://hadoop-lib/gcs/gcs-connector-hadoop2-2.1.1.jar
. - Para usar una versión específica del repositorio Apache Maven, descarga un archivo JAR sombreado que tenga el sufijo
-shaded
en el nombre.
- Para usar una versión
- Para descargar el conector de Cloud Storage, sigue estos pasos:
Instala el conector.
Sigue las instrucciones de GitHub para instalar, configurar y probar el conector de Cloud Storage.
Uso de conectores
Puedes usar el conector para acceder a los datos de Cloud Storage de las siguientes formas:
- En una aplicación de Spark, PySpark o Hadoop con el prefijo
gs://
- En un shell de Hadoop con
hadoop fs -ls gs://bucket/dir/file
- En el Navegador de Cloud Storage En la consola de Google Cloud
- Con los comandos del SDK de Google Cloud, como los siguientes:
Uso de Java
El conector de Cloud Storage requiere Java 8.
A continuación, se muestra un ejemplo de la sección de gestión de dependencias de Maven POM para el conector de Cloud Storage. Para obtener más información, consulta Gestión de dependencias.
<dependency> <groupId>com.google.cloud.bigdataoss</groupId> <artifactId>gcs-connector</artifactId> <version>hadoopX-X.X.XCONNECTOR VERSION</version> <scope>provided</scope> </dependency>
Para obtener una versión sombreada:
<dependency> <groupId>com.google.cloud.bigdataoss</groupId> <artifactId>gcs-connector</artifactId> <version>hadoopX-X.X.XCONNECTOR VERSION</version> <scope>provided</scope> <classifier>shaded</classifier> </dependency>
Compatibilidad con conectores
El conector de Cloud Storage es compatible con Google Cloud para usarlo con productos y casos prácticos deGoogle Cloud . Cuando se usa con Dataproc, se admite al mismo nivel que Dataproc. Para obtener más información, consulta el artículo Obtener asistencia.
Conectarse a Cloud Storage mediante gRPC
De forma predeterminada, el conector de Cloud Storage en Dataproc usa la API JSON de Cloud Storage. En esta sección se explica cómo habilitar el conector de Cloud Storage para usar gRPC.
Consideraciones sobre el uso
Al usar el conector de Cloud Storage con gRPC, debes tener en cuenta lo siguiente:
- Ubicación del bucket regional: gRPC solo puede mejorar las latencias de lectura cuando las VMs de Compute Engine y los buckets de Cloud Storage se encuentran en la misma región de Compute Engine.
- Trabajos con muchas lecturas: gRPC puede ofrecer latencias de lectura mejoradas para lecturas de larga duración y puede ayudar con cargas de trabajo con muchas lecturas. No se recomienda para aplicaciones que crean un canal gRPC, ejecutan un cálculo breve y, a continuación, cierran el canal.
- Solicitudes no autenticadas: gRPC no admite solicitudes no autenticadas.
Requisitos
Se aplican los siguientes requisitos al usar gRPC con el conector de Cloud Storage:
La red de VPC de tu clúster de Dataproc debe admitir la conectividad directa. Esto significa que las rutas y las reglas de cortafuegos de la red deben permitir que el tráfico saliente llegue a
34.126.0.0/18
y2001:4860:8040::/42
.- Si tu clúster de Dataproc usa redes IPv6, debes configurar una subred IPv6 para las instancias de VM. Para obtener más información, consulta Configurar IPv6 para instancias y plantillas de instancias.
Cuando crees un clúster de Dataproc, debes usar la versión
2.2.23
o posterior del conector de Cloud Storage con la versión de imagen2.1.56+
, o bien la versión 3.0.0 o posterior del conector de Cloud Storage con la versión de imagen 2.2.0 o posterior. La versión del conector de Cloud Storage instalada en cada versión de imagen de Dataproc se indica en las páginas de versiones de imagen de Dataproc.- Si creas y usas un clúster virtual de Dataproc en GKE para tus solicitudes de gRPC Cloud Storage, se recomienda la versión
1.28.5-gke.1199000
de GKE congke-metadata-server 0.4.285
. Esta combinación admite la conectividad directa.
- Si creas y usas un clúster virtual de Dataproc en GKE para tus solicitudes de gRPC Cloud Storage, se recomienda la versión
Tú o el administrador de tu organización debéis asignar roles de gestión de identidades y accesos que incluyan los permisos necesarios para configurar el conector de Cloud Storage y enviar solicitudes gRPC a este. Estos roles pueden incluir lo siguiente:
- Rol de usuario: Editor de Dataproc Rol concedido a los usuarios para que puedan crear clústeres y enviar trabajos.
- Rol de cuenta de servicio: Usuario de objetos de Storage rol concedido a la cuenta de servicio de VM de Dataproc para permitir que las aplicaciones que se ejecutan en las VMs del clúster vean, lean, creen y escriban objetos de Cloud Storage.
Habilitar gRPC en el conector de Cloud Storage
Puedes habilitar gRPC en el conector de Cloud Storage a nivel de clúster o de trabajo. Una vez habilitado en el clúster, las solicitudes de lectura del conector de Cloud Storage usan gRPC. Si se habilita en un trabajo en lugar de a nivel de clúster, las solicitudes de lectura del conector de Cloud Storage solo usarán gRPC en ese trabajo.
Habilitar un clúster
Para habilitar gRPC en el conector de Cloud Storage a nivel de clúster, defina la propiedad core:fs.gs.client.type=STORAGE_CLIENT
cuando cree un clúster de Dataproc.
Una vez que gRPC se ha habilitado a nivel de clúster, las solicitudes de lectura del conector de Cloud Storage realizadas por los trabajos que se ejecutan en el clúster usan gRPC.
Ejemplo de la CLI gcloud:
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --properties=core:fs.gs.client.type=STORAGE_CLIENT
Sustituye lo siguiente:
- CLUSTER_NAME: especifica un nombre para el clúster.
- PROJECT_NAME: el ID del proyecto en el que se encuentra el clúster. Los IDs de proyecto se indican en la sección Información del proyecto del panel de control de la consola Google Cloud .
- REGION: especifica una región de Compute Engine en la que se ubicará el clúster.
Habilitar un trabajo
Para habilitar gRPC en el conector de Cloud Storage en una tarea específica, incluye --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
cuando envíes una tarea.
Ejemplo: ejecuta una tarea en un clúster que ya tengas y que use gRPC para leer datos de Cloud Storage.
Crea un
/tmp/line-count.py
script de PySpark local que use gRPC para leer un archivo de texto de Cloud Storage y mostrar el número de líneas del archivo.cat <<EOF >"/tmp/line-count.py" #!/usr/bin/python import sys from pyspark.sql import SparkSession path = sys.argv[1] spark = SparkSession.builder.getOrCreate() rdd = spark.read.text(path) lines_counter = rdd.count() print("There are {} lines in file: {}".format(lines_counter,path)) EOF
Crea un archivo de texto
/tmp/line-count-sample.txt
local.cat <<EOF >"/tmp/line-count-sample.txt" Line 1 Line 2 line 3 EOF
Sube los archivos
/tmp/line-count.py
y/tmp/line-count-sample.txt
locales a tu segmento de Cloud Storage.gcloud storage cp /tmp/line-count* gs://BUCKET
Ejecuta la tarea
line-count.py
en tu clúster. Asigna el valor--properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
para habilitar gRPC en las solicitudes de lectura del conector de Cloud Storage.gcloud dataproc jobs submit pyspark gs://BUCKET/line-count.py \ --cluster=CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT \ -- gs://BUCKET/line-count-sample.txt
Sustituye lo siguiente:
- CLUSTER_NAME: el nombre de un clúster ya creado.
- PROJECT_NAME: tu ID de proyecto. Los IDs de proyecto se indican en la sección Información del proyecto del Google Cloud panel de control de la consola.
- REGION: la región de Compute Engine en la que se encuentra el clúster.
- BUCKET: tu segmento de Cloud Storage.
Generar métricas del lado del cliente de gRPC
Puedes configurar el conector de Cloud Storage para que genere métricas relacionadas con gRPC en Cloud Monitoring. Las métricas relacionadas con gRPC pueden ayudarte a hacer lo siguiente:
- Monitorizar y optimizar el rendimiento de las solicitudes gRPC a Cloud Storage
- Solucionar y depurar problemas
- Obtener información valiosa sobre el uso y el comportamiento de las aplicaciones
Para obtener información sobre cómo configurar el conector de Cloud Storage para generar métricas relacionadas con gRPC, consulta Usar métricas del lado del cliente de gRPC.
Recursos
- Consulta las propiedades de configuración del conector de Cloud Storage de GitHub.
- Consulta Conectarse a Cloud Storage mediante gRPC para usar el conector de Cloud Storage con bibliotecas de cliente, Controles de Servicio de VPC y otros casos prácticos.
- Obtén más información sobre Cloud Storage.
- Consulta Utilizar el conector de Cloud Storage con Apache Spark.
- Familiarízate con el sistema de archivos de Apache Hadoop .
- Consulta la referencia de JavaDoc.