ไม่กี่ปีที่ผ่านมาMapReduceได้รับการยกย่องว่าเป็นการปฏิวัติการเขียนโปรแกรมแบบกระจาย นอกจากนี้ยังมีนักวิจารณ์แต่โดยมากแล้วก็มีโฆษณาที่กระตือรือร้น มันยังจดสิทธิบัตร! [1]
ชื่อนี้เป็นที่ระลึกถึงmap
และreduce
ในการเขียนโปรแกรมการทำงาน แต่เมื่อฉันอ่าน (Wikipedia)
ขั้นตอนแผนที่:โหนดหลักจะรับอินพุตแบ่งเป็นปัญหาย่อยที่เล็กกว่าและกระจายไปยังโหนดผู้ปฏิบัติงาน โหนดผู้ปฏิบัติงานอาจทำสิ่งนี้อีกครั้งในทางกลับนำไปสู่โครงสร้างต้นไม้หลายระดับ โหนดผู้ปฏิบัติงานประมวลผลปัญหาที่เล็กกว่าและส่งคำตอบกลับไปที่โหนดหลัก
ลดขั้นตอน:โหนดหลักจะรวบรวมคำตอบสำหรับปัญหาย่อยทั้งหมดและรวมเข้าด้วยกันในรูปแบบเอาต์พุตบางส่วน - คำตอบสำหรับปัญหาที่พยายามแก้ไขในขั้นต้น
หรือ [2]
Internals of MAP: [... ] MAP แยกค่าอินพุตเป็นคำ [... ] MAP หมายถึงการเชื่อมโยงคู่คีย์ / ค่าที่กำหนดของอินพุตกับคู่กลางคีย์ / ค่าที่อาจเกิดขึ้น
Internals of REDUCE: [... ] [REDUCE] ดำเนินการรวมที่จำเป็น (พูดลด): รับค่าจำนวนมากและลดลงเป็นค่าเดียว
ฉันไม่สามารถช่วย แต่คิดว่า: นี่คือการแบ่ง & พิชิต (ในแง่ของการควบรวมกิจการ) ธรรมดาและเรียบง่าย! ดังนั้นมีความแปลกใหม่ (แนวคิด) ใน MapReduce ที่ไหนสักแห่งหรือเป็นเพียงการดำเนินการใหม่ของความคิดเก่าที่มีประโยชน์ในบางสถานการณ์?