MapReduce ใน Hadoop คืออะไร ข้อมูลใหญ่ Archiเทคเจอร์
MapReduce ใน Hadoop คืออะไร
แผนที่ลด เป็นเฟรมเวิร์กซอฟต์แวร์และโมเดลการเขียนโปรแกรมที่ใช้ในการประมวลผลข้อมูลจำนวนมหาศาล แผนที่ลด โปรแกรมทำงานใน 2 เฟส คือ Map และย่อ งานแผนที่จัดการกับการแยกและการแมปข้อมูลในขณะที่ลดงานสับเปลี่ยนและลดข้อมูล
Hadoop สามารถรันโปรแกรม MapReduce ที่เขียนด้วยภาษาต่างๆ ได้: Javaทับทิม Pythonและ C++โปรแกรม Map Reduce ในระบบคลาวด์คอมพิวติ้งมีลักษณะการทำงานแบบคู่ขนาน จึงมีประโยชน์อย่างมากสำหรับการดำเนินการวิเคราะห์ข้อมูลขนาดใหญ่โดยใช้เครื่องหลายเครื่องในคลัสเตอร์
อินพุตของแต่ละเฟสคือ คีย์ - ค่า คู่ นอกจากนี้ โปรแกรมเมอร์ทุกคนจำเป็นต้องระบุฟังก์ชัน 2 ประการ: ฟังก์ชั่นแผนที่ รวมถึง ลดฟังก์ชัน.
แผนที่ลด Archiการสอนใน Big Data อธิบายด้วยตัวอย่าง
กระบวนการทั้งหมดต้องผ่านการดำเนินการสี่ขั้นตอน ได้แก่ การแยก การทำแผนที่ การสับเปลี่ยน และการลดขนาด
ในบทช่วยสอน MapReduce นี้ มาทำความเข้าใจด้วยตัวอย่าง MapReduce–
พิจารณาว่าคุณมีข้อมูลอินพุตต่อไปนี้สำหรับ MapReduce ของคุณใน โปรแกรมข้อมูลขนาดใหญ่
Welcome to Hadoop Class Hadoop is good Hadoop is bad
ผลลัพธ์สุดท้ายของงาน MapReduce คือ
ไม่ดี | 1 |
ชั้น | 1 |
ดี | 1 |
Hadoop | 3 |
is | 2 |
ไปยัง | 1 |
ยินดีต้อนรับ | 1 |
ข้อมูลจะผ่านขั้นตอนต่อไปนี้ของ MapReduce ใน Big Data
อินพุตแยก:
อินพุตของ MapReduce ในงาน Big Data แบ่งออกเป็นชิ้นขนาดคงที่ที่เรียกว่า การแยกอินพุต การแยกอินพุตคือส่วนของอินพุตที่แผนที่เดียวใช้
การทำแผนที่
นี่คือขั้นตอนแรกสุดในการดำเนินการโปรแกรม map-reduce ในขั้นตอนนี้ ข้อมูลในแต่ละสปลิทจะถูกส่งไปยังฟังก์ชันแมปปิ้งเพื่อสร้างค่าเอาต์พุต ในตัวอย่างของเรา งานของเฟสแมปปิ้งคือการนับจำนวนการเกิดขึ้นของแต่ละคำจากสปลิทอินพุต (รายละเอียดเพิ่มเติมเกี่ยวกับสปลิทอินพุตจะระบุไว้ด้านล่าง) และเตรียมรายการในรูปแบบ
สับ
เฟสนี้ใช้เอาต์พุตของเฟสการแมป หน้าที่ของมันคือการรวมเรกคอร์ดที่เกี่ยวข้องจากเอาต์พุตเฟสการแม็ป ในตัวอย่างของเรา คำเดียวกันจะถูกรวมเข้าด้วยกันพร้อมกับความถี่ตามลำดับ
ลด
ในขั้นตอนนี้ ค่าเอาต์พุตจากขั้นตอน Shuffling จะถูกรวบรวมเข้าด้วยกัน ในขั้นตอนนี้จะรวมค่าจากขั้นตอน Shuffling และส่งคืนค่าเอาต์พุตเพียงค่าเดียว กล่าวโดยย่อ ในขั้นตอนนี้จะสรุปชุดข้อมูลทั้งหมด
ในตัวอย่างของเรา ระยะนี้จะรวมค่าจากระยะสับเปลี่ยน เช่น คำนวณจำนวนครั้งทั้งหมดของแต่ละคำ
แผนที่ลด Architecture อธิบายอย่างละเอียด
- งานแผนที่หนึ่งงานจะถูกสร้างขึ้นสำหรับแต่ละการแยก ซึ่งจะเรียกใช้ฟังก์ชันแผนที่สำหรับแต่ละบันทึกในการแบ่ง
- การมีการแยกหลายรายการจะเป็นประโยชน์เสมอ เนื่องจากเวลาที่ใช้ในการประมวลผลการแยกจะมีน้อยเมื่อเทียบกับเวลาที่ใช้ในการประมวลผลอินพุตทั้งหมด เมื่อการแยกมีขนาดเล็กลง การประมวลผลจะดีกว่าในการโหลดแบบสมดุล เนื่องจากเรากำลังประมวลผลการแยกแบบขนาน
- อย่างไรก็ตาม ก็ไม่พึงปรารถนาที่จะแยกขนาดให้เล็กเกินไป เมื่อการแยกมีขนาดเล็กเกินไป การจัดการการแยกและการสร้างงานแผนที่ที่มากเกินไปจะเริ่มครอบงำเวลาปฏิบัติงานทั้งหมด
- สำหรับงานส่วนใหญ่ ควรแยกขนาดให้เท่ากับขนาดของบล็อก HDFS (ซึ่งก็คือ 64 MB ตามค่าเริ่มต้น)
- การดำเนินการงานแผนที่ส่งผลให้เกิดการเขียนเอาต์พุตไปยังดิสก์ภายในเครื่องบนโหนดที่เกี่ยวข้อง ไม่ใช่ไปยัง HDFS
- เหตุผลในการเลือกใช้ดิสก์ภายในเครื่องแทน HDFS คือ เพื่อหลีกเลี่ยงการจำลองข้อมูลที่เกิดขึ้นในกรณีของการดำเนินการจัดเก็บ HDFS
- เอาต์พุตแผนที่เป็นเอาต์พุตระดับกลางซึ่งถูกประมวลผลโดยลดงานเพื่อสร้างเอาต์พุตสุดท้าย
- เมื่องานเสร็จสมบูรณ์ เอาต์พุตแผนที่จะถูกโยนทิ้งไป ดังนั้นการจัดเก็บไว้ใน HDFS พร้อมการจำลองแบบจึงเกินความจำเป็น
- ในกรณีที่โหนดล้มเหลว ก่อนที่งานลดจะใช้เอาท์พุตแผนที่ Hadoop จะรันงานแมปบนโหนดอื่นอีกครั้ง และสร้างเอาท์พุตแมปขึ้นใหม่
- งานลดไม่ทำงานบนแนวคิดของพื้นที่ข้อมูล ผลลัพธ์ของงานแผนที่ทุกงานจะถูกป้อนไปยังงานลด เอาต์พุตแผนที่จะถูกถ่ายโอนไปยังเครื่องที่กำลังรันการลดงานอยู่
- บนเครื่องนี้ เอาต์พุตจะถูกรวมเข้าด้วยกัน แล้วส่งต่อไปยังฟังก์ชันลดขนาดที่ผู้ใช้กำหนด
- ต่างจากเอาต์พุตแผนที่ เอาต์พุตลดจะถูกจัดเก็บไว้ เอชดีเอฟเอส (เรพลิกาแรกจะถูกจัดเก็บไว้ในโหนดภายในเครื่อง และเรพลิกาอื่นๆ จะถูกจัดเก็บไว้ในโหนดนอกแร็ค) ดังนั้นการเขียนลดเอาต์พุต
การจัดระเบียบ MapReduce ทำงานอย่างไร
ในบทช่วยสอน MapReduce นี้ เราจะได้เรียนรู้วิธีการทำงานของ MapReduce
Hadoop แบ่งงานออกเป็นงาน งานมีสองประเภท:
- งานแผนที่ (การแยกและการทำแผนที่)
- ลดภาระงาน (สับเปลี่ยนลด)
ดังกล่าวข้างต้น
กระบวนการดำเนินการที่สมบูรณ์ (การดำเนินการของงานแผนที่และงานลดทั้งคู่) ถูกควบคุมโดยเอนทิตีสองประเภทที่เรียกว่าก
- ติดตามงาน: ทำตัวเหมือนก เจ้านาย (รับผิดชอบการดำเนินงานที่ส่งให้เสร็จสมบูรณ์)
- ตัวติดตามงานหลายตัว: ทำตัวเหมือน. ทาส แต่ละคนปฏิบัติงาน
สำหรับทุกงานที่ส่งเข้ามาเพื่อดำเนินการในระบบจะมีหนึ่งงาน ติดตามงาน ที่อาศัยอยู่ ชื่อโหนด และมี ตัวติดตามงานหลายตัว ซึ่งอาศัยอยู่ ดาต้าโหนด.
- งานจะถูกแบ่งออกเป็นหลายงานซึ่งจะถูกเรียกใช้บนโหนดข้อมูลหลายโหนดในคลัสเตอร์
- เป็นความรับผิดชอบของตัวติดตามงานในการประสานงานกิจกรรมโดยกำหนดเวลางานให้ทำงานบนโหนดข้อมูลที่แตกต่างกัน
- การดำเนินการแต่ละงานจะต้องดูแลโดยตัวติดตามงาน ซึ่งอยู่ในทุกโหนดข้อมูลที่กำลังดำเนินการส่วนหนึ่งของงาน
- ความรับผิดชอบของตัวติดตามงานคือการส่งรายงานความคืบหน้าไปยังตัวติดตามงาน
- นอกจากนี้ ตัวติดตามงานจะส่งเป็นระยะๆ 'การเต้นของหัวใจ' ส่งสัญญาณไปยัง Jobtracker เพื่อแจ้งให้ทราบถึงสถานะปัจจุบันของระบบ
- ดังนั้นตัวติดตามงานจะติดตามความคืบหน้าโดยรวมของแต่ละงาน ในกรณีที่งานล้มเหลว ตัวติดตามงานสามารถจัดกำหนดการใหม่ในตัวติดตามงานอื่นได้