Saya mencoba memahami hubungan jumlah core dan jumlah eksekutor ketika menjalankan pekerjaan Spark di BENANG.
Lingkungan pengujian adalah sebagai berikut:
- Jumlah node data: 3
- Spesifikasi mesin simpul data:
- CPU: Core i7-4790 (# core: 4, # utas: 8)
- RAM: 32GB (8GB x 4)
- HDD: 8TB (2TB x 4)
Jaringan: 1Gb
Versi percikan: 1.0.0
Versi Hadoop: 2.4.0 (Hortonworks HDP 2.1)
Alur pekerjaan percikan: sc.textFile -> filter -> map -> filter -> mapToPair -> kurangiByKey -> map -> saveAsTextFile
Memasukan data
- Ketik: file teks tunggal
- Ukuran: 165GB
- Jumlah baris: 454.568.833
Keluaran
- Jumlah baris setelah filter kedua: 310.640.717
- Jumlah baris file hasil: 99.848.268
- Ukuran file hasil: 41GB
Pekerjaan dijalankan dengan konfigurasi berikut:
--master yarn-client --executor-memory 19G --executor-cores 7 --num-executors 3
(pelaksana per simpul data, gunakan sebanyak inti)--master yarn-client --executor-memory 19G --executor-cores 4 --num-executors 3
(# core berkurang)--master yarn-client --executor-memory 4G --executor-cores 2 --num-executors 12
(kurang inti, lebih banyak eksekutor)
Waktu yang berlalu:
50 mnt 15 dtk
55 mnt 48 dtk
31 mnt 23 dtk
Yang mengejutkan saya, (3) jauh lebih cepat.
Saya berpikir bahwa (1) akan lebih cepat, karena akan ada lebih sedikit komunikasi antar-pelaksana saat pengocokan.
Meskipun # core dari (1) lebih kecil dari (3), #of core bukanlah faktor kunci karena 2) berkinerja baik.
(Berikut ini ditambahkan setelah jawaban pwilmot.)
Sebagai informasi, tangkapan layar monitor kinerja adalah sebagai berikut:
- Ringkasan simpul data ganglia untuk (1) - pekerjaan dimulai pada 04:37.
- Ringkasan simpul data ganglia untuk (3) - pekerjaan dimulai pada 19:47. Harap abaikan grafik sebelum waktu itu.
Grafik secara kasar dibagi menjadi 2 bagian:
- Pertama: dari mulai hingga mengurangiByKey: CPU intensif, tidak ada aktivitas jaringan
- Kedua: setelah mengurangiByKey: CPU lebih rendah, jaringan I / O selesai.
Seperti yang ditunjukkan grafik, (1) dapat menggunakan daya CPU sebanyak yang diberikan. Jadi, mungkin bukan masalah jumlah utas.
Bagaimana cara menjelaskan hasil ini?