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 - เตรียมการรวมของค่าตัวนับที่คล้ายกันเป็นหน่วยที่จัดการได้ขนาดเล็ก