La libreria Java open source del connettore Cloud Storage consente di eseguire job Apache Hadoop o Apache Spark direttamente sui dati in Cloud Storage.
Lightning Engine migliora la connettività a Cloud Storage per ottimizzare le prestazioni del suo motore nativo. Il connettore Cloud Storage migliorato riduce al minimo le operazioni sui metadati per ridurre i costi, mentre un committer di output dei file ottimizzato sblocca le prestazioni e l'affidabilità per i workload Spark. Compila il modulo di accesso in anteprima per richiedere l'accesso in anteprima a questa funzionalità in anteprima privata.
Vantaggi del connettore Cloud Storage
- Accesso diretto ai dati: archivia i dati in Cloud Storage e accedi direttamente. Non è necessario trasferirli prima in HDFS.
- Compatibilità con HDFS: puoi accedere ai tuoi dati in Cloud Storage utilizzando il prefisso
gs://anzichéhdfs://. - Interoperabilità: l'archiviazione dei dati in Cloud Storage consente un'interoperabilità perfetta tra Spark, Hadoop e i servizi Google.
- Accessibilità ai dati: quando arresti un cluster Hadoop, a differenza di HDFS, continui ad avere accesso ai tuoi dati in Cloud Storage.
- Alta disponibilità dei dati: i dati archiviati in Cloud Storage sono ad alta disponibilità e vengono replicati a livello globale senza perdita di prestazioni.
- Nessun overhead di gestione dello spazio di archiviazione: a differenza di HDFS, Cloud Storage non richiede manutenzione di routine, come il controllo del file system o l'upgrade o il rollback a una versione precedente del file system.
- Avvio rapido: in HDFS, un job MapReduce non può essere avviato finché il
NameNodenon esce dalla modalità provvisoria, un processo che può richiedere da pochi secondi a molti minuti a seconda delle dimensioni e dello stato dei dati. Con Cloud Storage, puoi avviare il job non appena vengono avviati i nodi delle attività, il che porta a un risparmio significativo sui costi nel tempo.
Configurazione del connettore sui cluster Managed Service for Apache Spark
Il connettore Cloud Storage è installato per impostazione predefinita su tutti i nodi del cluster Managed Service for Apache Spark nella directory /usr/local/share/google/managed-spark/lib/. Le sezioni seguenti descrivono i passaggi che puoi seguire per completare la configurazione del connettore sui cluster Managed Service for Apache Spark.
Account di servizio VM
Quando esegui il connettore sui nodi del cluster Managed Service for Apache Spark e su altre VM di Compute Engine, la proprietà google.cloud.auth.service.account.enable è impostata su false per impostazione predefinita, il che significa che non devi configurare le credenziali dell'account del service account della VM per il connettore. Le credenziali dell'account del account di servizio della VM vengono fornite dal server dei metadati della VM.
Il service account VM di Managed Service for Apache Spark deve disporre dell'autorizzazione per accedere al bucket Cloud Storage.
Se utilizzi un account di servizio personalizzato con un cluster di job Spark 2.2+: se selezioni un service account personalizzato durante la creazione di un cluster con versione immagine 2.2+ di Managed Service for Apache Spark a cui invii job Spark e se i job Spark leggono o scrivono in Cloud Storage, per evitare problemi di autorizzazione che possono causare errori dei job, aggiungi la seguente configurazione (mostrata in grassetto) al codice di creazione della sessione 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()
Per verificare che le autorizzazioni siano impostate correttamente, assicurati che il account di servizio personalizzato disponga delle autorizzazioni storage.objects.get e storage.objects.create:
- Visualizza l'accesso attuale per elencare i ruoli concessi al account di servizio personalizzato.
- Trova un ruolo o un'autorizzazione per cercare le autorizzazioni associate a un ruolo.
Versioni del connettore selezionate dall'utente
Le versioni predefinite del connettore Cloud Storage utilizzate nelle immagini più recenti installate sui cluster Managed Service for Apache Spark sono elencate nelle pagine delle versioni immagine. Se la tua applicazione dipende da una versione del connettore non predefinita di cui è stato eseguito il deployment nel tuo cluster, puoi eseguire una delle seguenti azioni per utilizzare la versione del connettore selezionata:
- Crea un cluster con il flag
--metadata=GCS_CONNECTOR_VERSION=x.y.z, che aggiorna il connettore utilizzato dalle applicazioni in esecuzione sul cluster alla versione del connettore specificata. - Includi e riposiziona le classi e le dipendenze del connettore per la versione che stai utilizzando nel file jar dell'applicazione. La rilocazione è necessaria per evitare un conflitto tra la versione del connettore di cui hai eseguito il deployment e la versione predefinita del connettore installata sul cluster Managed Service for Apache Spark. Consulta anche l'esempio di rilocazione delle dipendenze Maven.
Configurazione del connettore su cluster non Managed Service for Apache Spark
Puoi seguire questi passaggi per configurare il connettore Cloud Storage su un cluster non Managed Service for Apache Spark, ad esempio un cluster Apache Hadoop o Spark che utilizzi per spostare i dati HDFS on-premise in Cloud Storage.
Scarica il connettore.
- Per scaricare il connettore Cloud Storage:
- Per utilizzare una versione di
latestche si trova nel bucket Cloud Storage (l'utilizzo di una versione dilatestnon è consigliato per le applicazioni di produzione): - Per utilizzare una versione specifica dal tuo bucket Cloud Storage, sostituisci le versioni del connettore Hadoop e Cloud Storage nel pattern del nome
gcs-connector-HADOOP_VERSION-CONNECTOR_VERSION.jar, ad esempiogs://hadoop-lib/gcs/gcs-connector-hadoop2-2.1.1.jar. - Per utilizzare una versione specifica dal repository Apache Maven, scarica un file jar ombreggiato con il suffisso
-shadednel nome.
- Per utilizzare una versione di
- Per scaricare il connettore Cloud Storage:
Installa il connettore.
Segui le istruzioni di GitHub per installare, configurare e testare il connettore Cloud Storage.
Utilizzo dei connettori
Puoi utilizzare il connettore per accedere ai dati di Cloud Storage nei seguenti modi:
- In un'applicazione Spark, PySpark o Hadoop con il prefisso
gs:// - In una shell Hadoop con
hadoop fs -ls gs://bucket/dir/file - Nel browser di Cloud Storage Nella console Google Cloud
- Utilizzando i comandi di Google Cloud SDK, ad esempio:
Utilizzo di Java
Il connettore Cloud Storage richiede Java 8.
Di seguito è riportata una sezione di esempio di gestione delle dipendenze POM di Maven per il connettore Cloud Storage. Per ulteriori informazioni, consulta Gestione delle dipendenze.
<dependency>
<groupId>com.google.cloud.bigdataoss</groupId>
<artifactId>gcs-connector</artifactId>
<version>hadoopX-X.X.XCONNECTOR VERSION</version>
<scope>provided</scope>
</dependency>
Per una versione ombreggiata:
<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>
Supporto dei connettori
Il connettore Cloud Storage è supportato da Google Cloud per l'utilizzo con i prodotti e i casi d'uso diGoogle Cloud . Se utilizzato con Managed Service for Apache Spark, è supportato allo stesso livello di Managed Service for Apache Spark. Per saperne di più, consulta Richiedi assistenza.
Connettiti a Cloud Storage utilizzando gRPC
Per impostazione predefinita, il connettore Cloud Storage su Managed Service for Apache Spark utilizza l'API JSON di Cloud Storage. Questa sezione mostra come abilitare il connettore Cloud Storage per utilizzare gRPC.
Considerazioni sull'utilizzo
L'utilizzo del connettore Cloud Storage con gRPC include le seguenti considerazioni:
- Località del bucket regionale: gRPC può migliorare le latenze di lettura solo quando le VM di Compute Engine e i bucket Cloud Storage si trovano nella stessa regione di Compute Engine.
- Job ad alta intensità di lettura: gRPC può offrire latenze di lettura migliorate per le letture di lunga durata e può essere utile per i workload ad alta intensità di lettura. Non è consigliato per le applicazioni che creano un canale gRPC, eseguono un breve calcolo e poi chiudono il canale.
- Richieste non autenticate: gRPC non supporta le richieste non autenticate.
Requisiti
Quando utilizzi gRPC con il connettore Cloud Storage, si applicano i seguenti requisiti:
La rete VPC del cluster Managed Service for Apache Spark deve supportare la connettività diretta. Ciò significa che le route e le regole firewall della rete devono consentire al traffico in uscita di raggiungere
34.126.0.0/18e2001:4860:8040::/42.- Se il cluster Managed Service for Apache Spark utilizza il networking IPv6, devi configurare una subnet IPv6 per le istanze VM. Per saperne di più, consulta Configura IPv6 per le istanze e i template di istanza.
Quando crei un cluster Managed Service for Apache Spark, devi utilizzare la versione del connettore Cloud Storage
2.2.23o successiva con la versione immagine2.1.56+o la versione del connettore Cloud Storage v3.0.0 o successiva con la versione immagine 2.2.0+. La versione del connettore Cloud Storage installata su ogni versione immagine di Managed Service for Apache Spark è elencata nelle pagine delle versioni immagine di Managed Service for Apache Spark.- Se crei e utilizzi un cluster virtuale Managed Service for Apache Spark su GKE per le tue richieste Cloud Storage gRPC, è consigliata la versione GKE
1.28.5-gke.1199000congke-metadata-server 0.4.285. Questa combinazione supporta la connettività diretta.
- Se crei e utilizzi un cluster virtuale Managed Service for Apache Spark su GKE per le tue richieste Cloud Storage gRPC, è consigliata la versione GKE
Tu o l'amministratore dell'organizzazione dovete concedere i ruoli di Identity and Access Management che includono le autorizzazioni necessarie per configurare ed effettuare richieste gRPC al connettore Cloud Storage. Questi ruoli possono includere:
- Ruolo utente: ruolo Dataproc Editor concesso agli utenti per consentire loro di creare cluster e inviare job
- Ruolo del service account: ruolo Storage Object User concesso al service account VM di Managed Service for Apache Spark per consentire alle applicazioni in esecuzione sulle VM del cluster di visualizzare, leggere, creare e scrivere oggetti Cloud Storage.
Abilita gRPC sul connettore Cloud Storage
Puoi attivare gRPC sul connettore Cloud Storage a livello di cluster o di job. Una volta abilitate sul cluster, le richieste di lettura del connettore Cloud Storage utilizzano gRPC. Se abilitate su un job anziché a livello di cluster, le richieste di lettura del connettore Cloud Storage utilizzano gRPC solo per il job.
Abilita un cluster
Per abilitare gRPC sul connettore Cloud Storage a livello di cluster, imposta la proprietà core:fs.gs.client.type=STORAGE_CLIENT quando crei un cluster Managed Service for Apache Spark.
Una volta abilitato gRPC a livello di cluster, le richieste di lettura del connettore Cloud Storage effettuate dai job in esecuzione sul cluster utilizzano gRPC.
Esempio di gcloud CLI:
gcloud dataproc clusters create CLUSTER_NAME \
--project=PROJECT_ID \
--region=REGION \
--properties=core:fs.gs.client.type=STORAGE_CLIENT
Sostituisci quanto segue:
- CLUSTER_NAME: specifica un nome per il cluster.
- PROJECT_NAME: l'ID progetto in cui si trova il cluster. Gli ID progetto sono elencati nella sezione Informazioni sul progetto della dashboard della console Google Cloud .
- REGION: specifica una regione di Compute Engine in cui si troverà il cluster.
Abilita un job
Per abilitare gRPC sul connettore Cloud Storage per un job specifico, includi --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT quando invii un job.
Esempio: esegui un job su un cluster esistente che utilizza gRPC per leggere da Cloud Storage.
Crea uno script PySpark
/tmp/line-count.pylocale che utilizza gRPC per leggere un file di testo di Cloud Storage e restituire il numero di righe nel file.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)) EOFCrea un file di testo
/tmp/line-count-sample.txtlocale.cat <<EOF >"/tmp/line-count-sample.txt" Line 1 Line 2 line 3 EOF
Carica i file
/tmp/line-count.pye/tmp/line-count-sample.txtlocali nel tuo bucket in Cloud Storage.gcloud storage cp /tmp/line-count* gs://BUCKET
Esegui il job
line-count.pysul tuo cluster. Imposta--properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENTsu enable per abilitare gRPC per le richieste di lettura del connettore 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
Sostituisci quanto segue:
- CLUSTER_NAME: il nome di un cluster esistente.
- PROJECT_NAME: il tuo ID progetto. Gli ID progetto sono elencati nella sezione Informazioni sul progetto della dashboard della console Google Cloud .
- REGION: la regione di Compute Engine in cui si trova il cluster.
- BUCKET: il tuo bucket Cloud Storage.
Genera metriche lato client gRPC
Puoi configurare il connettore Cloud Storage per generare metriche relative a gRPC in Cloud Monitoring. Le metriche relative a gRPC possono aiutarti a:
- Monitora e ottimizza le prestazioni delle richieste gRPC a Cloud Storage
- Risolvere i problemi ed eseguire il debug
- Ottenere insight sull'utilizzo e sul comportamento delle applicazioni
Per informazioni su come configurare il connettore Cloud Storage per generare metriche relative a gRPC, consulta Utilizza le metriche lato client gRPC.
Risorse
- Consulta le proprietà di configurazione del connettore Cloud Storage di GitHub.
- Consulta Connettiti a Cloud Storage utilizzando gRPC per utilizzare il connettore Cloud Storage con le librerie client, i Controlli di servizio VPC e altri scenari.
- Scopri di più su Cloud Storage.
- Consulta Utilizza il connettore Cloud Storage con Apache Spark.
- Comprendere il file system Apache Hadoop.
- Visualizza la documentazione di riferimento di Javadoc.