Memorizzazione dei dati Spark shuffle - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Memorizzazione dei dati Spark shuffle

Lo shuffle rappresenta un passaggio importante in un processo Spark quando i dati vengono riorganizzati tra le partizioni. È necessario perché trasformazioni estese, come join, groupByKey, reduceByKey e repartition, hanno bisogno di informazioni da altre partizioni per completare l'elaborazione. Spark raccoglie i dati richiesti da ciascuna partizione e li combina in una nuova partizione. Durante uno shuffle, i dati vengono scritti su disco e trasferiti attraverso la rete. Di conseguenza, l'operazione di shuffle è legata alla capacità del disco locale. Spark genera un errore No space left on device o MetadataFetchFailedException quando sull'executor non è rimasto sufficiente spazio su disco e non vi è un ripristino.

Nota

AWS Glue Il plug-in Spark shuffle con Amazon S3 è supportato solo per i lavori. AWS Glue ETL

Soluzione

Con AWS Glue, è ora possibile usare Amazon S3 per archiviare i dati shuffle Spark. Amazon S3 è un servizio di archiviazione di oggetti che offre scalabilità, disponibilità dei dati, sicurezza e prestazioni tra le migliori del settore. Questa soluzione disaggrega calcolo e storage per i processi Spark e offre elasticità completa e storage per lo shuffle a basso costo, consentendo di eseguire in modo affidabile i carichi di lavoro con shuffle intensivo.

Spark workflow showing Map and Reduce stages using Amazon S3 for shuffle data storage.

Stiamo introducendo un nuovo plug-in di archiviazione cloud shuffle per Apache Spark per utilizzare Amazon S3. Puoi attivare lo shuffle Amazon S3 per eseguire i processi AWS Glue in modo affidabile senza errori se sono legati alla capacità del disco locale per operazioni di shuffle di grandi dimensioni. In alcuni casi, lo shuffling su Amazon S3 è leggermente più lento rispetto al disco locale (EBSo) se hai un gran numero di piccole partizioni o file shuffle scritti su Amazon S3.

Prerequisiti per l'utilizzo del plug-in Cloud Shuffle Storage

Per utilizzare il Cloud Shuffle Storage Plugin con i job, è necessario quanto segue: AWS Glue ETL

  • Un bucket Amazon S3 situato nella stessa regione in cui viene eseguito il processo, per archiviare i dati intermedi e i dati riversati. Il prefisso Amazon S3 dell'archiviazione con shuffle può essere specificato con --conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket/prefix/, come nell'esempio seguente:

    --conf spark.shuffle.glue.s3ShuffleBucket=s3://glue-shuffle-123456789-us-east-1/glue-shuffle-data/
  • Imposta le policy del ciclo di vita dell'archiviazione di Amazon S3 sul prefisso (come glue-shuffle-data), poiché lo shuffle manager non pulisce i file al termine del processo. Lo shuffle intermedio e i dati riversati devono essere eliminati al termine di un processo. Gli utenti possono impostare policy del ciclo di vita breve sul prefisso. Le istruzioni per configurare il ciclo di vita per Amazon S3 sono disponibili nella sezione Setting lifecycle configuration on a bucket nella Guida per l'utente di Amazon Simple Storage Service.

Utilizzo di AWS Glue Spark shuffle manager dalla console AWS

Per configurare AWS Glue Spark shuffle manager utilizzando la AWS Glue console o AWS Glue Studio durante la configurazione di un job: scegli il parametro -- write-shuffle-files-to -s3 job per attivare Amazon S3 shuffling per il job.

Job parameters interface showing --write-shuffle-files- parameter and option to add more.

Utilizzo del plug-in shuffle di AWS Glue Spark

I seguenti parametri di processo attivano e regolano AWS Glue shuffle manager. Questi parametri sono flag, quindi i valori forniti non vengono considerati.

  • --write-shuffle-files-to-s3: il flag principale, che abilita lo shuffle manager di AWS Glue Spark all'utilizzo dei bucket Amazon S3 per scrivere e leggere i dati shuffle. Quando il flag non è specificato, lo shuffle manager non viene utilizzato.

  • --write-shuffle-spills-to-s3: (supportato solo in AWS Glue versione 2.0). Un flag facoltativo che consente di scaricare i file riversati nei bucket Amazon S3, fornendo ulteriore resilienza al processo Spark. Questo è necessario solo per carichi di lavoro di grandi dimensioni che riversano molti dati sul disco. Quando il flag non è specificato, non viene scritto alcun file riversato intermedio.

  • --conf spark.shuffle.glue.s3ShuffleBucket=s3://<shuffle-bucket> — Un altro flag opzionale che specifica il bucket Amazon S3 in cui vengono scritti i file shuffle. Per impostazione --TempDir predefinita, /shuffle-data. AWS Glue 3.0+ supporta la scrittura di file shuffle su più bucket specificando i bucket con un delimitatore di virgola, come in. --conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket-1/prefix,s3://shuffle-bucket-2/prefix/ L'utilizzo di più bucket migliora le prestazioni.

Per abilitare la crittografia a riposo per i dati shuffle, fornisci le impostazioni di configurazione della sicurezza. Per ulteriori informazioni sulle configurazioni di sicurezza, consulta Configurazione della crittografia in AWS Glue. AWS Glue supporta tutte le altre configurazioni relative ai dati shuffle fornite da Spark.

File binari software per il plug-in di archiviazione cloud shuffle

Puoi anche scaricare i file binari software del plug-in di archiviazione cloud shuffle per Apache Spark con la licenza Apache 2.0 ed eseguirli in qualsiasi ambiente Spark. Il nuovo plug-in include il supporto per Amazon S3 e può anche essere facilmente configurato per utilizzare altre forme di archiviazione cloud come Google Cloud Storage e Microsoft Azure Blob Storage. out-of-the Per ulteriori informazioni, consulta Plug-in di archiviazione cloud shuffle per Apache Spark.

Note e limitazioni

Di seguito sono riportate note o limitazioni per AWS Glue shuffle manager:

  • AWS Glue shuffle manager non elimina automaticamente i file di dati shuffle (temporanei) archiviati nel bucket Amazon S3 dopo il completamento di un processo. Per garantire la protezione dei dati, segui le istruzioni riportate nella sezione Prerequisiti per l'utilizzo del plug-in Cloud Shuffle Storage prima di abilitare il plug-in Cloud Shuffle Storage.

  • È possibile usare questa funzionalità se i dati sono asimmetrici.