La bibliothèque Java Open Source du connecteur Cloud Storage vous permet d'exécuter des jobs Apache Hadoop ou Apache Spark directement sur des données dans Cloud Storage.
Lightning Engine améliore la connectivité à Cloud Storage pour optimiser les performances de son moteur natif. Le connecteur Cloud Storage amélioré minimise les opérations de métadonnées pour réduire les coûts, tandis qu'un committer de sortie de fichier optimisé améliore les performances et la fiabilité des charges de travail Spark. Remplissez le formulaire d'accès anticipé pour demander un accès anticipé à cette fonctionnalité en preview privée.
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 le transférer au préalable dans HDFS.
- Compatibilité HDFS : vous pouvez accéder à vos données dans Cloud Storage en utilisant le préfixe
gs://au lieu dehdfs://. - Interopérabilité : le stockage des données dans Cloud Storage permet une interopérabilité fluide entre Spark, Hadoop et les services Google.
- Accessibilité des données : lorsque vous arrêtez un cluster Hadoop, contrairement à HDFS, vous continuez à avoir accès à vos données dans Cloud Storage.
- Haute disponibilité des données : les données stockées dans Cloud Storage sont disponibilité élevée et répliquées à l'échelle mondiale sans perte de performances.
- Aucun coût de gestion du stockage : contrairement à HDFS, Cloud Storage ne nécessite aucune maintenance de routine, telle que la vérification du système de fichiers, ou la mise à niveau ou le retour à une version précédente du système de fichiers.
- Démarrage rapide : dans HDFS, un job MapReduce ne peut pas démarrer tant que le
NameNoden'est pas sorti du mode sans échec, un processus qui peut prendre de quelques secondes à plusieurs minutes selon la taille et 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 Managed Service pour Apache Spark
Le connecteur Cloud Storage est installé par défaut sur tous les nœuds de cluster Managed Service pour Apache Spark dans le répertoire /usr/local/share/google/managed-spark/lib/. Les sous-sections suivantes décrivent les étapes à suivre pour configurer le connecteur sur les clusters Managed Service pour Apache Spark.
Compte de service de VM
Lorsque vous exécutez le connecteur sur des nœuds de cluster Managed Service pour Apache Spark 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 VM pour le connecteur. Les identifiants du compte de service de VM sont fournis par le serveur de métadonnées de VM.
Le compte de service de VM Managed Service pour Apache Spark doit être autorisé à accéder à votre bucket Cloud Storage.
Si vous utilisez un compte de service personnalisé avec un cluster de jobs Spark 2.2+ : si vous sélectionnez un compte de service personnalisé lors de la création d'un cluster de version d'image Managed Service pour Apache Spark 2.2+ auquel vous envoyez des jobs Spark, et si vos jobs Spark lisent ou écrivent dans Cloud Storage, pour éviter les problèmes d'autorisation pouvant entraîner des échecs de jobs, ajoutez la configuration suivante (en gras) à votre code de création de session Spark :
spark = SparkSession.builder \
.appName(appName) \
.config("fs.gs.auth.type", "SERVICE_ACCOUNT_JSON_KEYFILE") \
.config("fs.gs.auth.service.account.json.keyfile", "path/to/your/keyfile.json") \
.getOrCreate()
Pour vérifier que les autorisations sont correctement définies, assurez-vous que le compte de service personnalisé dispose des autorisations storage.objects.get et storage.objects.create :
- Affichez l'accès actuel pour lister les rôles attribués au compte de service personnalisé.
- Recherchez un rôle ou une autorisation pour trouver les autorisations associées à un rôle.
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 Managed Service pour Apache Spark sont listées sur les pages des versions d'image. Si votre application dépend d'une version de connecteur autre que celle 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, qui met à jour le connecteur utilisé par les applications exécutées sur le cluster vers la version de connecteur spécifiée. - Incluez et déplacez les classes de connecteur et les dépendances de connecteur de la version que vous utilisez dans le fichier JAR de votre application. La relocalisation est nécessaire pour éviter un conflit entre la version du connecteur que vous avez déployée et la version du connecteur par défaut installée sur le cluster Managed Service pour Apache Spark. Consultez également l'exemple de relocalisation des dépendances Maven.
Configuration du connecteur sur des clusters Managed Service pour Apache Spark non gérés
Vous pouvez suivre les étapes ci-dessous pour configurer le connecteur Cloud Storage sur un cluster Managed Service pour Apache Spark, tel qu'un cluster Apache Hadoop ou Spark que vous utilisez pour déplacer des données HDFS sur site vers Cloud Storage.
Téléchargez le connecteur.
- Pour télécharger le connecteur Cloud Storage :
- Pour utiliser une version
latestsituée dans un bucket Cloud Storage (l'utilisation d'une versionlatestn'est pas recommandée pour les applications de production) : - Pour utiliser une version spécifique de votre bucket Cloud Storage, remplacez les versions du connecteur Cloud Storage et Hadoop dans le modèle de nom
gcs-connector-HADOOP_VERSION-CONNECTOR_VERSION.jar, par exemplegs://hadoop-lib/gcs/gcs-connector-hadoop2-2.1.1.jar. - Pour utiliser une version spécifique du dépôt Apache Maven, téléchargez un fichier JAR ombré dont le nom comporte le suffixe
-shaded.
- Pour utiliser une version
- Pour télécharger le connecteur Cloud Storage :
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 l'une des manières suivantes :
- Dans une application Spark, PySpark ou Hadoop avec le préfixe
gs:// - Dans un shell Hadoop avec
hadoop fs -ls gs://bucket/dir/file - Dans le navigateur Cloud Storage de la console Google Cloud
- À l'aide des commandes du SDK Google Cloud, telles que :
Utilisation de Java
Java 8 est indispensable au fonctionnement du connecteur Cloud Storage.
Voici un exemple de section de gestion des dépendances Maven POM pour le connecteur Cloud Storage. Pour en savoir plus, consultez 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é des connecteurs
Le connecteur Cloud Storage est compatible avec Google Cloud pour une utilisation avec les produits et cas d'utilisationGoogle Cloud . Lorsqu'il est utilisé avec Managed Service pour Apache Spark, il est compatible au même niveau que Managed Service pour Apache Spark. 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 Managed Service pour Apache Spark utilise l'API JSON Cloud Storage. Cette section explique comment activer le connecteur Cloud Storage pour utiliser gRPC.
Informations concernant l'utilisation
L'utilisation du connecteur Cloud Storage avec gRPC implique les considérations suivantes :
- Emplacement du bucket régional : 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.
- Jobs à forte intensité de lecture : gRPC peut améliorer les latences de lecture pour les lectures de longue durée et peut aider les charges de travail à forte intensité de lecture. Il n'est pas recommandé pour les applications qui créent un canal gRPC, exécutent un calcul court, puis ferment le canal.
- Requêtes non authentifiées : gRPC n'accepte pas 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 Managed Service pour Apache Spark doit être compatible avec 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/18et2001:4860:8040::/42.- Si votre cluster Managed Service pour Apache Spark utilise la mise en réseau IPv6, vous devez configurer un sous-réseau IPv6 pour les instances de VM. Pour en savoir plus, consultez Configurer IPv6 pour les instances et les modèles d'instance.
Lorsque vous créez un cluster Managed Service pour Apache Spark, vous devez utiliser la version
2.2.23ou ultérieure du connecteur Cloud Storage avec la version d'image2.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 Managed Service pour Apache Spark est indiquée sur les pages des versions d'image Managed Service pour Apache Spark.- Si vous créez et utilisez un cluster virtuel Managed Service pour Apache Spark sur GKE pour vos requêtes Cloud Storage gRPC, nous vous recommandons d'utiliser GKE version
1.28.5-gke.1199000avecgke-metadata-server 0.4.285. Cette combinaison est compatible avec la connectivité directe.
- Si vous créez et utilisez un cluster virtuel Managed Service pour Apache Spark sur GKE pour vos requêtes Cloud Storage gRPC, nous vous recommandons d'utiliser GKE version
Vous ou l'administrateur de votre organisation devez attribuer des rôles Identity and Access Management incluant les autorisations nécessaires pour configurer et envoyer des requêtes gRPC au connecteur Cloud Storage. Ces rôles peuvent inclure les suivants :
- Rôle utilisateur : rôle Éditeur Dataproc attribué aux utilisateurs pour leur permettre de créer des clusters et d'envoyer des jobs
- Rôle du compte de service : rôle Utilisateur d'objets Storage attribué au compte de service de VM de Managed Service pour Apache Spark pour permettre aux applications exécutées sur les VM du cluster d'afficher, de lire, de créer et d'écrire des objets Cloud Storage.
Activer gRPC sur le connecteur Cloud Storage
Vous pouvez activer gRPC sur le connecteur Cloud Storage au niveau du cluster ou du job. Une fois activé sur le cluster, les requêtes de lecture du connecteur Cloud Storage utilisent gRPC. Si cette option est activée sur un job plutôt qu'au niveau du cluster, les requêtes de lecture du connecteur Cloud Storage n'utilisent gRPC que pour le job.
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 Managed Service pour Apache Spark.
Une fois gRPC activé au niveau du cluster, les requêtes de lecture du connecteur Cloud Storage effectuées par les jobs exécutés sur le cluster utilisent gRPC.
Exemple 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 Informations sur le projet du tableau de bord de la console Google Cloud .
- REGION : spécifiez une région Compute Engine dans laquelle le cluster sera situé.
Activer un job
Pour activer gRPC sur le connecteur Cloud Storage pour un job spécifique, incluez --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT lorsque vous soumettez un job.
Exemple : Exécutez un job sur un cluster existant qui utilise gRPC pour lire des données depuis Cloud Storage.
Créez un script PySpark
/tmp/line-count.pylocal qui utilise gRPC pour lire un fichier texte Cloud Storage et afficher le nombre de lignes qu'il contient.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)) EOFCréez un fichier texte
/tmp/line-count-sample.txtlocal.cat <<EOF >"/tmp/line-count-sample.txt" Line 1 Line 2 line 3 EOF
Importez les fichiers
/tmp/line-count.pyet/tmp/line-count-sample.txtlocaux dans votre bucket Cloud Storage.gcloud storage cp /tmp/line-count* gs://BUCKET
Exécutez le job
line-count.pysur votre cluster. Définissez--properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENTpour 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 du projet. Les ID de projet sont listé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 gRPC côté client
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 adressées à Cloud Storage
- Résoudre les problèmes et déboguer
- 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 Utiliser les métriques gRPC côté client.
Ressources
- Consultez les propriétés de configuration du connecteur Cloud Storage sur GitHub.
- Consultez Se connecter à Cloud Storage à l'aide de gRPC pour utiliser le connecteur Cloud Storage avec les bibliothèques clientes, VPC Service Controls et d'autres scénarios.
- Obtenez davantage d'informations sur Cloud Storage.
- Consultez Utiliser le connecteur Cloud Storage avec Apache Spark.
- Comprendre le système de fichiers Apache Hadoop
- Consultez la documentation de référence Javadoc.