MapReduce เบี่ยงเบนจากการแบ่งและพิชิตระบบส่วนใหญ่ในลักษณะพื้นฐานที่ค่อนข้างเป็นธรรม แต่สิ่งหนึ่งที่เรียบง่ายจนหลายคนเกือบคิดถึงมัน อัจฉริยะที่แท้จริงของมันคือการติดแท็กผลลัพธ์ระดับกลาง
ในระบบทั่วไป (ก่อนหน้านี้) แบ่งและพิชิตระบบคุณแบ่งงานตามลำดับดำเนินการแพ็กเก็ตงานแบบขนานแล้วรวมผลลัพธ์จากงานนั้นเข้าด้วยกันอีกครั้ง
ใน MapReduce คุณแบ่งการทำงานตามลำดับดำเนินการแพ็กเก็ตงานแบบขนานและติดแท็กผลลัพธ์เพื่อระบุผลลัพธ์ที่จะไปพร้อมกับผลลัพธ์อื่น จากนั้นการรวมจะเป็นอนุกรมสำหรับผลลัพธ์ทั้งหมดที่มีแท็กเดียวกัน แต่สามารถดำเนินการแบบขนานสำหรับผลลัพธ์ที่มีแท็กต่างกัน
ในระบบก่อนหน้าส่วนใหญ่ขั้นตอนการผสานกลายเป็นปัญหาคอขวดสำหรับทุกคน แต่เป็นงานที่ไม่สำคัญอย่างแท้จริง ด้วย MapReduce มันสามารถยังคงเป็นถ้าลักษณะของงานที่กำหนดว่าการควบรวมทั้งหมดทำได้ลำดับ อย่างไรก็ตามหากงานอนุญาตให้มีการผสานผลลัพธ์ในระดับหนึ่งได้ MapReduce ให้วิธีที่ง่ายในการใช้ประโยชน์จากความเป็นไปได้นั้น ระบบอื่นส่วนใหญ่ทำหนึ่งในสองสิ่ง: ดำเนินการผสานทั้งหมดแบบลำดับเพียงเพราะอาจจำเป็นสำหรับงานบางงานหรือมิฉะนั้นจะกำหนดการผสานแบบขนานสำหรับงานเฉพาะ MapReduce ช่วยให้คุณมีข้อมูลเพียงพอในขั้นตอนการรวมเพื่อกำหนดตารางเวลาให้ขนานโดยอัตโนมัติให้มากที่สุดในขณะที่ยังคงมั่นใจ
โปรดทราบว่าใน MapReduce เป็นนัยที่ว่าทุกขั้นตอนสามารถเรียกซ้ำได้ดังนั้นฉันอาจมีขั้นตอนการแมปเริ่มต้นที่แบ่งงานใหญ่ออกเป็น 5 งานเล็ก ๆ ที่สามารถดำเนินการแบบคู่ขนาน - แต่แต่ละขั้นตอนอาจ (ใน เทิร์น) รับการแม็พกับงานขนานอื่น ๆ ที่มีขนาดเล็กกว่าและอื่น ๆ
สิ่งนี้นำไปสู่โครงสร้างต้นไม้ทั้งในการทำแผนที่และด้านการลดขนาดเพื่อแบ่งงานใหญ่ออกเป็นชิ้นเล็กชิ้นน้อยอย่างรวดเร็วเพื่อใช้ประโยชน์จากเครื่องจักรจำนวนมาก