เหตุใดจำนวนตัวลดจึงมากกว่าที่ฉันระบุไว้ใน Hadoop

นี่คือผลลัพธ์บนคอนโซลของงาน MR ของฉัน งานสำเร็จลุล่วงไปด้วยดี แต่ฉันมีสองข้อกังวล

1) ฉันระบุ -D mapred.reduce.slowstart.completed.maps=0.75 อย่างไรก็ตามตัวลดไม่เริ่มทำงานเมื่อแผนที่เสร็จสิ้น 75% ดังที่แสดงด้านล่าง

2) ฉันระบุ -D mapred.reduce.tasks=2 แต่จำนวนงานตัวลดที่เปิดใช้งานคือ 3 (ดังที่แสดงด้านล่าง)

เหตุใดพารามิเตอร์ทั้งสองนี้จึงไม่ได้รับการดูแล

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

แก้ไข: ไม่มีพารามิเตอร์ใด ๆ บนบรรทัดคำสั่ง:

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 แหล่งที่มา
comment
ตรวจสอบให้แน่ใจว่าคุณสะกดคำว่า -Dproperty=value (โดยไม่มีช่องว่าง) หรือ -Dproperty value (มีช่องว่างหนึ่งช่อง) ไม่เช่นนั้นอาจมีการแยกวิเคราะห์ผิด   -  person rVr    schedule 07.07.2014
comment
@rVr: โดยไม่ได้ระบุว่าฉันเห็นว่าตัวลดของฉันคือ 1 ดังนั้นการตั้งค่าจึงเปลี่ยนแปลงไปจริงๆ   -  person brain storm    schedule 07.07.2014
comment
ดูเหมือนว่าคุณกำลังใช้ตัวรวมซึ่งอาจถูกเรียกโดยเฟรมเวิร์กหรือไม่ก็ได้ คุณสามารถวางงานพิมพ์แบบเต็มโดยมีและไม่มีการตั้งค่า mapred.reduce.tasks=2 ได้หรือไม่   -  person rVr    schedule 07.07.2014
comment
@rVr: ฉันได้อัปเดตด้านบนแล้ว   -  person brain storm    schedule 08.07.2014
comment
สิ่งหนึ่งที่แน่นอนก็คือความคืบหน้าในการลดผลลัพธ์ของงานไม่รวมถึงขั้นตอนการสับเปลี่ยน ขั้นตอนการลดมี 3 ขั้นตอน: สุ่ม, เรียงลำดับ, ลด การสับเปลี่ยนคือที่ที่ตัวลดข้อมูลถูกรวบรวมจากผู้ทำแผนที่แต่ละคน สิ่งที่คุณถามโดยการระบุ mapred.reduce.slowstart.completed.maps=0.75 นั้นมีไว้สำหรับตัวลดเพื่อเริ่มสับข้อมูลเมื่อ 75% ของงานแผนที่เสร็จสิ้น มันยังคงไม่เริ่มเรียงลำดับและลดเฟสของตัวลด (ซึ่งเริ่มหลังจากงานแผนที่เสร็จ 100% เท่านั้น) นั่นจะเป็นความเข้าใจของฉันสำหรับคำถามของคุณ 1   -  person rVr    schedule 08.07.2014
comment
คุณใช้ Hadoop ในโหมดใด คุณสามารถตรวจสอบอินเทอร์เฟซ GUI ตัวติดตามงานเพื่อยืนยันจำนวนงานที่มีการใช้น้อยลงได้หรือไม่   -  person rVr    schedule 08.07.2014
comment
@rVr: ฉันก็คิดแบบเดียวกัน แต่ขั้นตอนการเรียงลำดับเสร็จสิ้นก่อนสับเปลี่ยน นั่นคือข้อมูลจะถูกจัดเรียง/แบ่งพาร์ติชัน และในที่สุดก็สับเปลี่ยนผ่านเครือข่ายไปยังโหนดข้อมูลต่างๆ ขั้นตอนการเรียงลำดับเป็นขั้นตอนการผสานมากกว่า เมื่อผู้ทำแผนที่สร้างคู่คีย์กลาง ค่า ก่อนที่จะคงอยู่บนดิสก์ มันจะถูกแบ่งพาร์ติชัน (เรียงลำดับ) สำหรับตัวลดขนาด (นี่คือความเข้าใจของฉันจาก hadoop: หนังสือแนะนำขั้นสุดท้าย)   -  person brain storm    schedule 08.07.2014
comment
@rVr: แต่ทำไมจำนวนตัวลดจึงเป็น 3 แทนที่จะเป็น 2 ??   -  person brain storm    schedule 08.07.2014


คำตอบ (1)


1) ฉันระบุ -D mapred.reduce.slowstart.completed.maps=0.75 อย่างไรก็ตามตัวลดไม่เริ่มทำงานเมื่อแผนที่เสร็จสิ้น 75% ดังที่แสดงด้านล่าง

ความคืบหน้าของแผนที่ 75% ไม่ได้หมายความว่างานแผนที่ 75% เสร็จสิ้นแล้วเสมอไป ความหมายของคำสั่งนี้ก็คือ เมื่อ 75% (งานแผนที่ 3 งานจาก 4 ในกรณีของคุณ) เสร็จสมบูรณ์ ตัวลดขนาดจะเริ่มขั้นตอนการสับเปลี่ยน ดูโพสต์นี้สำหรับ รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการกำหนดความคืบหน้า

2) ฉันระบุ -D mapred.reduce.tasks=2 แต่จำนวนงานตัวลดที่เปิดใช้งานคือ 3 (ดังที่แสดงด้านล่าง)

งานการลดแบบเดียวกันอาจถูกเปิดใช้งานบนหลายโหนด (ซึ่งเรียกว่า "การดำเนินการเชิงคาดเดา"). เมื่อโหนดใดโหนดหนึ่งดำเนินการเสร็จสิ้นก่อน โหนดอื่นจะได้รับสัญญาณ "หยุดการทำงาน" สำหรับงานนี้

ความเป็นไปได้อีกอย่างหนึ่งคืองานการลดรายการใดรายการหนึ่งล้มเหลวในโหนดหนึ่งและดำเนินการได้สำเร็จในอีกโหนดหนึ่ง

person vefthym    schedule 08.07.2014