MapReduce - บทนำ
MapReduce เป็นรูปแบบการเขียนโปรแกรมสำหรับเขียนแอปพลิเคชันที่สามารถประมวลผล Big Data ควบคู่กันบนโหนดหลาย ๆ โหนด MapReduce ให้ความสามารถในการวิเคราะห์สำหรับการวิเคราะห์ข้อมูลที่ซับซ้อนจำนวนมหาศาล
Big Data คืออะไร?
Big Data คือชุดข้อมูลขนาดใหญ่ที่ไม่สามารถประมวลผลโดยใช้เทคนิคการคำนวณแบบเดิมได้ ตัวอย่างเช่นปริมาณข้อมูลที่ Facebook หรือ Youtube จำเป็นต้องใช้ในการรวบรวมและจัดการในแต่ละวันอาจอยู่ในหมวดของ Big Data อย่างไรก็ตามข้อมูลขนาดใหญ่ไม่เพียง แต่เกี่ยวกับขนาดและปริมาตรเท่านั้น แต่ยังเกี่ยวข้องกับด้านใดด้านหนึ่งต่อไปนี้ด้วยเช่นความเร็วความหลากหลายปริมาณและความซับซ้อน
ทำไมต้อง MapReduce?
โดยปกติ Enterprise Systems แบบดั้งเดิมจะมีเซิร์ฟเวอร์ส่วนกลางเพื่อจัดเก็บและประมวลผลข้อมูล ภาพประกอบต่อไปนี้แสดงให้เห็นถึงมุมมองแผนผังของระบบองค์กรแบบดั้งเดิม แบบจำลองดั้งเดิมไม่เหมาะสมอย่างแน่นอนในการประมวลผลข้อมูลจำนวนมากที่ปรับขนาดได้และเซิร์ฟเวอร์ฐานข้อมูลมาตรฐานไม่สามารถรองรับได้ ยิ่งไปกว่านั้นระบบรวมศูนย์จะสร้างคอขวดมากเกินไปในขณะที่ประมวลผลไฟล์หลายไฟล์พร้อมกัน
Google แก้ไขปัญหาคอขวดนี้โดยใช้อัลกอริทึมที่เรียกว่า MapReduce MapReduce แบ่งงานออกเป็นส่วนเล็ก ๆ และกำหนดให้กับคอมพิวเตอร์หลายเครื่อง หลังจากนั้นผลลัพธ์จะถูกรวบรวมไว้ในที่เดียวและรวมเข้าด้วยกันเพื่อสร้างชุดข้อมูลผลลัพธ์
MapReduce ทำงานอย่างไร
อัลกอริทึม MapReduce ประกอบด้วยสองงานที่สำคัญ ได้แก่ แผนที่และลด
งานแผนที่รับชุดข้อมูลและแปลงเป็นชุดข้อมูลอื่นโดยที่องค์ประกอบแต่ละรายการจะแบ่งออกเป็นสิ่งที่รวมกัน (คู่คีย์ - ค่า)
งานลดจะใช้เอาต์พุตจากแผนที่เป็นอินพุตและรวมสิ่งที่มีข้อมูลเหล่านั้น (คู่คีย์ - ค่า) เข้ากับทูเปิลชุดเล็ก ๆ
งานลดจะดำเนินการหลังงานแผนที่เสมอ
ตอนนี้ให้เราดูแต่ละขั้นตอนอย่างละเอียดและพยายามทำความเข้าใจความสำคัญของพวกเขา
Input Phase - ที่นี่เรามี Record Reader ที่แปลแต่ละระเบียนในไฟล์อินพุตและส่งข้อมูลที่แยกวิเคราะห์ไปยังผู้ทำแผนที่ในรูปแบบของคู่คีย์ - ค่า
Map - แผนที่เป็นฟังก์ชันที่ผู้ใช้กำหนดเองซึ่งรับชุดของคู่คีย์ - ค่าและประมวลผลแต่ละคู่เพื่อสร้างคู่คีย์ - ค่าที่เป็นศูนย์หรือมากกว่า
Intermediate Keys - คู่คีย์ - ค่าที่สร้างโดยผู้ทำแผนที่เรียกว่าคีย์กลาง
Combiner- Combiner เป็นประเภทของ Reducer ในพื้นที่ที่จัดกลุ่มข้อมูลที่คล้ายกันจากเฟสแผนที่เป็นชุดที่ระบุได้ ใช้คีย์กลางจากผู้ทำแผนที่เป็นอินพุตและใช้โค้ดที่ผู้ใช้กำหนดเพื่อรวมค่าในขอบเขตเล็ก ๆ ของผู้ทำแผนที่เดียว ไม่ได้เป็นส่วนหนึ่งของอัลกอริทึม MapReduce หลัก เป็นทางเลือก
Shuffle and Sort- งาน Reducer เริ่มต้นด้วยขั้นตอนสุ่มและเรียงลำดับ จะดาวน์โหลดคู่คีย์ - ค่าที่จัดกลุ่มไว้บนเครื่องโลคัลซึ่งตัวลดกำลังทำงานอยู่ คู่คีย์ - ค่าแต่ละคู่จะเรียงตามคีย์ลงในรายการข้อมูลที่ใหญ่ขึ้น รายการข้อมูลจะจัดกลุ่มคีย์ที่เทียบเท่าเข้าด้วยกันเพื่อให้สามารถวนซ้ำค่าได้อย่างง่ายดายในงาน Reducer
Reducer- ตัวลดจะรับข้อมูลที่จับคู่คีย์ - ค่าที่จัดกลุ่มไว้เป็นอินพุตและเรียกใช้ฟังก์ชันลดสำหรับแต่ละรายการ ที่นี่ข้อมูลสามารถรวมกรองและรวมกันได้หลายวิธีและต้องใช้การประมวลผลที่หลากหลาย เมื่อการดำเนินการสิ้นสุดลงจะให้คู่คีย์ - ค่าเป็นศูนย์หรือมากกว่าในขั้นตอนสุดท้าย
Output Phase - ในเฟสเอาต์พุตเรามีตัวจัดรูปแบบเอาต์พุตที่แปลคู่คีย์ - ค่าสุดท้ายจากฟังก์ชัน Reducer และเขียนลงในไฟล์โดยใช้เครื่องบันทึก
ให้เราพยายามทำความเข้าใจทั้งสองงาน Map & f ลดด้วยความช่วยเหลือของแผนภาพขนาดเล็ก -
MapReduce- ตัวอย่าง
ให้เราใช้ตัวอย่างในโลกแห่งความเป็นจริงเพื่อทำความเข้าใจพลังของ MapReduce Twitter ได้รับประมาณ 500 ล้านทวีตต่อวันซึ่งเกือบ 3000 ทวีตต่อวินาที ภาพประกอบต่อไปนี้แสดงให้เห็นว่าทวีตเตอร์จัดการทวีตด้วยความช่วยเหลือของ MapReduce อย่างไร
ดังที่แสดงในภาพประกอบอัลกอริทึม MapReduce ดำเนินการดังต่อไปนี้ -
Tokenize - แปลงทวีตลงในแผนที่ของโทเค็นและเขียนเป็นคู่คีย์ - ค่า
Filter - กรองคำที่ไม่ต้องการจากแผนที่ของโทเค็นและเขียนแผนที่ที่กรองแล้วเป็นคู่คีย์ - ค่า
Count - สร้างตัวนับโทเค็นต่อคำ
Aggregate Counters - เตรียมการรวมของค่าตัวนับที่คล้ายกันเป็นหน่วยที่จัดการได้ขนาดเล็ก