Menyimpan data shuffle Spark - AWS Glue

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyimpan data shuffle Spark

Shuffling adalah langkah penting dalam pekerjaan Spark setiap kali data disusun ulang di antara partisi. Hal ini diperlukan karena transformasi yang luas sepertijoin,, groupByKeyreduceByKey, dan repartition memerlukan informasi dari partisi lain untuk menyelesaikan pemrosesan. Spark mengumpulkan data yang diperlukan dari setiap partisi dan menggabungkannya menjadi partisi baru. Selama shuffle, data ditulis ke disk dan ditransfer ke seluruh jaringan. Akibatnya, operasi shuffle terikat pada kapasitas disk lokal. Spark melempar MetadataFetchFailedException kesalahan No space left on device atau ketika tidak ada cukup ruang disk yang tersisa pada eksekutor dan tidak ada pemulihan.

catatan

AWS Glue Plugin Spark shuffle dengan Amazon S3 hanya didukung untuk pekerjaan. AWS Glue ETL

Solusi

DenganAWS Glue, Anda sekarang dapat menggunakan Amazon S3 untuk menyimpan data shuffle Spark. Amazon S3 adalah layanan penyimpanan objek yang menawarkan skalabilitas, ketersediaan data, keamanan, dan kinerja terdepan di industri. Solusi ini memisahkan komputasi dan penyimpanan untuk pekerjaan Spark Anda, dan memberikan elastisitas lengkap dan penyimpanan shuffle berbiaya rendah, memungkinkan Anda menjalankan beban kerja paling intensif acak dengan andal.

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

Kami memperkenalkan Plugin Penyimpanan Cloud Shuffle baru untuk Apache Spark untuk menggunakan Amazon S3. Anda dapat mengaktifkan pengocokan Amazon S3 untuk menjalankan AWS Glue pekerjaan dengan andal tanpa kegagalan jika diketahui terikat oleh kapasitas disk lokal untuk operasi pengocokan besar. Dalam beberapa kasus, pengocokan ke Amazon S3 sedikit lebih lambat daripada disk lokal (EBSatau) jika Anda memiliki sejumlah besar partisi kecil atau file acak yang ditulis ke Amazon S3.

Prasyarat untuk menggunakan Plugin Cloud Shuffle Storage

Untuk menggunakan Plugin Cloud Shuffle Storage dengan AWS Glue ETL pekerjaan, Anda memerlukan yang berikut ini:

  • Bucket Amazon S3 yang terletak di wilayah yang sama dengan pekerjaan Anda, untuk menyimpan data acak dan tumpah perantara. Awalan penyimpanan shuffle Amazon S3 dapat ditentukan dengan--conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket/prefix/, seperti pada contoh berikut:

    --conf spark.shuffle.glue.s3ShuffleBucket=s3://glue-shuffle-123456789-us-east-1/glue-shuffle-data/
  • Tetapkan kebijakan siklus hidup penyimpanan Amazon S3 pada awalan (sepertiglue-shuffle-data) karena pengelola acak tidak membersihkan file setelah pekerjaan selesai. Data shuffle dan tumpah perantara harus dihapus setelah pekerjaan selesai. Pengguna dapat menetapkan kebijakan siklus hidup singkat pada awalan. Petunjuk untuk menyiapkan kebijakan siklus hidup Amazon S3 tersedia di Menyetel konfigurasi siklus hidup pada bucket di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Menggunakan AWS Glue Spark shuffle manager dari konsol AWS

Untuk menyiapkan pengelola acak AWS Glue Spark menggunakan AWS Glue konsol atau AWS Glue Studio saat mengonfigurasi pekerjaan: pilih parameter pekerjaan -- write-shuffle-files-to -s3 untuk mengaktifkan pengocokan Amazon S3 untuk pekerjaan tersebut.

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

Menggunakan plugin AWS Glue Spark shuffle

Parameter pekerjaan berikut menyala dan menyetel manajer AWS Glue acak. Parameter ini adalah bendera, jadi nilai apa pun yang diberikan tidak dipertimbangkan.

  • --write-shuffle-files-to-s3— Bendera utama, yang memungkinkan manajer shuffle AWS Glue Spark menggunakan bucket Amazon S3 untuk menulis dan membaca data shuffle. Ketika bendera tidak ditentukan, manajer acak tidak digunakan.

  • --write-shuffle-spills-to-s3— (Didukung hanya pada AWS Glue versi 2.0). Bendera opsional yang memungkinkan Anda membongkar file tumpahan ke bucket Amazon S3, yang memberikan ketahanan tambahan pada pekerjaan Spark Anda. Ini hanya diperlukan untuk beban kerja besar yang menumpahkan banyak data ke disk. Ketika bendera tidak ditentukan, tidak ada file tumpahan perantara yang ditulis.

  • --conf spark.shuffle.glue.s3ShuffleBucket=s3://<shuffle-bucket>— Bendera opsional lain yang menentukan bucket Amazon S3 tempat Anda menulis file shuffle. Secara default, --TempDir /shuffle-data. AWS Glue 3.0+ mendukung penulisan file shuffle ke beberapa bucket dengan menentukan bucket dengan pembatas koma, seperti pada. --conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket-1/prefix,s3://shuffle-bucket-2/prefix/ Menggunakan beberapa ember meningkatkan kinerja.

Anda perlu menyediakan pengaturan konfigurasi keamanan untuk mengaktifkan enkripsi saat istirahat untuk data acak. Untuk informasi selengkapnya tentang konfigurasi keamanan, lihatMenyiapkan enkripsi di AWS Glue. AWS Gluemendukung semua konfigurasi terkait shuffle lainnya yang disediakan oleh Spark.

Binari perangkat lunak untuk plugin Cloud Shuffle Storage

Anda juga dapat mengunduh binari perangkat lunak Cloud Shuffle Storage Plugin untuk Apache Spark di bawah lisensi Apache 2.0 dan menjalankannya di lingkungan Spark apa pun. Plugin baru ini dilengkapi dengan dukungan out-of-the kotak untuk Amazon S3, dan juga dapat dengan mudah dikonfigurasi untuk menggunakan bentuk penyimpanan cloud lainnya seperti Google Cloud Storage dan Microsoft Azure Blob Storage. Untuk informasi selengkapnya, lihat Plugin Cloud Shuffle Storage untuk Apache Spark.

Catatan dan batasan

Berikut ini adalah catatan atau batasan untuk manajer AWS Glue acak:

  • AWS Glue pengelola acak tidak secara otomatis menghapus file data acak (sementara) yang disimpan di bucket Amazon S3 Anda setelah pekerjaan selesai. Untuk memastikan perlindungan data, ikuti petunjuk Prasyarat untuk menggunakan Plugin Cloud Shuffle Storage sebelum mengaktifkan Plugin Cloud Shuffle Storage.

  • Anda dapat menggunakan fitur ini jika data Anda miring.