Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konfigurasi Spark
Anda dapat mengonfigurasi Spark di Amazon EMR
Klasifikasi konfigurasi untuk Spark di Amazon EMR meliputi yang berikut:
-
spark
— MenetapkanmaximizeResourceAllocation
properti ke benar atau salah. Jika benar, Amazon EMR secara otomatis mengonfigurasispark-defaults
properti berdasarkan konfigurasi perangkat keras klaster. Untuk informasi selengkapnya, lihat Menggunakan maximizeResourceAllocation. -
spark-defaults
— Menetapkan nilai dalamspark-defaults.conf
file. Untuk informasi lebih lanjut, lihat Konfigurasi percikandalam dokumentasi Spark. -
spark-env
— Menetapkan nilai dalamspark-env.sh
file. Untuk informasi lebih lanjut, lihat Variabel lingkungandalam dokumentasi Spark. -
spark-hive-site
— Menetapkan nilai dalamhive-site.xml
untuk Spark. -
spark-log4j
— (Amazon EMR merilis 6.7.x dan lebih rendah) Menetapkan nilai dalam file.log4j.properties
Untuk informasi lebih lanjut, lihat file log4j.properties.templatedi Github. -
spark-log4j2
— (Amazon EMR merilis 6.8.0 dan lebih tinggi) Menetapkan nilai dalam file.log4j2.properties
Untuk informasi lebih lanjut, lihat file log4j2.properties.templatedi Github. -
spark-metrics
— Menetapkan nilai dalammetrics.properties
file. Untuk pengaturan dan informasi selengkapnya, lihat file metrics.properties.templatedi Github, dan Metrik dalam dokumentasi Spark.
catatan
Jika Anda memigrasikan beban kerja Spark ke Amazon EMR dari platform lain, kami sarankan Anda menguji beban kerja Anda dengan Default percikan ditetapkan oleh Amazon EMR sebelum menambahkan konfigurasi khusus. Sebagian besar pelanggan melihat peningkatan kinerja dengan pengaturan default kami.
Topik
- Default percikan ditetapkan oleh Amazon EMR
- Mengkonfigurasi pengumpulan sampah Spark di Amazon 6.1.0 EMR
- Menggunakan maximizeResourceAllocation
- Mengkonfigurasi perilaku dekomisioning node
- Variabel ThriftServer lingkungan percikan
- Mengubah pengaturan default Spark
- Migrasi dari Apache Log4j 1.x ke Log4j 2.x
Default percikan ditetapkan oleh Amazon EMR
Tabel berikut menunjukkan bagaimana Amazon EMR menetapkan nilai default spark-defaults
yang memengaruhi aplikasi.
Pengaturan | Deskripsi | Nilai default |
---|---|---|
spark.executor.memory |
Jumlah memori yang digunakan per proses pelaksana. Misalnya: |
Pengaturan ini ditentukan oleh jenis instance inti dan tugas di cluster. |
spark.executor.cores |
Bilangan teras untuk digunakan pada setiap pelaksana. |
Pengaturan ini ditentukan oleh jenis instance inti dan tugas di cluster. |
spark.dynamicAllocation.enabled |
Jika benar, gunakan alokasi sumber daya dinamis untuk menskalakan jumlah pelaksana yang terdaftar dengan aplikasi naik dan turun berdasarkan beban kerja. |
catatanLayanan shuffle percikan secara otomatis dikonfigurasi oleh Amazon. EMR |
spark.sql.hive.advancedPartitionPredicatePushdown.enabled |
Ketika benar, predikat partisi lanjutan pushdown ke Hive metastore diaktifkan. |
true |
spark.sql.hive.stringLikePartitionPredicatePushdown.enabled |
Mendorong ke bawah catatanGlue tidak mendukung predikat push down untuk |
true |
Mengkonfigurasi pengumpulan sampah Spark di Amazon 6.1.0 EMR
Menyetel konfigurasi pengumpulan sampah khusus dengan spark.driver.extraJavaOptions
dan spark.executor.extraJavaOptions
mengakibatkan kegagalan peluncuran driver atau pelaksana dengan Amazon EMR 6.1 karena konfigurasi pengumpulan sampah yang bertentangan dengan Amazon 6.1.0. EMR Untuk Amazon EMR 6.1.0, konfigurasi pengumpulan sampah default diatur melalui spark.driver.defaultJavaOptions
danspark.executor.defaultJavaOptions
. Konfigurasi ini hanya berlaku untuk Amazon EMR 6.1.0. JVMopsi yang tidak terkait dengan pengumpulan sampah, seperti untuk mengonfigurasi logging (-verbose:class
), masih dapat diatur. extraJavaOptions
Untuk informasi lebih lanjut, lihat sifat aplikasi Spark.
Menggunakan maximizeResourceAllocation
Untuk mengkonfigurasi pelaksana Anda untuk menggunakan sumber daya maksimum yang mungkin pada setiap node dalam sebuah cluster, mengatur maximizeResourceAllocation
ke true
di spark
klasifikasi konfigurasi. maximizeResourceAllocation
Ini khusus untuk AmazonEMR. Saat Anda mengaktifkanmaximizeResourceAllocation
, Amazon EMR menghitung sumber daya komputasi dan memori maksimum yang tersedia untuk eksekutor pada instance dalam grup instans inti. Ini kemudian menetapkan sesuai spark-defaults
tetapan berdasarkan nilai maksimum yang dikira.
Amazon EMR menghitung sumber daya komputasi dan memori maksimum yang tersedia untuk eksekutor berdasarkan jenis instans dari armada instans inti. Karena setiap armada instans dapat memiliki tipe dan ukuran instans yang berbeda dalam armada, konfigurasi pelaksana yang EMR digunakan Amazon mungkin bukan yang terbaik untuk klaster Anda, jadi kami tidak menyarankan menggunakan pengaturan default saat menggunakan alokasi sumber daya maksimum. Konfigurasikan pengaturan khusus untuk cluster armada instans Anda.
catatan
Anda tidak boleh menggunakan maximizeResourceAllocation
opsi pada cluster dengan aplikasi terdistribusi lainnya sepertiHBase. Amazon EMR menggunakan YARN konfigurasi khusus untuk aplikasi terdistribusi, yang dapat bertentangan dengan maximizeResourceAllocation
dan menyebabkan aplikasi Spark gagal.
Berikut ini adalah contoh klasifikasi konfigurasi Spark dengan maximizeResourceAllocation
set ketrue
.
[ { "Classification": "spark", "Properties": { "maximizeResourceAllocation": "true" } } ]
Pengaturan | Deskripsi | Nilai |
---|---|---|
spark.default.paralelisme | Jumlah partisi default yang RDDs dikembalikan oleh transformasi seperti bergabung, reduceByKey, dan paralel saat tidak disetel oleh pengguna. |
2X jumlah CPU core yang tersedia untuk YARN kontainer. |
spark.driver.memory | Jumlah memori yang digunakan untuk proses driver, yaitu di mana SparkContext diinisialisasi. (misalnya, 1g, 2g). |
Pengaturan dikonfigurasi berdasarkan jenis contoh dalam gugus. Namun, karena aplikasi driver Spark dapat berjalan pada instance utama atau salah satu instance inti (misalnya, dalam mode YARN klien dan cluster, masing-masing), ini diatur berdasarkan tipe instance yang lebih kecil dalam dua grup instance ini. |
spark.executor.memory | Jumlah memori untuk digunakan per proses pelaksana. (misalnya, 1g, 2g) |
Pengaturan dikonfigurasi berdasarkan inti dan tugas jenis contoh di cluster. |
spark.executor.cores | Bilangan teras untuk digunakan pada setiap pelaksana. | Pengaturan dikonfigurasi berdasarkan inti dan tugas jenis contoh di cluster. |
spark.executor.instances | Jumlah pelaksana. |
Pengaturan dikonfigurasi berdasarkan inti dan tugas jenis contoh di cluster. Set kecuali |
Mengkonfigurasi perilaku dekomisioning node
Dengan Amazon EMR merilis 5.9.0 dan yang lebih tinggi, Spark di Amazon EMR menyertakan serangkaian fitur untuk membantu memastikan bahwa Spark menangani penghentian node dengan anggun karena pengubahan ukuran manual atau permintaan kebijakan penskalaan otomatis. Amazon EMR menerapkan mekanisme daftar penolakan di Spark yang dibangun di atas mekanisme YARN penonaktifan. Mekanisme ini membantu memastikan bahwa tidak ada tugas baru dijadwalkan pada node yang menonaktifkan, sementara pada saat yang sama memungkinkan tugas-tugas yang sudah berjalan untuk menyelesaikan. Selain itu, ada fitur untuk membantu memulihkan pekerjaan Spark lebih cepat jika blok shuffle hilang ketika node berakhir. Proses recomputation dipicu cepat dan dioptimalkan untuk recompute lebih cepat dengan lebih sedikit tahap retries, dan pekerjaan dapat dicegah dari gagal karena mengambil kegagalan yang disebabkan oleh hilang mengoyak blok.
penting
spark.decommissioning.timeout.threshold
Setelan ditambahkan di Amazon EMR rilis 5.11.0 untuk meningkatkan ketahanan Spark saat Anda menggunakan instans Spot. Dalam rilis sebelumnya, ketika sebuah node menggunakan instance Spot, dan instance dihentikan karena harga bid, Spark mungkin tidak dapat menangani penghentian dengan anggun. Pekerjaan mungkin gagal, dan shuffle recomputations bisa mengambil sejumlah besar waktu. Untuk alasan ini, sebaiknya gunakan rilis 5.11.0 atau yang lebih baru jika Anda menggunakan instance Spot.
Pengaturan | Deskripsi | Nilai default |
---|---|---|
|
Saat disetel ke |
|
|
Jumlah waktu node dalam |
|
|
Tersedia di Amazon EMR rilis 5.11.0 atau yang lebih baru. Ditentukan dalam detik. Ketika node bertransisi ke status dekomisioning, jika host akan dinonaktifkan dalam periode waktu yang sama dengan atau kurang dari nilai ini, Amazon EMR tidak hanya menolak daftar node, tetapi juga membersihkan status host (seperti yang ditentukan oleh |
|
|
Ketika diatur ke |
|
|
Ketika diatur ke |
true |
Variabel ThriftServer lingkungan percikan
Spark menetapkan variabel lingkungan Hive Thrift Server Port, HIVE_SERVER2_THRIFT_PORT
, untuk 10001.
Mengubah pengaturan default Spark
Anda mengubah default di spark-defaults.conf
menggunakan spark-defaults
konfigurasi klasifikasi atau maximizeResourceAllocation
pengaturan spark
klasifikasi konfigurasi.
Prosedur berikut menunjukkan cara mengubah pengaturan menggunakan konsol CLI atau.
Untuk membuat cluster dengan spark.executor.memory diatur ke 2g menggunakan CLI
-
Buat kluster dengan Spark yang terinstal dan tetapkan
spark.executor.memory
ke 2g, menggunakan perintah berikut, yang merujuk suatu file,myConfig.json
disimpan di Amazon S3.aws emr create-cluster --release-label
emr-7.3.0
--applications Name=Spark \ --instance-type m5.xlarge --instance-count 2 --service-role EMR_DefaultRole_V2 --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.jsoncatatan
Karakter kelanjutan baris Linux (\) disertakan untuk memudahkan pembacaan. Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).
myConfig.json
:[ { "Classification": "spark-defaults", "Properties": { "spark.executor.memory": "2G" } } ]
Untuk membuat cluster dengan spark.executor.memory diatur ke 2g menggunakan konsol
Arahkan ke EMR konsol Amazon baru dan pilih Beralih ke konsol lama dari navigasi samping. Untuk informasi selengkapnya tentang apa yang diharapkan saat beralih ke konsol lama, lihat Menggunakan konsol lama.
-
Pilih Buat Kluster, Buka opsi tingkat lanjut.
-
Pilih Spark.
-
Di bawah Mengedit setelan perangkat lunak, meninggalkan Masukkan konfigurasi dipilih dan masukkan konfigurasi berikut:
classification=spark-defaults,properties=[spark.executor.memory=2G]
-
Pilih opsi lain, pilih lalu pilih Buat gugus.
Untuk mengatur maximizeResourceAllocation
-
Buat cluster dengan Spark diinstal dan
maximizeResourceAllocation
atur ke true menggunakan AWS CLI, referensi filemyConfig.json
, disimpan di Amazon S3.aws emr create-cluster --release-label
emr-7.3.0
--applications Name=Spark \ --instance-type m5.xlarge --instance-count 2 --service-role EMR_DefaultRole_V2 --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.jsoncatatan
Karakter lanjutan baris Linux (\) disertakan agar mudah dibaca Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).
myConfig.json
:[ { "Classification": "spark", "Properties": { "maximizeResourceAllocation": "true" } } ]
catatan
Dengan Amazon EMR versi 5.21.0 dan yang lebih baru, Anda dapat mengganti konfigurasi klaster dan menentukan klasifikasi konfigurasi tambahan untuk setiap grup instans dalam klaster yang sedang berjalan. Anda melakukan ini dengan menggunakan EMR konsol Amazon, AWS Command Line Interface (AWS CLI), atau AWS SDK. Untuk informasi selengkapnya, lihat Menyediakan Konfigurasi untuk Grup Instans dalam Klaster Berjalan.
Migrasi dari Apache Log4j 1.x ke Log4j 2.x
Apache Sparklog4j.properties
Apache Spark merilis 3.3.0 dan kemudian menggunakan Apache Log4j 2.x dan log4j2.properties
file untuk mengkonfigurasi Log4j dalam proses Spark.
Jika Anda telah mengonfigurasi Apache Spark Log4j menggunakan EMR rilis Amazon yang lebih rendah dari 6.8.0, Anda harus menghapus klasifikasi spark-log4j
konfigurasi lama dan bermigrasi ke klasifikasi konfigurasi dan format kunci sebelum dapat meningkatkan ke Amazon 6.8.0 atau yang lebih baru. spark-log4j2
EMR spark-log4j
Klasifikasi lama menyebabkan pembuatan klaster gagal dengan ValidationException
kesalahan di Amazon EMR merilis 6.8.0 dan yang lebih baru. Anda tidak akan dikenakan biaya atas kegagalan yang terkait dengan ketidakcocokan Log4j, tetapi Anda harus menghapus klasifikasi konfigurasi yang tidak berfungsi spark-log4j
untuk melanjutkan.
Untuk informasi selengkapnya tentang migrasi dari Apache Log4j 1.x ke Log4j 2.x, lihat Panduan Migrasi Apache Log4j dan Template Spark Log4j
catatan
Dengan AmazonEMR, Apache Spark menggunakan log4j2.properties
file daripada file.xml.xl yang dijelaskan dalam Panduan Migrasi Apache