mengapa jumlah reduksi lebih besar dari yang saya tentukan di Hadoop?

Ini adalah output di konsol pekerjaan MR saya. Pekerjaan berhasil diselesaikan. Tapi saya punya dua kekhawatiran.

1) Saya menentukan -D mapred.reduce.slowstart.completed.maps=0.75. namun peredam tidak dimulai ketika peta sudah 75% selesai seperti yang terlihat di bawah

2) Saya menentukan -D mapred.reduce.tasks=2. Namun jumlah tugas peredam yang diluncurkan adalah 3 (seperti terlihat di bawah).

mengapa kedua parameter ini tidak diperhatikan?

hadoop jar hadoop-examples-1.2.1.jar wordcount -D mapred.reduce.slowstart.completed.maps=0.75 -D mapred.reduce.tasks=2 /data /output/result1
2014-07-06 22:25:11.733 java[3236:1903] Unable to load realm info from SCDynamicStore
14/07/06 22:25:13 INFO input.FileInputFormat: Total input paths to process : 4
14/07/06 22:25:13 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/07/06 22:25:13 WARN snappy.LoadSnappy: Snappy native library not loaded
14/07/06 22:25:13 INFO mapred.JobClient: Running job: job_201407061919_0015
14/07/06 22:25:14 INFO mapred.JobClient:  map 0% reduce 0%
14/07/06 22:25:49 INFO mapred.JobClient:  map 25% reduce 0%
14/07/06 22:25:50 INFO mapred.JobClient:  map 50% reduce 0%
14/07/06 22:26:08 INFO mapred.JobClient:  map 75% reduce 0%
14/07/06 22:26:14 INFO mapred.JobClient:  map 100% reduce 0%
14/07/06 22:26:23 INFO mapred.JobClient:  map 100% reduce 8%
14/07/06 22:26:26 INFO mapred.JobClient:  map 100% reduce 33%
14/07/06 22:26:29 INFO mapred.JobClient:  map 100% reduce 37%
14/07/06 22:26:30 INFO mapred.JobClient:  map 100% reduce 54%
14/07/06 22:26:33 INFO mapred.JobClient:  map 100% reduce 66%
14/07/06 22:26:37 INFO mapred.JobClient:  map 100% reduce 86%
14/07/06 22:26:39 INFO mapred.JobClient:  map 100% reduce 100%
14/07/06 22:26:50 INFO mapred.JobClient: Job complete: job_201407061919_0015
14/07/06 22:26:50 INFO mapred.JobClient: Counters: 29
14/07/06 22:26:50 INFO mapred.JobClient:   Job Counters 
14/07/06 22:26:50 INFO mapred.JobClient:     Launched reduce tasks=3
14/07/06 22:26:50 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=107522
14/07/06 22:26:50 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
14/07/06 22:26:50 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
14/07/06 22:26:50 INFO mapred.JobClient:     Launched map tasks=4
14/07/06 22:26:50 INFO mapred.JobClient:     Data-local map tasks=4
14/07/06 22:26:50 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=51153
14/07/06 22:26:50 INFO mapred.JobClient:   File Output Format Counters 
14/07/06 22:26:50 INFO mapred.JobClient:     Bytes Written=880862
14/07/06 22:26:50 INFO mapred.JobClient:   FileSystemCounters
14/07/06 22:26:50 INFO mapred.JobClient:     FILE_BYTES_READ=2217446
14/07/06 22:26:50 INFO mapred.JobClient:     HDFS_BYTES_READ=3672001
14/07/06 22:26:50 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=4030974
14/07/06 22:26:50 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=880862
14/07/06 22:26:50 INFO mapred.JobClient:   File Input Format Counters 
14/07/06 22:26:50 INFO mapred.JobClient:     Bytes Read=3671571
14/07/06 22:26:50 INFO mapred.JobClient:   Map-Reduce Framework
14/07/06 22:26:50 INFO mapred.JobClient:     Map output materialized bytes=1474437
14/07/06 22:26:50 INFO mapred.JobClient:     Map input records=77934
14/07/06 22:26:50 INFO mapred.JobClient:     Reduce shuffle bytes=1474437
14/07/06 22:26:50 INFO mapred.JobClient:     Spilled Records=255974
14/07/06 22:26:50 INFO mapred.JobClient:     Map output bytes=6076197
14/07/06 22:26:50 INFO mapred.JobClient:     Total committed heap usage (bytes)=589447168
14/07/06 22:26:50 INFO mapred.JobClient:     CPU time spent (ms)=19030
14/07/06 22:26:50 INFO mapred.JobClient:     Combine input records=629184
14/07/06 22:26:50 INFO mapred.JobClient:     SPLIT_RAW_BYTES=430
14/07/06 22:26:50 INFO mapred.JobClient:     Reduce input records=102328
14/07/06 22:26:50 INFO mapred.JobClient:     Reduce input groups=82339
14/07/06 22:26:50 INFO mapred.JobClient:     Combine output records=102328
14/07/06 22:26:50 INFO mapred.JobClient:     Physical memory (bytes) snapshot=888221696
14/07/06 22:26:50 INFO mapred.JobClient:     Reduce output records=82339
14/07/06 22:26:50 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=6509461504
14/07/06 22:26:50 INFO mapred.JobClient:     Map output records=629184

EDIT: tanpa parameter apa pun pada baris perintah:

hadoop jar hadoop-examples-1.2.1.jar wordcount /data/ /output/results2
2014-07-06 20:05:29.428 java[2869:1903] Unable to load realm info from SCDynamicStore
14/07/06 20:05:29 INFO input.FileInputFormat: Total input paths to process : 4
14/07/06 20:05:29 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/07/06 20:05:29 WARN snappy.LoadSnappy: Snappy native library not loaded
14/07/06 20:05:30 INFO mapred.JobClient: Running job: job_201407061919_0009
14/07/06 20:05:31 INFO mapred.JobClient:  map 0% reduce 0%
14/07/06 20:05:43 INFO mapred.JobClient:  map 25% reduce 0%
14/07/06 20:05:47 INFO mapred.JobClient:  map 50% reduce 0%
14/07/06 20:05:48 INFO mapred.JobClient:  map 100% reduce 0%
14/07/06 20:05:55 INFO mapred.JobClient:  map 100% reduce 33%
14/07/06 20:05:57 INFO mapred.JobClient:  map 100% reduce 100%
14/07/06 20:06:00 INFO mapred.JobClient: Job complete: job_201407061919_0009
14/07/06 20:06:00 INFO mapred.JobClient: Counters: 29
14/07/06 20:06:00 INFO mapred.JobClient:   Job Counters 
14/07/06 20:06:00 INFO mapred.JobClient:     Launched reduce tasks=1
14/07/06 20:06:00 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=53468
14/07/06 20:06:00 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
14/07/06 20:06:00 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
14/07/06 20:06:00 INFO mapred.JobClient:     Launched map tasks=4
14/07/06 20:06:00 INFO mapred.JobClient:     Data-local map tasks=4
14/07/06 20:06:00 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=14440
14/07/06 20:06:00 INFO mapred.JobClient:   File Output Format Counters 
14/07/06 20:06:00 INFO mapred.JobClient:     Bytes Written=880862
14/07/06 20:06:00 INFO mapred.JobClient:   FileSystemCounters
14/07/06 20:06:00 INFO mapred.JobClient:     FILE_BYTES_READ=2214915
14/07/06 20:06:00 INFO mapred.JobClient:     HDFS_BYTES_READ=3672001
14/07/06 20:06:00 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=3974001
14/07/06 20:06:00 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=880862
14/07/06 20:06:00 INFO mapred.JobClient:   File Input Format Counters 
14/07/06 20:06:00 INFO mapred.JobClient:     Bytes Read=3671571
14/07/06 20:06:00 INFO mapred.JobClient:   Map-Reduce Framework
14/07/06 20:06:00 INFO mapred.JobClient:     Map output materialized bytes=1474413
14/07/06 20:06:00 INFO mapred.JobClient:     Map input records=77934
14/07/06 20:06:00 INFO mapred.JobClient:     Reduce shuffle bytes=1474413
14/07/06 20:06:00 INFO mapred.JobClient:     Spilled Records=255974
14/07/06 20:06:00 INFO mapred.JobClient:     Map output bytes=6076197
14/07/06 20:06:00 INFO mapred.JobClient:     Total committed heap usage (bytes)=557662208
14/07/06 20:06:00 INFO mapred.JobClient:     CPU time spent (ms)=10370
14/07/06 20:06:00 INFO mapred.JobClient:     Combine input records=629184
14/07/06 20:06:00 INFO mapred.JobClient:     SPLIT_RAW_BYTES=430
14/07/06 20:06:00 INFO mapred.JobClient:     Reduce input records=102328
14/07/06 20:06:00 INFO mapred.JobClient:     Reduce input groups=82339
14/07/06 20:06:00 INFO mapred.JobClient:     Combine output records=102328
14/07/06 20:06:00 INFO mapred.JobClient:     Physical memory (bytes) snapshot=802287616
14/07/06 20:06:00 INFO mapred.JobClient:     Reduce output records=82339
14/07/06 20:06:00 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=5418221568
14/07/06 20:06:00 INFO mapred.JobClient:     Map output records=629184

person brain storm    schedule 07.07.2014    source sumber
comment
Pastikan Anda mengejanya -Dproperty=value (tanpa spasi) atau -Dproperty value (dengan satu spasi) atau mungkin salah diuraikan   -  person rVr    schedule 07.07.2014
comment
@rVr: tanpa menentukan saya melihat bahwa peredam saya adalah 1. jadi mengatur nilainya, memang mengubahnya   -  person brain storm    schedule 07.07.2014
comment
sepertinya Anda juga menggunakan penggabung yang mungkin dipanggil dengan kerangka kerja atau tidak? Bisakah Anda menempelkan cetakan lengkap dengan dan tanpa pengaturan mapred.reduce.tasks=2?   -  person rVr    schedule 07.07.2014
comment
@rVr: Saya telah memperbarui di atas   -  person brain storm    schedule 08.07.2014
comment
Satu hal yang pasti adalah bahwa kemajuan peredam dalam keluaran pekerjaan tidak mencakup fase pengacakan. Fase pengurangan memiliki 3 langkah: acak, sortir, kurangi. Shuffle adalah tempat pengumpulan data oleh peredam dari masing-masing mapper. Apa yang Anda tanyakan dengan menentukan mapred.reduce.slowstart.completed.maps=0.75 adalah agar reduksi mulai mengacak data ketika 75% tugas peta selesai. Itu masih belum memulai fase pengurutan dan pengurangan peredam (yang dimulai hanya setelah 100% tugas peta selesai), itulah pemahaman saya untuk pertanyaan Anda 1   -  person rVr    schedule 08.07.2014
comment
Dalam mode apa Anda menjalankan hadoop? Bisakah Anda memeriksa antarmuka GUI pelacak pekerjaan untuk mengonfirmasi berapa banyak pengurangan tugas yang digunakan pekerjaan?   -  person rVr    schedule 08.07.2014
comment
@rVr: Saya juga berpikiran sama. namun tahap pengurutan dilakukan sebelum pengocokan. Artinya, data diurutkan/dipartisi dan akhirnya diacak melintasi jaringan ke node data yang berbeda. Langkah pengurutan lebih merupakan fase penggabungan. ketika seorang mapper menghasilkan kunci perantara, pasangan nilai, sebelum disimpan di disk, ia dipartisi (diurutkan) untuk reduksi. (Ini pemahaman saya dari hadoop: buku panduan definitif)   -  person brain storm    schedule 08.07.2014
comment
@rVr: tapi kenapa jumlah reduksinya 3 bukannya 2??   -  person brain storm    schedule 08.07.2014


Jawaban (1)


1) Saya menentukan -D mapred.reduce.slowstart.completed.maps=0.75. namun peredam tidak dimulai ketika peta sudah 75% selesai seperti yang terlihat di bawah

75% kemajuan peta tidak berarti 75% tugas peta telah selesai. Maksud dari perintah ini adalah ketika 75% (3 dari 4 tugas peta dalam kasus Anda) tugas peta selesai, reduksi akan memulai fase pengacakan. Lihat postingan ini untuk mengetahui rincian lebih lanjut tentang bagaimana kemajuan didefinisikan.

2) Saya menentukan -D mapred.reduce.tasks=2. Namun jumlah tugas peredam yang diluncurkan adalah 3 (seperti terlihat di bawah).

Tugas pengurangan yang sama dapat diluncurkan pada beberapa node (ini disebut "eksekusi spekulatif"). Ketika salah satu node menyelesaikannya terlebih dahulu, node lainnya mendapat sinyal "kill" untuk tugas ini.

Kemungkinan lainnya adalah salah satu tugas pengurangan gagal di satu node dan berhasil dijalankan di node lain.

person vefthym    schedule 08.07.2014