Conector de Cloud Storage

La biblioteca de código abierto de Java del conector de Cloud Storage te permite ejecutar trabajos de Apache Hadoop o Apache Spark directamente en datos en 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 facilidad mediante el prefijo gs:// en lugar de hdfs://.
  • 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.
  • Sobrecarga de administración sin almacenamiento: A diferencia de HDFS, Cloud Storage no requiere mantenimiento de rutina, como revisar el sistema de archivos, o 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 subsecciones, se describen los pasos que puedes seguir para completar la configuración del conector en clústeres de Dataproc.

Cuenta de servicio de VM

Cuando se ejecuta el conector en nodos de clúster de Dataproc y otras VMs de Compute Engine, la google.cloud.auth.service.account.enable propiedad se establece en false de forma predeterminada, lo que significa que no necesitas configurar las credenciales de la cuenta de servicio de VM para el conector. El servidor de metadatos de la VM proporciona las credenciales de la cuenta de servicio de VM.

La cuenta de servicio de VM de Dataproc debe tener permiso para acceder a tu bucket de Cloud Storage.

Versiones del conector seleccionadas por el usuario

Las versiones predeterminadas del conector de Cloud Storage que se usan en las imágenes más recientes instaladas en clústeres de Dataproc se enumeran en las páginas de la versión de la imagen. 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 del conector seleccionada:

  • 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 del conector y las dependencias del conector de la versión que estás usando en el jar de la aplicación. La reubicación es necesaria para evitar un conflicto entre la versión del conector implementada y la versión del conector 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 siguientes 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 usas para mover datos HDFS locales a Cloud Storage.

  1. Descarga el conector.

  2. Instala el conector.

    Sigue las instrucciones de GitHub para instalar, configurar y probar el conector de Cloud Storage.

Uso del conector

Puedes usar el conector para acceder a los datos de Cloud Storage de las siguientes maneras:

Uso de Java

El conector de Cloud Storage requiere Java 8.

A continuación, se muestra una sección de ejemplo de administración de dependencias de POM de Maven para el conector de Cloud Storage. Para obtener información adicional, 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 oculta, 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 el conector

El conector de Cloud Storage es compatible con Google Cloud para su uso con Google Cloud productos y casos prácticos. Cuando se usa con Dataproc, es compatible con el mismo nivel que Dataproc. Para obtener 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 regional del bucket: 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.
  • Trabajos con uso intensivo de lectura: gRPC puede ofrecer latencias de lectura mejoradas para lecturas de larga duración y puede ayudar a las cargas de trabajo con uso intensivo de lectura. No se recomienda para aplicaciones que crean un canal gRPC, ejecutan un cálculo corto 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 del clúster de Dataproc debe admitir 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 y 2001:4860:8040::/42.

  • Cuando crees un clúster de Dataproc, debes usar la versión del conector de Cloud Storage 2.2.23 o posterior con la versión de imagen 2.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+. La versión del conector de Cloud Storage instalada en cada versión de imagen de Dataproc se enumera en las páginas de la versión de imagen de Dataproc.

    • Si creas y usas un clúster virtual de Dataproc en GKE para tus solicitudes de Cloud Storage de gRPC, se recomienda la versión de GKE 1.28.5-gke.1199000 con gke-metadata-server 0.4.285. Esta combinación admite conectividad directa.
  • 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 de 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 cuenta de servicio: Rol de usuario de objetos de almacenamiento otorgado 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.

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 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 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, establece la propiedad core:fs.gs.client.type=STORAGE_CLIENT cuando crees un clúster de Dataproc. Una vez que gRPC está habilitado 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 la CLI de gcloud:

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 del proyecto se enumeran en la sección Información del proyecto en el Google Cloud panel de la consola.
  • 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 un trabajo en un clúster existente que usa gRPC para leer desde Cloud Storage.

  1. Crea una secuencia de comandos de PySpark /tmp/line-count.py local que use gRPC para leer un archivo de texto de Cloud Storage y generar 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
    
  2. 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
    
  3. 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
    
  4. 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: El nombre de un clúster existente.
    • PROJECT_NAME: ID del proyecto Los IDs del proyecto se enumeran en la sección Información del proyecto en el Google Cloud panel de la consola Dashboard.
    • REGION: La región de Compute Engine en la que se encuentra el clúster.
    • BUCKET: 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 ayudar a hacer lo siguiente:

  • Supervisar y optimizar el rendimiento de las solicitudes de gRPC a Cloud Storage
  • Solucionar problemas y depurar
  • Obtener estadísticas 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 Usa métricas del cliente de gRPC.

Recursos