Connecteur Cloud Storage

La bibliothèque Java Open Source du connecteur Cloud Storage vous permet d'exécuter des tâches Apache Hadoop ou Apache Spark directement sur des données dans Cloud Storage.

Avantages du connecteur Cloud Storage

  • Accès direct aux données:stockez vos données dans Cloud Storage et accédez-y directement. Vous n'avez pas besoin de les transférer dans HDFS.
  • Compatibilité HDFS:accédez à vos données dans Cloud Storage à l'aide du préfixe gs:// au lieu de hdfs://.
  • Interopérabilité:le stockage de données dans Cloud Storage permet une interopérabilité transparente entre les services Spark, Hadoop et Google.
  • Accessibilité des données:contrairement à HDFS, lorsque vous arrêtez un cluster Hadoop, vous avez toujours accès à vos données dans Cloud Storage.
  • Disponibilité élevée des données:les données stockées dans Cloud Storage sont hautement disponibles et répliquées à l'échelle mondiale sans perte de performances.
  • Pas de surcharge de la gestion du stockage:contrairement à HDFS, Cloud Storage ne nécessite pas de maintenance périodique, telle que la vérification, la mise à niveau ou le rollback vers une version précédente du système de fichiers.
  • Démarrage rapide:dans HDFS, une tâche MapReduce ne peut pas être lancée tant que NameNode n'est pas en mode sans échec. Ce processus peut durer de quelques secondes à plusieurs minutes en fonction de la taille et de l'état de vos données. Avec Cloud Storage, vous pouvez exécuter la tâche dès le démarrage des nœuds de tâche, ce qui permet de réaliser des économies considérables au fil du temps.

Configuration du connecteur sur les clusters Dataproc

Le connecteur Cloud Storage est installé par défaut sur tous les nœuds de cluster Dataproc dans le répertoire /usr/local/share/google/dataproc/lib/. Les sous-sections suivantes décrivent les étapes à suivre pour terminer la configuration des connecteurs sur les clusters Dataproc.

Compte de service de VM

Lorsque vous exécutez le connecteur sur les nœuds de cluster Dataproc et d'autres VM Compute Engine, la propriété google.cloud.auth.service.account.enable est définie sur false par défaut. Cela signifie que vous n'avez pas besoin de configurer les identifiants du compte de service de la VM pour le connecteur. Les identifiants du compte de service de la VM sont fournis par le serveur de métadonnées de la VM.

Le compte de service de VM Dataproc doit être autorisé à accéder à votre bucket Cloud Storage.

Versions de connecteurs sélectionnées par l'utilisateur

Les versions par défaut du connecteur Cloud Storage utilisées dans les dernières images installées sur les clusters Dataproc sont listées sur les pages des versions d'image. Si votre application dépend d'une version de connecteur non par défaut déployée sur votre cluster, vous pouvez effectuer l'une des actions suivantes pour utiliser la version de connecteur sélectionnée:

  • Créez un cluster avec l'option --metadata=GCS_CONNECTOR_VERSION=x.y.z, ce qui mettra à jour le connecteur utilisé par les applications exécutées sur le cluster vers la version de connecteur spécifiée.
  • Incluez et relocalisez les classes de connecteur et les dépendances de connecteur pour la version que vous utilisez dans le fichier JAR de votre application.La relocalisation est nécessaire pour éviter tout conflit entre la version de connecteur déployée et la version de connecteur par défaut installée sur le cluster Dataproc. Consultez également l'exemple de relocalisation des dépendances Maven.

Configuration du connecteur sur des clusters autres que Dataproc

Vous pouvez suivre les étapes ci-dessous pour configurer le connecteur Cloud Storage sur un cluster autre que Dataproc, tel qu'un cluster Apache Hadoop ou Spark que vous utilisez pour transférer des données HDFS sur site vers Cloud Storage.

  1. Téléchargez le connecteur.

  2. Installez le connecteur.

    Suivez les instructions GitHub pour installer, configurer et tester le connecteur Cloud Storage.

Utilisation des connecteurs

Vous pouvez utiliser le connecteur pour accéder aux données Cloud Storage de la manière suivante:

Utilisation de Java

Java 8 est indispensable au fonctionnement du connecteur Cloud Storage.

Vous trouverez ci-dessous un exemple de section de gestion des dépendances POM Maven pour le connecteur Cloud Storage. Pour en savoir plus, consultez la section Gestion des dépendances.

<dependency>
    <groupId>com.google.cloud.bigdataoss</groupId>
    <artifactId>gcs-connector</artifactId>
    <version>hadoopX-X.X.XCONNECTOR VERSION</version>
    <scope>provided</scope>
</dependency>

Pour une version ombrée:

<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>

Compatibilité avec les connecteurs

Google Cloud assure l'assistance du connecteur Cloud Storage lorsqu'il est employé avec ses produits et cas d'utilisation. Lorsqu'il est utilisé avec Dataproc, il bénéficie du même niveau d'assistance que Dataproc. Pour en savoir plus, consultez Obtenir de l'aide.

Se connecter à Cloud Storage à l'aide de gRPC

Par défaut, le connecteur Cloud Storage sur Dataproc utilise l'API JSON Cloud Storage. Cette section explique comment activer le connecteur Cloud Storage pour qu'il utilise gRPC.

Informations concernant l'utilisation

L'utilisation du connecteur Cloud Storage avec gRPC inclut les considérations suivantes:

  • Emplacement du bucket régional:le gRPC ne peut améliorer les latences de lecture que lorsque les VM Compute Engine et les buckets Cloud Storage se trouvent dans la même région Compute Engine.
  • Tâches intensives en lecture:gRPC peut améliorer les latences de lecture pour les lectures de longue durée et peut aider les charges de travail intensives en lecture. Il n'est pas recommandé pour les applications qui créent un canal gRPC, exécutent un court calcul, puis ferment le canal.
  • Requêtes non authentifiées:gRPC n'est pas compatible avec les requêtes non authentifiées.

Conditions requises

Les exigences suivantes s'appliquent lorsque vous utilisez gRPC avec le connecteur Cloud Storage:

  • Le réseau VPC de votre cluster Dataproc doit prendre en charge la connectivité directe. Cela signifie que les routes et les règles de pare-feu du réseau doivent autoriser le trafic sortant à atteindre 34.126.0.0/18 et 2001:4860:8040::/42.

  • Lorsque vous créez un cluster Dataproc, vous devez utiliser la version 2.2.23 ou ultérieure du connecteur Cloud Storage avec la version d'image 2.1.56+ ou la version 3.0.0 ou ultérieure du connecteur Cloud Storage avec la version d'image 2.2.0 ou ultérieure. La version du connecteur Cloud Storage installée sur chaque version d'image Dataproc est indiquée sur les pages des versions d'image Dataproc.

    • Si vous créez et utilisez un cluster virtuel Dataproc sur GKE pour vos requêtes gRPC Cloud Storage, nous vous recommandons d'utiliser la version 1.28.5-gke.1199000 de GKE avec gke-metadata-server 0.4.285. Cette combinaison est compatible avec la connectivité directe.
  • Vous ou l'administrateur de votre organisation devez attribuer des rôles Identity and Access Management qui incluent les autorisations nécessaires pour configurer et envoyer des requêtes gRPC au connecteur Cloud Storage. Ces rôles peuvent inclure les suivants:

Activer gRPC sur le connecteur Cloud Storage

Vous pouvez activer gRPC sur le connecteur Cloud Storage au niveau du cluster ou de la tâche. Une fois activé sur le cluster, le connecteur Cloud Storage utilise gRPC pour les requêtes de lecture. Si elles sont activées pour une tâche plutôt qu'au niveau du cluster, les requêtes de lecture du connecteur Cloud Storage utilisent gRPC uniquement pour la tâche.

Activer un cluster

Pour activer gRPC sur le connecteur Cloud Storage au niveau du cluster, définissez la propriété core:fs.gs.client.type=STORAGE_CLIENT lorsque vous créez un cluster Dataproc. Une fois gRPC activé au niveau du cluster, les requêtes de lecture du connecteur Cloud Storage effectuées par les tâches exécutées sur le cluster utilisent gRPC.

Exemple de gcloud CLI:

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --properties=core:fs.gs.client.type=STORAGE_CLIENT

Remplacez les éléments suivants :

  • CLUSTER_NAME: spécifiez un nom pour votre cluster.
  • PROJECT_NAME: ID du projet dans lequel se trouve le cluster. Les ID de projet sont listés dans la section Project info (Informations sur le projet) du tableau de bord de la console Google Cloud.
  • REGION: spécifiez une région Compute Engine dans laquelle se trouvera le cluster.

Activer un job

Pour activer gRPC sur le connecteur Cloud Storage pour une tâche spécifique, incluez --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT lorsque vous envoyez une tâche.

Exemple: Exécutez une tâche sur un cluster existant qui utilise gRPC pour lire à partir de Cloud Storage.

  1. Créez un script PySpark /tmp/line-count.py local qui utilise gRPC pour lire un fichier texte Cloud Storage et afficher le nombre de lignes dans le fichier.

    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. Créez un fichier texte /tmp/line-count-sample.txt local.

    cat <<EOF >"/tmp/line-count-sample.txt"
    Line 1
    Line 2
    line 3
    EOF
    
  3. Importez des /tmp/line-count.py et /tmp/line-count-sample.txt locaux dans votre bucket Cloud Storage.

    gcloud storage cp /tmp/line-count* gs://BUCKET
    
  4. Exécutez la tâche line-count.py sur votre cluster. Définissez --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT pour activer gRPC pour les requêtes de lecture du connecteur 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
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME: nom d'un cluster existant.
    • PROJECT_NAME : ID de votre projet Les ID de projet sont répertoriés dans la section Informations sur le projet du tableau de bord de la console Google Cloud.
    • REGION: région Compute Engine dans laquelle se trouve le cluster.
    • BUCKET: votre bucket Cloud Storage.

Générer des métriques côté client gRPC

Vous pouvez configurer le connecteur Cloud Storage pour générer des métriques liées à gRPC dans Cloud Monitoring. Les métriques liées à gRPC peuvent vous aider à effectuer les opérations suivantes:

  • Surveiller et optimiser les performances des requêtes gRPC vers Cloud Storage
  • Résoudre et déboguer les problèmes
  • Obtenir des insights sur l'utilisation et le comportement des applications

Pour savoir comment configurer le connecteur Cloud Storage afin de générer des métriques liées à gRPC, consultez la section Utiliser les métriques côté client gRPC.

Ressources