เรื่อง เทคนิคการเขียนโปรแกรม Map/Reduce สำหรับการประมวลผลข้อมูลขนาดใหญ่ (ตอนที่ 5)
เทคนิควิธี Overlapping Map/Reduce
เทคนิควิธีของรูปแบบการเขียนโปรแกรม Hierarchical Map/Reduce [1] เกิดจากการทำงานของ Map/Reduce ทั่วไปที่สามารถทำการประมวลผลและการจัดตารางงานได้ภายใน Single Cluster ซึ่งอาจส่งผลให้ทำงานได้ไม่ดีพอในกรณีที่ต้องประมวลผลกับข้อมูลที่มีขนาดใหญ่ที่จะทำได้ภายใน Single Cluster แต่ปัญหานี้สามารถแก้ไขได้โดยการกำหนดการทำงาน Map/Reduce ลำดับชั้นที่จะสามารถทำการประมวลผลให้กับข้อมูลในรูปแบบ Multiple Cluster ให้สามารถทำการประมวลผลร่วมกันเหมือนอยู่ใน Cluster เดียวกัน
สำหรับการกำหนดฟังก์ชันการทำ Map/Reduce ลำดับชั้น จะประกอบไปด้วยการทำงานของ 3 ฟังค์ชัน ได้แก่ ฟังค์ชัน Map ฟังค์ชัน Reduce และ ฟังค์ชัน GlobalReduce ซึ่งเป็นฟังก์ชันที่เพิ่มขึ้นมา ฟังก์ชัน Map และ ฟังก์ชัน Reduce จะทำงานภายใน Cluster ของตัวเอง แต่ฟังก์ชัน GlobalReduce จะนำเอาผลลัพธ์ที่ได้จากการทำ Reduce ในแต่ละ Cluster มาทำการ Reduce อีกครั้ง จึงเป็นการรวบร่วมผลลัพธ์ที่อยู่ต่าง Cluster นั้นเอง สำหรับการกำหนดค่าคู่ Key/Value ของทั้ง 3 ฟังก์ชันสามารถทำได้ตามตารางที่ ซึ่งแสดงการกำหนดค่าคู่ Key/Value Input และ Output ให้กับฟังก์ชัน Map ฟังก์ชันReduce และฟังก์ชัน GlobalReduce
ตารางที่ 1 แสดงการกำหนดค่าคู่ Key/Value Input และ Output ให้กับฟังก์ชัน Map ฟังก์ชันReduce และฟังก์ชัน GlobalReduce
รูปที่ 1 HMR Data Flow
รูปภาพที่ 1 แสดงการไหลของข้อมูลภายใน 3 ฟังก์ชัน ได้แก่ฟังก์ชัน Map ฟังก์ชัน Reduce และ GlobalReduce ที่ถูกกำหนดให้ฟังก์ชันแต่ละฟังก์ชันสามารถประสานการทำงานภายในได้ดี [30] เมื่อข้อมูลและงานแต่ละงานถูกส่งมายังแต่ละ Local Map/Reduce cluster ให้ทำการประมวลผล และเมื่อ Local Sub-job ถูกทำเสร็จบน Local clusters แต่ละ clusters จะส่งข้อมูลเอาต์พุตกลับมาร่วมกันในหนึ่ง Cluster ซึ่งจะมีฟังก์ชัน Global Reduce ทำหน้าที่ดำเนินการในขั้นตอนสุดท้ายของการทำ MapReduce เว้นแต่ว่างานนั้นจะถูกกำหนดให้ทำ Map/Reduce ภายใน Cluster เดียว และในกรอบการทำงานนี้ยังได้นำวิธีการจัดตารางเวลาของงานหรือที่เรียกว่า Job Scheduling เพื่อนำมาใช้จัดตารางเวลาให้กับงานในแต่ละงานเมื่อมีชุดของข้อมูลและปริมาณงานที่มากขึ้น เป็นการลดปัญหาเรื่องของการเกิดคอขวด มีด้วยกัน 2 วิธี คือ
1. Compute Capacity Aware Scheduling (CCAS) : เป็นวิธีที่ใช้ในการคำนวณการจัดตารางเวลาการทำงานที่มีจุดมุ่งหมายในกรณีที่มีงานเป็นจำนวนมากเกิดขึ้น เพื่อจัดเวลาการทำงานให้เหมาะสม โดยปกติในชุดข้อมูลจะมีหลายข้อมูลถูกกระจายอยู่ในหลาย Clusters ดังนั้นจึงได้ทำการแบ่ง map ที่มีขนาดเท่ากันและเวลาในการรันแต่ Map ให้มีขนาดเท่ากัน
2. Data Location Aware Scheduling (DLAS) : เป็นวิธีการคำนวณการจัดตารางงานที่มีจุดประสงค์โดยพิจารณาจากกรณีสำหรับงานที่มีจำนวนข้อมูลภายในเกิดขึ้นมาก
รูปที่ 2 กรอบการทำ Map/Reduce ลำดับชั้น
รูปที่ 2 กรอบการทำ Map/Reduce ลำดับชั้นที่ถูกพัฒนาเพิ่มเติมต่อมาจากการทำ Map/Reduce ทั่วไปที่สามารถช่วยเพิ่มประสิทธิภาพให้เกิดการประมวลผลที่รวดเร็วบนข้อมูลขนาดใหญ่ โดยแยกการทำงานออกเป็นในระดับ Global ที่ควบคุมการทำงานทั้งหมดและระดับ Local ที่ประกอบไปด้วยแต่ละ Cluster
Layer ที่ 1 ในกรอบด้านบนสุด คือ Global Controller เมื่อมีการส่งข้อมูลจราจรทางคอมพิวเตอร์ที่ต้อการจัดเก็บให้กับ Global Controller หน่วย Job Scheduler จะทำหน้าที่จัดการกับข้อมูลและจัดตารางงานพร้อมทั้งมอบหมายงานให้แต่ละ Local Clusters โดยเมื่อ Map/Reduce Jobs ถูกส่งไปยัง HMR Framework ในแต่ละ Local Cluster จะถูกแบ่งงานออกเป็นส่วนย่อยภายในแต่ละ Cluster ส่วน Data Manager จะทำหน้าที่ถ่ายโอนข้อมูลในการทำ Map/Reduce Job ของข้อมูลอินพุตที่ถูกแบ่งไว้ก่อนหน้า ทั้งหมดจะถูกส่งไปยังแต่ละ Local Clusters ตามที่ได้กำหนดไว้ และ Workload Collector จะทำหน้าที่ควบคุมการกระจาย Workload ให้กับแต่ละ Local Clusters
Layer ที่ 2 ประกอบด้วยกลุ่มของหลาย Clusters ในแต่ละ Cluster จะมีโนด Map/Reduce Master และ Data Node เหมือนการทำงานโดยทั่วไปของกรอบการทำงานของ Hadoop Distributed File System แต่จะมีการเพิ่มในส่วนของ HMR Daemon ซึ่งจะมีหน้าที่รับผิดชอบการทำงาน โดยการรายงานปริมาณการกระจาย Workload และควบคุมการจัดตารางงานในการทำ Map/Reduce ภายในแต่ละ Local Cluster ที่ไม่สามารถถูกเข้าถึงได้จากการทำงานภายนอก
1. Yuan, L. and B. Plale. Hierarchical MapReduce Programming Model and Scheduling Algorithms. in Cluster, Cloud and Grid Computing (CCGrid), 2012 12th IEEE/ACM International Symposium on. 2012.
ดร. สุวรรณี ธูปจีน
อังคารที่ 6 กุมภาพันธ์ 2561
“ขอสงวนสิทธิ์ ข้อมูล เนื้อหา บทความ และรูปภาพ (ในส่วนที่ทำขึ้นเอง) ทั้งหมดที่ปรากฎอยู่ในเว็บไซต์ ห้ามมิให้บุคคลใด คัดลอก หรือ ทำสำเนา หรือ ดัดแปลง ข้อความหรือบทความใดๆ ของเว็บไซต์ หากผู้ใดละเมิด ไม่ว่าการลอกเลียน หรือนำส่วนหนึ่งส่วนใดของบทความนี้ไปใช้ ดัดแปลง เพื่อการพาณิชย์โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร จะถูกดำเนินคดี ตามที่กฎหมายบัญญัติไว้สูงสุด ในกรณีต้องการอ้างอิงเพื่อการศึกษา กรุณาให้เครดิตโดยอ้างอิงถึงผู้เรียบเรียงและบริษัทเจ้าของเว็บไซด์ด้วย”