La biblioteca de Java de código abierto del conector de Cloud Storage te permite ejecutar trabajos de Apache Hadoop o Apache Spark directamente en los datos de Cloud Storage.
Beneficios 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 primero la transfieras a HDFS.
- Compatibilidad con HDFS: Puedes acceder a tus datos en Cloud Storage con el prefijo
gs://
en lugar dehdfs://
. - Interoperabilidad: El almacenamiento de datos en Cloud Storage permite una interoperabilidad perfecta entre los servicios de Spark, Hadoop y Google.
- Accesibilidad a los datos: Cuando cierras 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 están altamente disponibles y replicados de forma global sin perder rendimiento.
- Sin sobrecarga de administración de almacenamiento: A diferencia de HDFS, Cloud Storage no requiere mantenimiento de rutina, como revisar el sistema de archivos, actualizarlo o revertirlo a una versión anterior del sistema de archivos.
- Inicio rápido: En HDFS, un trabajo MapReduce no puede iniciarse hasta que el
NameNode
se encuentre fuera del modo seguro, un proceso que puede demorar unos pocos segundos o varios minutos, según el tamaño y el estado de tus datos. Con Cloud Storage, puedes comenzar tu trabajo en cuanto se inicien los nodos de tareas, lo que genera importantes ahorros de costos a lo largo del tiempo.
Configuración del conector en clústeres de Dataproc
El conector de Cloud Storage se instala de forma predeterminada en todos los nodos del clúster de Dataproc en el directorio /usr/local/share/google/dataproc/lib/
. En las siguientes sub secciones, se describen los pasos que puedes seguir para completar la configuración del conector en los clústeres de Dataproc.
Cuenta de servicio de la VM
Cuando ejecutas el conector en los nodos del clúster de Dataproc y otras VMs de Compute Engine, la propiedad google.cloud.auth.service.account.enable
se establece en false
de forma predeterminada, lo que significa que no necesitas 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 VM de Dataproc debe tener permiso para acceder a tu bucket 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 enumeran 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 que seleccionaste:
- Crea un clúster con la marca
--metadata=GCS_CONNECTOR_VERSION=x.y.z
, que actualiza el conector que usan las aplicaciones que se ejecutan en el clúster a la versión del conector especificada. - Incluye y reubica las clases y dependencias del conector de la versión que usas en el archivo jar de tu aplicación.La reubicación es necesaria para evitar un conflicto entre la versión del conector implementada y la versión predeterminada instalada en el clúster de Dataproc. Consulta también el ejemplo de reubicación de dependencias de Maven.
Configuración del conector en clústeres que no son de Dataproc
Puedes seguir los pasos que se indican a continuación 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 HDFS locales a Cloud Storage.
Descarga el conector.
- Para descargar el conector de Cloud Storage, sigue estos pasos:
- Para usar una versión
latest
ubicada en el bucket de Cloud Storage (no se recomienda usar una versiónlatest
para aplicaciones de producción), haz lo siguiente: - Para usar una versión específica de tu bucket 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 de Apache Maven, descarga un 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 Spark, PySpark o Hadoop con el prefijo
gs://
- En una 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:
*
gcloud storage cp
*gcloud storage rsync
Uso de Java
El conector de Cloud Storage requiere Java 8.
A continuación, se muestra una sección de administración de dependencias de POM de Maven de muestra para el conector de Cloud Storage. Para obtener más información, consulta Administració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 una versión sombreada, haz lo siguiente:
<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 productos y casos de uso de Google Cloud. Cuando se usa con Dataproc, es compatible en el mismo nivel que Dataproc. Si necesitas más información, consulta Obtén asistencia.
Conéctate a Cloud Storage con gRPC
De forma predeterminada, el conector de Cloud Storage en Dataproc usa la API de JSON de Cloud Storage. En esta sección, se muestra cómo habilitar el conector de Cloud Storage para usar gRPC.
Consideraciones de uso
El uso del conector de Cloud Storage con gRPC incluye las siguientes consideraciones:
- Ubicación del bucket regional: gRPC puede mejorar las latencias de lectura solo cuando las VMs de Compute Engine y los buckets de Cloud Storage se encuentran en la misma región de Compute Engine.
- Tareas intensivas de lectura: gRPC puede ofrecer latencias de lectura mejoradas para las lecturas de larga duración y puede ayudar a las cargas de trabajo intensivas de lectura. No se recomienda para aplicaciones que crean un canal de gRPC, ejecutan un procesamiento breve y, luego, cierran el canal.
- Solicitudes no autenticadas: gRPC no admite solicitudes no autenticadas.
Requisitos
Se aplican los siguientes requisitos cuando se usa 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 firewall de la red deben permitir que el tráfico de salida 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 Configura 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 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 imágenes de Dataproc.- Si creas y usas un clúster virtual de Dataproc en GKE para tus solicitudes de gRPC a Cloud Storage, se recomienda la versión
1.28.5-gke.1199000
de GKE congke-metadata-server 0.4.285
. Esta combinación admite conectividad directa.
- Si creas y usas un clúster virtual de Dataproc en GKE para tus solicitudes de gRPC a Cloud Storage, se recomienda la versión
Tú o el administrador de tu organización deben otorgar roles de Identity and Access Management que incluyan los permisos necesarios para configurar y realizar solicitudes gRPC al conector de Cloud Storage. Estos roles pueden incluir lo siguiente:
- Rol de usuario: Editor de Dataproc, rol otorgado a los usuarios para permitirles crear clústeres y enviar trabajos
- Rol de la cuenta de servicio: Es el rol de Usuario de objetos de almacenamiento que se otorga a la cuenta de servicio de VM de Dataproc para permitir que las aplicaciones que se ejecutan en VMs de clúster vean, lean, creen y escriban objetos de Cloud Storage.
Habilita gRPC en el conector de Cloud Storage
Puedes habilitar gRPC en el conector de Cloud Storage a nivel del clúster o del trabajo. Una vez habilitadas en el clúster, las solicitudes de lectura del conector de Cloud Storage usan gRPC. Si se habilitan en un trabajo en lugar de a nivel del clúster, las solicitudes de lectura del conector de Cloud Storage usan gRPC solo para el trabajo.
Habilita un clúster
Para habilitar gRPC en el conector de Cloud Storage a nivel del clúster, configura la propiedad core:fs.gs.client.type=STORAGE_CLIENT
cuando crees un clúster de Dataproc.
Una vez que se habilita gRPC a nivel del clúster, las solicitudes de lectura del conector de Cloud Storage que realizan los trabajos que se ejecutan en el clúster usan gRPC.
Ejemplo de gcloud CLI:
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --properties=core:fs.gs.client.type=STORAGE_CLIENT
Reemplaza lo siguiente:
- CLUSTER_NAME: Especifica un nombre para el clúster.
- PROJECT_NAME: Es el ID del proyecto en el que se encuentra el clúster. Los IDs de proyecto se enumeran en la sección Información del proyecto en el panel de la consola de Google Cloud.
- REGION: Especifica una región de Compute Engine en la que se ubicará el clúster.
Habilita un trabajo
Para habilitar gRPC en el conector de Cloud Storage para un trabajo específico, incluye --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
cuando envíes un trabajo.
Ejemplo: Ejecuta una tarea en un clúster existente que usa gRPC para leer de Cloud Storage.
Crea una secuencia de comandos PySpark
/tmp/line-count.py
local que use gRPC para leer un archivo de texto de Cloud Storage y mostrar la cantidad 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
/tmp/line-count.py
y/tmp/line-count-sample.txt
locales a tu bucket en Cloud Storage.gcloud storage cp /tmp/line-count* gs://BUCKET
Ejecuta el trabajo
line-count.py
en tu clúster. Establece--properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
para habilitar gRPC para 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
Reemplaza lo siguiente:
- CLUSTER_NAME: Es el nombre de un clúster existente.
- PROJECT_NAME: ID del proyecto Los IDs de los proyectos se enumeran en la sección Información del proyecto del panel de la consola de Google Cloud.
- REGION: La región de Compute Engine en la que se encuentra el clúster
- BUCKET: Es tu bucket de Cloud Storage.
Genera métricas del cliente de gRPC
Puedes configurar el conector de Cloud Storage para generar métricas relacionadas con gRPC en Cloud Monitoring. Las métricas relacionadas con gRPC pueden ayudarte a hacer lo siguiente:
- Supervisa y optimiza el rendimiento de las solicitudes de gRPC a Cloud Storage
- Soluciona y depura problemas
- Obtén estadísticas sobre el uso y el comportamiento de las aplicaciones
Si deseas obtener información para configurar el conector de Cloud Storage para generar métricas relacionadas con gRPC, consulta Cómo usar métricas del cliente de gRPC.
Recursos
- Consulta Cómo conectarse a Cloud Storage con gRPC para usar el conector de Cloud Storage con bibliotecas cliente, Controles del servicio de VPC y otras situaciones.
- Obtén más información sobre Cloud Storage.
- Consulta Usa el conector de Cloud Storage con Apache Spark.
- Comprende el sistema de archivos de Apache Hadoop .
- Consulta la referencia de Javadoc.