Spark vs Hadoop: กรอบข้อมูลขนาดใหญ่ที่ดีที่สุดคืออะไร?



โพสต์บล็อกนี้พูดถึง apache spark กับ hadoop ซึ่งจะช่วยให้คุณทราบว่ากรอบข้อมูลบิ๊กดาต้าใดที่เหมาะสมในการเลือกใช้ในสถานการณ์ต่างๆ

ฉันจะเริ่มบล็อก Apache Spark vs Hadoop โดยการแนะนำ Hadoop และ Spark ก่อนเพื่อกำหนดบริบทที่เหมาะสมสำหรับทั้งสองเฟรมเวิร์ก จากนั้นในขั้นต่อไปเราจะเปรียบเทียบทั้งกรอบ Big Data กับพารามิเตอร์ต่างๆเพื่อวิเคราะห์จุดแข็งและจุดอ่อนแต่ไม่ว่าผลการเปรียบเทียบของเราจะเป็นอย่างไรคุณควรรู้ว่าทั้ง Spark และ Hadoop เป็นส่วนประกอบที่สำคัญของ .

Apache Spark vs Hadoop: บทนำสู่ Hadoop

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





HDFS

HDFS สร้างสิ่งที่เป็นนามธรรมของทรัพยากรให้ฉันทำให้ง่ายขึ้นสำหรับคุณ เช่นเดียวกับการจำลองเสมือนคุณสามารถเห็น HDFS ในเชิงตรรกะเป็นหน่วยเดียวสำหรับจัดเก็บข้อมูลขนาดใหญ่ แต่จริงๆแล้วคุณกำลังจัดเก็บข้อมูลของคุณในหลายโหนดแบบกระจาย ที่นี่คุณมีสถาปัตยกรรม master-slave ใน HDFS Namenode เป็นโหนดหลักและ Datanodes เป็นทาส

NameNode

เป็นดีมอนหลักที่ดูแลและจัดการ DataNodes (โหนดทาส) บันทึกข้อมูลเมตาของไฟล์ทั้งหมดที่จัดเก็บในคลัสเตอร์เช่น ตำแหน่งของบล็อกที่จัดเก็บขนาดของไฟล์สิทธิ์ลำดับชั้น ฯลฯ จะบันทึกการเปลี่ยนแปลงแต่ละรายการที่เกิดขึ้นกับข้อมูลเมตาของระบบไฟล์



ตัวอย่างเช่นหากไฟล์ถูกลบใน HDFS NameNode จะบันทึกสิ่งนี้ใน EditLog ทันที ได้รับ Heartbeat และรายงานการบล็อกจาก DataNodes ทั้งหมดในคลัสเตอร์เป็นประจำเพื่อให้แน่ใจว่า DataNodes ใช้งานได้จริง มันเก็บบันทึกของบล็อกทั้งหมดใน HDFS และโหนดใดที่บล็อกเหล่านี้ถูกเก็บไว้

DataNode

เหล่านี้คือเดมอนทาสที่ทำงานบนเครื่องทาสแต่ละเครื่อง ข้อมูลจริงจะถูกเก็บไว้ใน DataNodes พวกเขามีหน้าที่รับผิดชอบในการให้บริการคำขออ่านและเขียนจากลูกค้า พวกเขายังรับผิดชอบในการสร้างบล็อกการลบบล็อกและการจำลองแบบเดียวกันตามการตัดสินใจของ NameNode

HDFS - Apache Spark เทียบกับ Hadoop - Edurekaเส้นด้าย

YARN ดำเนินกิจกรรมการประมวลผลทั้งหมดของคุณโดยการจัดสรรทรัพยากรและกำหนดเวลางาน มันมีภูตสองตัวที่สำคัญนั่นคือ ResourceManager และ NodeManager .



ResourceManager

เป็นระดับคลัสเตอร์ (หนึ่งสำหรับแต่ละคลัสเตอร์) และทำงานบนเครื่องหลัก จัดการทรัพยากรและกำหนดเวลาแอปพลิเคชันที่ทำงานอยู่ด้านบนของ YARN

NodeManager

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

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Hadoop คุณสามารถอ่านสิ่งนี้ได้ บล็อก ตอนนี้เราพร้อมสำหรับการแนะนำ Hadoop แล้วเรามาดูการแนะนำของ Spark กันดีกว่า

Apache Spark vs Hadoop: บทนำสู่ Apache Spark

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

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

  1. Spark Core - Spark Core เป็นเครื่องมือพื้นฐานสำหรับการประมวลผลข้อมูลแบบขนานและแบบกระจายขนาดใหญ่ นอกจากนี้ไลบรารีเพิ่มเติมที่สร้างขึ้นบนแกนกลางช่วยให้มีปริมาณงานที่หลากหลายสำหรับการสตรีม SQL และการเรียนรู้ของเครื่อง มีหน้าที่รับผิดชอบในการจัดการหน่วยความจำและการกู้คืนความผิดพลาดกำหนดเวลาแจกจ่ายและตรวจสอบงานบนคลัสเตอร์และโต้ตอบกับระบบจัดเก็บข้อมูล
  2. Spark Streaming - Spark Streaming เป็นส่วนประกอบของ Spark ซึ่งใช้ในการประมวลผลข้อมูลสตรีมมิ่งแบบเรียลไทม์ ดังนั้นจึงเป็นประโยชน์เพิ่มเติมสำหรับ Spark API หลัก ช่วยให้สามารถประมวลผลสตรีมข้อมูลสดที่มีทรูพุตสูงและทนต่อความผิดพลาดได้
  3. Spark SQL : Spark SQL เป็นโมดูลใหม่ใน Spark ซึ่งรวมการประมวลผลเชิงสัมพันธ์กับ API การเขียนโปรแกรมเชิงฟังก์ชันของ Spark รองรับการสืบค้นข้อมูลผ่าน SQL หรือผ่าน Hive Query Language สำหรับผู้ที่คุณคุ้นเคยกับ RDBMS Spark SQL จะเปลี่ยนจากเครื่องมือก่อนหน้านี้ได้ง่ายซึ่งคุณสามารถขยายขอบเขตของการประมวลผลข้อมูลเชิงสัมพันธ์แบบเดิมได้
  4. GraphX : GraphX ​​เป็น Spark API สำหรับกราฟและการคำนวณแบบกราฟขนาน ดังนั้นจึงขยาย Spark RDD ด้วยกราฟคุณสมบัติการกระจายที่ยืดหยุ่น ในระดับสูง GraphX ​​จะขยายนามธรรม Spark RDD โดยการแนะนำกราฟคุณสมบัติการกระจายแบบยืดหยุ่น: มัลติกราฟที่กำกับพร้อมคุณสมบัติที่แนบกับจุดยอดและขอบแต่ละจุด
  5. มลลิบ (Machine Learning): MLlib ย่อมาจาก Machine Learning Library Spark MLlib ใช้เพื่อทำการเรียนรู้ของเครื่องใน Apache Spark

อย่างที่คุณเห็น Spark มาพร้อมกับไลบรารีระดับสูงรวมถึงการรองรับ R, SQL, Python, Scala, Java เป็นต้นไลบรารีมาตรฐานเหล่านี้ช่วยเพิ่มการผสานรวมที่ราบรื่นในขั้นตอนการทำงานที่ซับซ้อน นอกจากนี้ยังช่วยให้ชุดบริการต่างๆรวมเข้าด้วยกันเช่น MLlib, GraphX, SQL + Data Frames, บริการสตรีมมิ่งเป็นต้นเพื่อเพิ่มความสามารถ

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Apache Spark คุณสามารถอ่านสิ่งนี้ได้ บล็อก ตอนนี้พื้นพร้อมสำหรับ Apache Spark vs Hadoop เรามาเปรียบเทียบ Apache Spark กับ Hadoop กับพารามิเตอร์ต่างๆกันเพื่อทำความเข้าใจจุดแข็ง

Apache Spark vs Hadoop: พารามิเตอร์เพื่อเปรียบเทียบ

ประสิทธิภาพ

Spark นั้นเร็วเพราะมีการประมวลผลในหน่วยความจำ นอกจากนี้ยังสามารถใช้ดิสก์สำหรับข้อมูลที่ไม่พอดีกับหน่วยความจำทั้งหมด การประมวลผลในหน่วยความจำของ Spark ให้การวิเคราะห์แบบเรียลไทม์ สิ่งนี้ทำให้ Spark เหมาะสำหรับระบบประมวลผลบัตรเครดิตแมชชีนเลิร์นนิงการวิเคราะห์ความปลอดภัยและเซ็นเซอร์ Internet of Things

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

ปัญหาในการเปรียบเทียบทั้งสองอย่างคือการประมวลผลต่างกัน

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

Spark มาพร้อมกับ API ที่ใช้งานง่ายสำหรับ Scala, Java, Python และ Spark SQL Spark SQL คล้ายกับ SQL มากดังนั้นนักพัฒนา SQL จึงเรียนรู้ได้ง่ายขึ้น Spark ยังมีเชลล์แบบโต้ตอบสำหรับนักพัฒนาในการสืบค้นและดำเนินการอื่น ๆ และรับข้อเสนอแนะได้ทันที

คุณสามารถนำเข้าข้อมูลใน Hadoop ได้อย่างง่ายดายโดยใช้เชลล์หรือรวมเข้ากับเครื่องมือหลายอย่างเช่น Sqoop, Flume เป็นต้น YARN เป็นเพียงกรอบการประมวลผลและสามารถรวมเข้ากับเครื่องมือต่างๆเช่น Hive และ Pig HIVE เป็นส่วนประกอบคลังข้อมูลที่ทำหน้าที่อ่านเขียนและจัดการชุดข้อมูลขนาดใหญ่ในสภาพแวดล้อมแบบกระจายโดยใช้อินเทอร์เฟซคล้าย SQL คุณสามารถผ่านสิ่งนี้ไปได้ ระบบนิเวศ Hadoop บล็อกเกี่ยวกับเครื่องมือต่างๆที่สามารถใช้ร่วมกับ Hadoop ได้

ค่าใช้จ่าย

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

ตอนนี้คุณอาจสงสัยว่าวิธีการที่แตกต่างกัน การจัดเก็บและการประมวลผลใน Hadoop ใช้ดิสก์และ Hadoop ใช้หน่วยความจำจำนวนมาตรฐาน ดังนั้นเมื่อใช้ Hadoop เราจึงต้องการเนื้อที่ดิสก์จำนวนมากและดิสก์ที่เร็วขึ้น Hadoop ยังต้องการระบบหลายระบบเพื่อกระจายดิสก์ I / O

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

แต่ใช่สิ่งสำคัญอย่างหนึ่งที่ควรทราบก็คือเทคโนโลยีของ Spark ช่วยลดจำนวนระบบที่จำเป็น ต้องการระบบน้อยลงอย่างมีนัยสำคัญที่มีค่าใช้จ่ายมากขึ้น ดังนั้นจะมีจุดหนึ่งที่ Spark ลดต้นทุนต่อหน่วยคำนวณแม้ว่าจะมีข้อกำหนด RAM เพิ่มเติมก็ตาม

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

การประมวลผลข้อมูลมีสองประเภท: การประมวลผลแบบแบทช์และการประมวลผลสตรีม

ขั้นตอนใน sql คืออะไร

การประมวลผลแบทช์เทียบกับการประมวลผลสตรีม

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

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

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

ตอนนี้กลับมาที่ Apache Spark vs Hadoop YARN เป็นเฟรมเวิร์กการประมวลผลแบบแบทช์ เมื่อเราส่งงานให้ YARN มันจะอ่านข้อมูลจากคลัสเตอร์ดำเนินการและเขียนผลลัพธ์กลับไปที่คลัสเตอร์ จากนั้นจะอ่านข้อมูลที่อัปเดตอีกครั้งดำเนินการต่อไปและเขียนผลลัพธ์กลับไปที่คลัสเตอร์และอื่น ๆ

Spark ดำเนินการคล้ายกัน แต่ใช้การประมวลผลในหน่วยความจำและปรับขั้นตอนให้เหมาะสม GraphX ​​อนุญาตให้ผู้ใช้ดูข้อมูลเดียวกับกราฟและเป็นคอลเลกชัน ผู้ใช้ยังสามารถแปลงและเข้าร่วมกราฟด้วย Resilient Distributed Datasets (RDDs)

ความทนทานต่อความผิดพลาด

Hadoop และ Spark ต่างให้การยอมรับข้อผิดพลาด แต่ทั้งสองมีแนวทางที่แตกต่างกัน สำหรับ HDFS และ YARN ทั้งสอง master daemons (เช่น NameNode และ ResourceManager ตามลำดับ) จะตรวจสอบ heartbeat ของ Slave daemons (เช่น DataNode & NodeManager ตามลำดับ) หาก Slave daemon ใด ๆ ล้มเหลว master daemons จะกำหนดเวลาการดำเนินการที่ค้างอยู่และกำลังดำเนินการทั้งหมดไปยังทาสอื่น วิธีนี้มีประสิทธิภาพ แต่สามารถเพิ่มเวลาในการดำเนินการที่มีความล้มเหลวเพียงครั้งเดียวได้อย่างมาก เนื่องจาก Hadoop ใช้ฮาร์ดแวร์สินค้าโภคภัณฑ์อีกวิธีหนึ่งที่ HDFS รับประกันความทนทานต่อข้อผิดพลาดคือการจำลองข้อมูล

ดังที่เราได้กล่าวไว้ข้างต้น RDDs เป็นส่วนประกอบของ Apache Spark RDD ให้ความทนทานต่อความผิดพลาดของ Spark สามารถอ้างถึงชุดข้อมูลใด ๆ ที่มีอยู่ในระบบจัดเก็บข้อมูลภายนอกเช่น HDFS, HBase, ระบบไฟล์ที่แชร์ สามารถใช้งานแบบขนานได้

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

ความปลอดภัย

Hadoop รองรับ Kerberos สำหรับการพิสูจน์ตัวตน แต่จัดการได้ยาก อย่างไรก็ตามยังสนับสนุนผู้จำหน่ายบุคคลที่สามเช่น LDAP (Lightweight Directory Access Protocol) สำหรับการตรวจสอบสิทธิ์ นอกจากนี้ยังมีการเข้ารหัส HDFS รองรับการอนุญาตไฟล์แบบเดิมตลอดจนรายการควบคุมการเข้าถึง (ACL) Hadoop ให้บริการระดับการอนุญาตซึ่งรับประกันว่าลูกค้ามีสิทธิ์ที่เหมาะสมสำหรับการส่งงาน

ปัจจุบัน Spark รองรับการรับรองความถูกต้องผ่านความลับที่แชร์ Spark สามารถทำงานร่วมกับ HDFS และสามารถใช้ HDFS ACL และการอนุญาตระดับไฟล์ Spark ยังสามารถทำงานบน YARN โดยใช้ประโยชน์จากความสามารถของ Kerberos

กรณีการใช้งานที่ Hadoop เหมาะสมที่สุด:

  • การวิเคราะห์ข้อมูลที่เก็บถาวร YARN ช่วยให้การประมวลผลข้อมูลจำนวนมากแบบขนาน ส่วนต่างๆของข้อมูลได้รับการประมวลผลแบบขนานและแยกกันบน DataNodes ที่แตกต่างกันและรวบรวมผลลัพธ์จาก NodeManager แต่ละตัว
  • หากไม่ต้องการผลลัพธ์ทันที Hadoop MapReduce เป็นโซลูชันที่ดีและประหยัดสำหรับการประมวลผลแบบชุด

กรณีใช้งานที่ Spark เหมาะสมที่สุด:

การวิเคราะห์ข้อมูลขนาดใหญ่แบบเรียลไทม์:

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

Spark อ้างว่าประมวลผลข้อมูลได้เร็วกว่า MapReduce 100 เท่าในขณะที่ใช้ดิสก์ได้เร็วขึ้น 10 เท่า

การประมวลผลกราฟ:

อัลกอริธึมการประมวลผลกราฟส่วนใหญ่เช่นการจัดอันดับของหน้าดำเนินการซ้ำหลายครั้งบนข้อมูลเดียวกันและต้องใช้กลไกการส่งข้อความ เราจำเป็นต้องตั้งโปรแกรม MapReduce อย่างชัดเจนเพื่อจัดการกับการทำซ้ำหลาย ๆ ครั้งบนข้อมูลเดียวกัน โดยประมาณจะทำงานดังนี้: อ่านข้อมูลจากดิสก์และหลังจากการทำซ้ำโดยเฉพาะให้เขียนผลลัพธ์ไปยัง HDFS จากนั้นอ่านข้อมูลจาก HDFS เพื่อทำซ้ำครั้งต่อไป สิ่งนี้ไม่มีประสิทธิภาพมากเนื่องจากเกี่ยวข้องกับการอ่านและการเขียนข้อมูลลงในดิสก์ซึ่งเกี่ยวข้องกับการดำเนินการ I / O จำนวนมากและการจำลองข้อมูลทั่วทั้งคลัสเตอร์เพื่อการยอมรับข้อผิดพลาด นอกจากนี้การทำซ้ำ MapReduce แต่ละครั้งยังมีเวลาแฝงที่สูงมากและการทำซ้ำครั้งถัดไปจะเริ่มต้นได้หลังจากงานก่อนหน้านี้เสร็จสมบูรณ์แล้วเท่านั้น

นอกจากนี้การส่งข้อความต้องใช้คะแนนของโหนดใกล้เคียงเพื่อประเมินคะแนนของโหนดใดโหนดหนึ่ง การคำนวณเหล่านี้ต้องการข้อความจากเพื่อนบ้าน (หรือข้อมูลในหลายขั้นตอนของงาน) ซึ่งเป็นกลไกที่ MapReduce ขาด เครื่องมือประมวลผลกราฟต่างๆเช่น Pregel และ GraphLab ได้รับการออกแบบมาเพื่อตอบสนองความต้องการแพลตฟอร์มที่มีประสิทธิภาพสำหรับอัลกอริทึมการประมวลผลกราฟ เครื่องมือเหล่านี้รวดเร็วและปรับขนาดได้ แต่ไม่มีประสิทธิภาพสำหรับการสร้างและหลังการประมวลผลของอัลกอริทึมหลายขั้นตอนที่ซับซ้อนเหล่านี้

การแนะนำ Apache Spark ช่วยแก้ปัญหาเหล่านี้ได้ในระดับดี Spark มีไลบรารีการคำนวณกราฟที่เรียกว่า GraphX ​​ซึ่งทำให้ชีวิตของเราง่ายขึ้น การคำนวณในหน่วยความจำพร้อมกับการรองรับกราฟในตัวช่วยปรับปรุงประสิทธิภาพของอัลกอริทึมโดยมีขนาดหนึ่งหรือสององศาเหนือโปรแกรม MapReduce แบบเดิม Spark ใช้การรวมกันของ Netty และ Akka สำหรับการกระจายข้อความไปทั่วตัวดำเนินการ มาดูสถิติบางอย่างที่แสดงถึงประสิทธิภาพของอัลกอริทึม PageRank โดยใช้ Hadoop และ Spark

อัลกอริทึมการเรียนรู้ของเครื่องซ้ำ:

อัลกอริทึมการเรียนรู้ของเครื่องเกือบทั้งหมดทำงานซ้ำ ๆ ดังที่เราได้เห็นก่อนหน้านี้อัลกอริทึมแบบวนซ้ำเกี่ยวข้องกับปัญหาคอขวดของ I / O ในการใช้ MapReduce MapReduce ใช้งานที่มีเนื้อหยาบ (การขนานกันในระดับงาน) ซึ่งหนักเกินไปสำหรับอัลกอริทึมซ้ำ ๆ จุดประกายด้วยความช่วยเหลือของ Mesos - เคอร์เนลระบบแบบกระจายแคชชุดข้อมูลระดับกลางหลังจากการทำซ้ำแต่ละครั้งและรันการวนซ้ำหลายครั้งบนชุดข้อมูลที่แคชนี้ซึ่งจะลด I / O และช่วยให้รันอัลกอริทึมได้เร็วขึ้นในลักษณะที่ทนต่อความผิดพลาด

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

  • การประมวลผลข้อมูลที่รวดเร็ว อย่างที่เราทราบกันดีว่า Spark อนุญาตให้มีการประมวลผลในหน่วยความจำ ด้วยเหตุนี้ Spark จึงเร็วขึ้นถึง 100 เท่าสำหรับข้อมูลใน RAM และสูงสุด 10 เท่าสำหรับข้อมูลในที่เก็บข้อมูล
  • การประมวลผลซ้ำ RDD ของ Spark ช่วยให้สามารถดำเนินการแผนที่หลายอย่างในหน่วยความจำโดยไม่จำเป็นต้องเขียนชุดข้อมูลชั่วคราวลงในดิสก์
  • ใกล้การประมวลผลแบบเรียลไทม์ Spark เป็นเครื่องมือที่ยอดเยี่ยมในการให้ข้อมูลเชิงลึกทางธุรกิจในทันที นี่คือเหตุผลที่ Spark ถูกนำมาใช้ในระบบสตรีมมิงของบัตรเครดิต

“ Apache Spark: นักฆ่าหรือผู้ช่วยให้รอดของ Apache Hadoop?”

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

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับโดยเร็วที่สุด

หากคุณต้องการเรียนรู้ Spark และสร้างอาชีพในโดเมนของ Spark เพื่อดำเนินการประมวลผลข้อมูลขนาดใหญ่โดยใช้ RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​และ Scala พร้อมกรณีการใช้งานในชีวิตจริงโปรดดูการโต้ตอบแบบสดออนไลน์ของเรา ที่นี่ ที่มาพร้อมกับการสนับสนุน 24 * 7 เพื่อแนะนำคุณตลอดระยะเวลาการเรียนรู้ของคุณ