Connettore Cloud Storage

La libreria Java open source del connettore Cloud Storage consente di eseguire job Apache Hadoop o Apache Spark direttamente sui dati in Cloud Storage.

Vantaggi del connettore Cloud Storage

  • Accesso diretto ai dati:archivia i dati in Cloud Storage e accedi direttamente. Non è necessario trasferirlo 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 i servizi Spark, Hadoop e Google.
  • Accessibilità dei dati: quando arresti un cluster Hadoop, a differenza di HDFS, continui ad avere accesso ai tuoi dati in Cloud Storage.
  • Elevata disponibilità dei dati: i dati archiviati in Cloud Storage sono molto disponibili e replicati a livello globale senza perdita di prestazioni.
  • Nessun sovraccarico per la 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 NameNode non è fuori dalla modalità di sicurezza, un processo che può richiedere da alcuni 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 comporta un risparmio significativo sui costi nel tempo.

Configurazione del connettore sui cluster Dataproc

Il connettore Cloud Storage è installato per impostazione predefinita su tutti i nodi del cluster Dataproc nella directory /usr/local/share/google/dataproc/lib/. Le seguenti sezioni descrivono i passaggi che puoi svolgere per completare la configurazione dei connettori nei cluster Dataproc.

Account di servizio VM

Quando esegui il connettore sui nodi del cluster Dataproc e su altre VM 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 di servizio VM per il connettore. Le credenziali dell'account di servizio VM vengono fornite dal server metadati VM.

L'account di servizio VM Dataproc deve disporre dell'autorizzazione per accedere al bucket Cloud Storage.

Versioni dei connettori selezionate dall'utente

Le versioni predefinite del connettore Cloud Storage utilizzate nelle immagini più recenti installate sui cluster Dataproc sono elencate nelle pagine delle versioni delle immagini. 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 rialloca le classi del connettore e le dipendenze del connettore per la versione che utilizzi nel file jar dell'applicazione.La riallocazione è necessaria per evitare un conflitto tra la versione del connettore di cui è stato eseguito il deployment e la versione predefinita del connettore installata sul cluster Dataproc. Consulta anche l'esempio di spostamento delle dipendenze Maven.

Configurazione del connettore su cluster non Dataproc

Per configurare il connettore Cloud Storage su un cluster non Dataproc, ad esempio un cluster Apache Hadoop o Spark, che utilizzi per spostare i dati HDFS on-premise in Cloud Storage, puoi seguire questi passaggi.

  1. Scarica il connettore.

  2. Installa il connettore.

    Segui le istruzioni di GitHub per installare, configurare e testare il connettore Cloud Storage.

Utilizzo del connettore

Puoi utilizzare il connettore per accedere ai dati di Cloud Storage nei seguenti modi:

Utilizzo di Java

Il connettore Cloud Storage richiede Java 8.

Di seguito è riportata una sezione di gestione delle dipendenze POM di Maven di esempio 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 di Google Cloud. Se utilizzato con Dataproc, è supportato allo stesso livello di Dataproc. Per ulteriori informazioni, consulta la pagina Ricevere assistenza.

Connettiti a Cloud Storage utilizzando gRPC

Per impostazione predefinita, il connettore Cloud Storage su Dataproc utilizza l'API JSON di Cloud Storage. Questa sezione mostra come attivare il connettore Cloud Storage per l'utilizzo di gRPC.

Considerazioni sull'utilizzo

L'utilizzo del connettore Cloud Storage con gRPC include le seguenti considerazioni:

  • Posizione del bucket a livello di regione: gRPC può migliorare le latenze di lettura solo quando le VM Compute Engine e i bucket Cloud Storage si trovano nella stessa regione Compute Engine.
  • Job ad alta intensità di lettura: gRPC può offrire latenze di lettura migliorate per letture di lunga durata e può essere utile per i carichi di lavoro 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 Dataproc deve supportare la connettività diretta. Ciò significa che i route e le regole del firewall della rete devono consentire il traffico in uscita per raggiungere 34.126.0.0/18 e 2001:4860:8040::/42.

  • Quando crei un cluster Dataproc, devi utilizzare la versione del connettore Cloud Storage 2.2.23 o successiva con la versione dell'immagine 2.1.56+ o la versione del connettore Cloud Storage v3.0.0 o successiva con la versione dell'immagine 2.2.0 o successiva. La versione del connettore Cloud Storage installata su ogni versione dell'immagine Dataproc è elencata nelle pagine delle versioni delle immagini Dataproc.

    • Se crei e utilizzi un cluster virtuale Dataproc su GKE per le tue richieste gRPC Cloud Storage, è consigliata la versione GKE 1.28.5-gke.1199000 con gke-metadata-server 0.4.285. Questa combinazione supporta la connettività diretta.
  • Tu o l'amministratore della tua 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 Editor Dataproc concesso agli utenti per consentire loro di creare cluster e inviare job
    • Ruolo dell'account di servizio: ruolo Utente oggetto Storage concesso all'account di servizio VM Dataproc per consentire alle applicazioni in esecuzione sulle VM del cluster di visualizzare, leggere, creare e scrivere oggetti Cloud Storage.

Attivare gRPC nel connettore Cloud Storage

Puoi attivare gRPC sul connettore Cloud Storage a livello di cluster o job. Una volta attivato nel cluster, il connettore Cloud Storage utilizza gRPC per le richieste di lettura. Se è attivata in un job anziché a livello di cluster, le richieste di lettura del connettore Cloud Storage utilizzano gRPC solo per il job.

Attivare 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 Dataproc. Una volta attivato gRPC a livello di cluster, le richieste di lettura del connettore Cloud Storage effettuate dai job in esecuzione sul cluster utilizzano gRPC.

Esempio della 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 del 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 Compute Engine in cui verrà posizionato il cluster.

Attivare un job

Per attivare 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.

  1. Crea uno script /tmp/line-count.py PySpark locale che utilizzi gRPC per leggere un file di testo di Cloud Storage e stampare il numero di righe del 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))
    EOF
    
  2. Crea un file di testo /tmp/line-count-sample.txt locale.

    cat <<EOF >"/tmp/line-count-sample.txt"
    Line 1
    Line 2
    line 3
    EOF
    
  3. Carica /tmp/line-count.py e /tmp/line-count-sample.txt locali nel tuo bucket in Cloud Storage.

    gcloud storage cp /tmp/line-count* gs://BUCKET
    
  4. Esegui il job line-count.py sul cluster. Imposta --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT su per attivare 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: l'ID del tuo progetto. Gli ID progetto sono elencati nella sezione Informazioni sul progetto della dashboard della console Google Cloud.
    • REGION: la regione Compute Engine in cui si trova il cluster.
    • BUCKET: il tuo bucket Cloud Storage.

Generare metriche lato client gRPC

Puoi configurare il connettore Cloud Storage in modo da generare le 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 e eseguire il debug
  • Ottieni informazioni sull'utilizzo e sul comportamento delle applicazioni

Per informazioni su come configurare il connettore Cloud Storage per generare metriche relative a gRPC, consulta Utilizzare le metriche lato client gRPC.

Risorse