Apache Spark กับ Hadoop Mapreduce – สิ่งที่คุณต้องรู้

เผยแพร่แล้ว: 2019-09-05

Big Data เปรียบเสมือน Big Brother อยู่ทั่วไปทุกหนทุกแห่งในโลกสมัยใหม่ กรณีการใช้งาน Big Data ที่เพิ่มมากขึ้นในอุตสาหกรรมต่างๆ ได้ก่อให้เกิดเทคโนโลยี Big Data มากมาย ซึ่ง Hadoop MapReduce และ Apache Spark ได้รับความนิยมมากที่สุด แม้ว่า MapReduce และ Spark เป็นโครงการโอเพ่นซอร์สที่พัฒนาโดย Apache Software Foundation แต่ก็เป็นคู่แข่งที่แข็งแกร่งที่สุดของกันและกัน

ในโพสต์นี้ อันดับแรก เราจะพูดถึงเฟรมเวิร์ก MapReduce และ Spark จากนั้นเราจะพูดถึงความแตกต่างที่สำคัญระหว่างกัน

Spark & ​​MapReduce คืออะไร?

Spark เป็นเฟรมเวิร์ก Big Data ที่ออกแบบมาเป็นพิเศษเพื่อให้สามารถคำนวณได้อย่างรวดเร็ว มันทำหน้าที่เป็นเครื่องมือประมวลผลข้อมูลทั่วไปที่สามารถจัดการกับปริมาณงานที่แตกต่างกัน รวมถึงแบทช์ การโต้ตอบ การวนซ้ำ และการสตรีม คุณสมบัติหลักของ Spark คือความเร็ว - มันดำเนินการคำนวณในหน่วยความจำเพื่อเพิ่มความเร็วของการประมวลผลข้อมูล ด้วยเหตุนี้ มันจึงทำงานได้ดีบนคลัสเตอร์ของโหนดคอมพิวเตอร์และช่วยให้ประมวลผลชุดข้อมูลขนาดใหญ่ได้เร็วขึ้น

Resilient Distributed Dataset (RDD) เป็นโครงสร้างข้อมูลหลักของ Spark RDD คือคอลเล็กชันของอ็อบเจ็กต์แบบกระจายที่ไม่เปลี่ยนรูปแบบ โดยที่แต่ละโหนดถูกแบ่งออกเป็นชิ้นเล็กๆ ที่สามารถคำนวณได้บนโหนดต่างๆ ของคลัสเตอร์ สิ่งนี้อำนวยความสะดวกในการประมวลผลข้อมูลอิสระภายในคลัสเตอร์

MapReduce เป็นเฟรมเวิร์กโอเพ่นซอร์สที่ออกแบบมาสำหรับการประมวลผลข้อมูลจำนวนมากในสภาพแวดล้อมแบบคู่ขนานและแบบกระจาย มันสามารถประมวลผลข้อมูลในโหมดแบทช์เท่านั้น Hadoop MapReduce มีองค์ประกอบหลักสองอย่างคือ HDFS และ YARN

การเขียนโปรแกรม MapReduce ประกอบด้วยสองส่วน - Mapper และ Reducer ในขณะที่ Mapper จัดการงานของการเรียงลำดับข้อมูล Reducer จะรวมข้อมูลที่เรียงลำดับแล้วแปลงเป็นแฟรกเมนต์ที่มีขนาดเล็กลง

สำหรับความแตกต่างพื้นฐานระหว่างเฟรมเวิร์กทั้งสองนี้เป็นแนวทางโดยกำเนิดในการประมวลผลข้อมูล ในขณะที่ MapReduce ประมวลผลข้อมูลโดยการอ่านและเขียนบนดิสก์ Spark สามารถทำได้ในหน่วยความจำ ดังนั้น Spark จึงได้เปรียบเหนือ MapReduce ซึ่งเป็นการประมวลผลที่รวดเร็ว

แต่นั่นหมายความว่า Spark ดีกว่า MapReduce หรือไม่ น่าเสียดายที่การอภิปรายไม่ง่ายอย่างนั้น เพื่อให้กระจ่างขึ้นในประเด็นนี้ เราจะแจกแจงความแตกต่างระหว่างกันทีละจุด

การประมวลผลข้อมูล

Spark : ดังที่เราได้กล่าวไว้ก่อนหน้านี้ Spark เป็นเฟรมเวิร์กการประมวลผลแบบไฮบริดและใช้งานทั่วไปมากกว่า ด้วยการคำนวณในหน่วยความจำและการเพิ่มประสิทธิภาพการประมวลผล มันเร่งความเร็วในการประมวลผลข้อมูลในแบบเรียลไทม์ เหมาะอย่างยิ่งสำหรับการสตรีมปริมาณงาน การเรียกใช้การสืบค้นแบบโต้ตอบ และอัลกอริธึม ML อย่างไรก็ตาม RDD อนุญาตให้ Spark จัดเก็บข้อมูลบนดิสก์ชั่วคราวโดยการเขียนเฉพาะข้อมูลสำคัญบนดิสก์เท่านั้น ดังนั้นจึงโหลดกระบวนการในหน่วยความจำและเก็บไว้ในแคช สิ่งนี้ทำให้ Spark ค่อนข้างเน้นหน่วยความจำมาก

MapReduce : MapReduce เป็นเอ็นจิ้นการประมวลผลแบทช์ดั้งเดิมของ Hadoop ส่วนประกอบ (HDFS และ YARN) ช่วยให้ประมวลผลข้อมูลแบทช์ได้ราบรื่นยิ่งขึ้น อย่างไรก็ตาม เนื่องจากการประมวลผลข้อมูลเกิดขึ้นในหลายขั้นตอนต่อมา กระบวนการจึงค่อนข้างช้า ข้อได้เปรียบของ MapReduce คือช่วยให้มีการจัดเก็บถาวร – เก็บข้อมูลบนดิสก์ ทำให้เหมาะสำหรับการจัดการชุดข้อมูลขนาดใหญ่ ทันทีที่งานเสร็จสิ้น MapReduce จะฆ่ากระบวนการของมัน ดังนั้นจึงสามารถทำงานพร้อมกันกับบริการอื่นๆ ได้

สะดวกในการใช้

Spark : เมื่อพูดถึงเรื่องความง่ายในการใช้งาน Spark ได้ครอบครองมงกุฎ มันมาพร้อมกับ API ที่ใช้งานง่ายมากมายสำหรับ Scala (ภาษาแม่), Java, Python และ Spark SQL เนื่องจาก Spark อนุญาตให้สตรีม การประมวลผลเป็นชุด และการเรียนรู้ของเครื่องในคลัสเตอร์เดียวกัน คุณจึงลดความซับซ้อนของโครงสร้างพื้นฐานการประมวลผลข้อมูลได้ตามความต้องการของคุณ นอกจากนี้ Spark ยังรวมโหมด REPL (การอ่าน–eval–print loop) แบบโต้ตอบสำหรับการรันคำสั่งที่ให้ข้อเสนอแนะแก่ผู้ใช้ทันที

MapReduce : เนื่องจาก Hadoop MapReduce เขียนด้วยภาษาจาวา จึงต้องใช้เวลาเรียนรู้ไวยากรณ์ ดังนั้น ในตอนแรก หลายคนอาจพบว่าการเขียนโปรแกรมค่อนข้างยาก แม้ว่า MapReduce จะขาดโหมดโต้ตอบ แต่เครื่องมืออย่าง Pig and Hive ทำให้การทำงานง่ายขึ้นเล็กน้อย มีเครื่องมืออื่นๆ (เช่น Xplenty) เช่นกันที่สามารถเรียกใช้งาน MapReduce โดยไม่ต้องเขียนโปรแกรมใดๆ

ค่าเผื่อความผิดพลาด

Spark : Spark ใช้ RDD และรูปแบบการจัดเก็บข้อมูลที่แตกต่างกันสำหรับความทนทานต่อข้อผิดพลาดโดยการลด I/O ของเครือข่าย หากพาร์ติชั่น RDD สูญหาย RDD จะสร้างพาร์ติชั่นนั้นขึ้นมาใหม่จากข้อมูลที่เก็บไว้ในหน่วยความจำ ดังนั้น หากกระบวนการเกิดขัดข้องระหว่างทาง Spark จะต้องเริ่มประมวลผลตั้งแต่ต้น

MapReduce : MapReduce ต่างจาก Spark ตรงที่ MapReduce ใช้แนวคิดการจำลองแบบสำหรับความทนทานต่อความผิดพลาดผ่าน Node Manager และ ResourceManager ที่นี่ หากกระบวนการล้มเหลวในการดำเนินการระหว่างทาง MapReduce จะดำเนินการต่อจากที่ค้างไว้ ซึ่งจะช่วยประหยัดเวลา

ความปลอดภัย

จุดประกาย : เนื่องจาก Spark ยังอยู่ในช่วงเริ่มต้น ปัจจัยด้านความปลอดภัยจึงไม่ได้รับการพัฒนาอย่างมาก รองรับการตรวจสอบสิทธิ์ผ่านแผ่นข้อมูลลับที่ใช้ร่วมกัน (การตรวจสอบรหัสผ่าน) สำหรับเว็บ UI นั้นสามารถป้องกันได้ผ่านตัวกรองเซิร์ฟเล็ต javax ฟีเจอร์ YARN และ HDFS ของ Spark อนุญาตการพิสูจน์ตัวตน Kerberos, การอนุญาตระดับไฟล์ HDFS และการเข้ารหัสระหว่างโหนด

MapReduce : MapReduce ได้รับการพัฒนามากกว่ามาก ดังนั้นจึงมีคุณสมบัติด้านความปลอดภัยที่ดีกว่า Spark มันสนุกกับความปลอดภัยทั้งหมดของ Hadoop และสามารถรวมเข้ากับโปรเจ็กต์การรักษาความปลอดภัย Hadoop ได้ ซึ่งรวมถึง Knox Gateway และ Sentry องค์กรสามารถใช้ Active Directory Kerberos และ LDAP ในการตรวจสอบสิทธิ์ผ่านผู้ให้บริการบุคคลที่สามที่ถูกต้องได้

ค่าใช้จ่าย

แม้ว่าทั้ง Spark และ MapReduce จะเป็นโครงการโอเพนซอร์ซ แต่ก็มีต้นทุนบางอย่างที่คุณต้องเสียค่าใช้จ่ายสำหรับทั้งสองโครงการ ตัวอย่างเช่น Spark ต้องการ RAM จำนวนมากเพื่อรันงานในหน่วยความจำ และ RAM นั้นมีราคาสูงกว่าฮาร์ดดิสก์ ในทางตรงกันข้าม Hadoop นั้นเน้นไปที่ดิสก์ ในขณะที่คุณไม่จำเป็นต้องซื้อ RAM ราคาแพง คุณจะต้องลงทุนเพิ่มเติมในระบบเพื่อแจกจ่ายดิสก์ I/O ในหลายระบบ

ดังนั้นในแง่ของต้นทุน ส่วนใหญ่ขึ้นอยู่กับความต้องการขององค์กร หากองค์กรต้องการประมวลผลข้อมูลขนาดใหญ่จำนวนมาก Hadoop จะเป็นตัวเลือกที่คุ้มค่า เนื่องจากการซื้อพื้นที่ฮาร์ดดิสก์มีราคาถูกกว่าการซื้อพื้นที่หน่วยความจำที่กว้างขวางมาก นอกจากนี้ MapReduce ยังมาพร้อมกับข้อเสนอ Hadoop-as-a-service และบริการบน Hadoop ที่ช่วยให้คุณข้ามข้อกำหนดด้านฮาร์ดแวร์และบุคลากรได้ เมื่อเปรียบเทียบกับสิ่งนี้แล้ว Spark-as-a-service มีตัวเลือกเพียงไม่กี่รายการเท่านั้น

ความเข้ากันได้

เท่าที่เข้ากันได้ทั้ง Spark และ MapReduce นั้นเข้ากันได้ Spark สามารถรวมเข้ากับแหล่งข้อมูลและรูปแบบไฟล์ทั้งหมดที่สนับสนุนโดย Hadoop ได้อย่างราบรื่น นอกจากนี้ยังสามารถปรับขนาดได้ทั้งสองแบบ ดังนั้นความเข้ากันได้ของ Spark กับประเภทข้อมูลและแหล่งข้อมูลจึงค่อนข้างเหมือนกับ Hadoop MapReduce

อย่างที่คุณเห็น ทั้ง Spark และ MapReduce ต่างก็มีคุณลักษณะเฉพาะที่แยกส่วนออกจากกัน ตัวอย่างเช่น Spark เสนอการวิเคราะห์แบบเรียลไทม์ที่ MapReduce ขาด ในขณะที่ MapReduce มาพร้อมกับระบบไฟล์ที่ Spark ขาด เฟรมเวิร์กทั้งสองนั้นยอดเยี่ยมในรูปแบบที่แตกต่างกัน และทั้งสองเฟรมเวิร์กมาพร้อมข้อดีและข้อเสียที่เป็นเอกลักษณ์ ท้ายที่สุด การอภิปรายระหว่าง Spark กับ MapReduce ล้วนขึ้นอยู่กับความต้องการทางธุรกิจเฉพาะของคุณและประเภทของงานที่คุณต้องการทำให้สำเร็จ

หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับ Big Data โปรดดูที่ PG Diploma in Software Development Specialization in Big Data program ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 7 กรณี ครอบคลุมภาษาและเครื่องมือในการเขียนโปรแกรม 14 รายการ เวิร์กช็อป ความช่วยเหลือด้านการเรียนรู้และจัดหางานอย่างเข้มงวดมากกว่า 400 ชั่วโมงกับบริษัทชั้นนำ

เรียนรู้ หลักสูตรการพัฒนาซอฟต์แวร์ ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

เป็นผู้นำการปฏิวัติเทคโนโลยีที่ขับเคลื่อนด้วยข้อมูล

โปรแกรมประกาศนียบัตรขั้นสูงด้าน Big Data จาก IIIT Bangalore