กรณีการใช้งาน Apache Spark vs Hadoop มีอะไรบ้าง


30

ด้วย Hadoop 2.0 และ YARN Hadoop ไม่ได้ผูกติดกับโซลูชันลดแผนที่เท่านั้นอีกต่อไป ด้วยความก้าวหน้าดังกล่าวกรณีการใช้งานของ Apache Spark vs Hadoop คืออะไรเมื่อพิจารณาทั้งสองอย่างบน HDFS ฉันอ่านเอกสารแนะนำสำหรับ Spark แล้ว แต่ฉันอยากรู้ว่าใครเคยเจอปัญหาที่มีประสิทธิภาพและแก้ปัญหาได้ง่ายกว่า Spark เมื่อเทียบกับ Hadoop

คำตอบ:


40

Hadoop หมายถึง HDFS, YARN, MapReduce และอื่น ๆ อีกมากมาย คุณหมายถึง Spark vs MapReduceหรือเปล่า เพราะ Spark ทำงานบน / กับ Hadoop ซึ่งค่อนข้างตรงประเด็น

เหตุผลหลักในการใช้ Spark คือความเร็ว ข้อได้เปรียบนี้เด่นชัดมากสำหรับการคำนวณซ้ำซึ่งมีหลายสิบขั้นตอนซึ่งแต่ละสัมผัสข้อมูลเดียวกัน นี่คือสิ่งที่อาจเร็วกว่า "100x" สำหรับงานง่ายๆ ETL แบบ one-pass ที่ MapReduce ได้รับการออกแบบไม่ใช่งานทั่วไปที่เร็วขึ้น

อีกเหตุผลที่ควรใช้ Spark คือภาษาระดับสูงที่ดีกว่าเมื่อเทียบกับ MapReduce มันให้มุมมองการเขียนโปรแกรมฟังก์ชั่นเช่นเดียวกับที่เลียนแบบ Scala ซึ่งไกลกว่าการเขียนรหัส MapReduce (แม้ว่าคุณจะต้องใช้ Scala หรือนำ Java หรือ Python APIs มาพัฒนา Spark เล็กน้อย) CrunchและCascadingให้ Abstraction ที่คล้ายกันอยู่ด้านบนของ MapReduce แต่นี่ก็ยังคงเป็นพื้นที่ที่ Spark ดี

ในที่สุด Spark มีโครงการย่อยที่ยังเยาว์วัย แต่มีแนวโน้มสำหรับ ML การวิเคราะห์กราฟและการสตรีมซึ่งมี API ที่คล้ายกันและสอดคล้องกัน ด้วย MapReduce คุณจะต้องหันไปหาโครงการอื่นที่แตกต่างกันสำหรับโครงการนี้ (Mahout, Giraph, Storm) เป็นเรื่องดีที่มีไว้ในแพ็คเกจเดียวแม้ว่าจะยังไม่ได้อบ

ทำไมคุณไม่ใช้ Spark? การถอดความตัวเอง:

  • Spark เป็น Scala เป็นหลักโดยมี Java APIs ที่พอร์ต MapReduce อาจมีความเป็นมิตรและเป็นเจ้าของภาษามากขึ้นสำหรับนักพัฒนาที่ใช้ Java
  • ตอนนี้มีความเชี่ยวชาญ MapReduce เพิ่มเติมกว่า Spark
  • สำหรับ data-parallel, one-pass, ETL-like jobs MapReduce ถูกออกแบบมาเพื่อ MapReduce มีน้ำหนักเบากว่าเมื่อเทียบกับ Spark เทียบเท่า
  • Spark ค่อนข้างเป็นผู้ใหญ่แล้วและตอนนี้ YARN ก็เช่นกัน แต่ Spark-on-YARN ยังค่อนข้างใหม่ ทั้งสองอาจยังไม่ได้รวมกันอย่างเหมาะสม เช่นจนกระทั่งเมื่อเร็ว ๆ นี้ฉันไม่คิดว่า Spark สามารถขอให้ YARN จัดสรรตามจำนวนแกนได้หรือไม่ นั่นคือ: MapReduce อาจจะเข้าใจจัดการและปรับแต่งได้ง่ายขึ้น

ขอขอบคุณสำหรับการชี้แจง. การเก็บข้อมูลในหน่วยความจำดูเหมือนจะมีความหมายที่น่าสนใจ - ฉันจะอ่านแนวคิดของชุดข้อมูล Resilient Distributed ที่มีความยืดหยุ่นของ Spark อีกเล็กน้อย
idclark

3
+1 สำหรับคำตอบที่ชัดเจนและมีประโยชน์จริง ๆ สำหรับผู้คนจำนวนมากที่มีคำถามนี้เช่นฉัน
vefthym

3
โปรดทราบว่า Sean Owen เป็นผู้แต่งหนังสือ O'Reilly เล่มใหม่เกี่ยวกับ Spark :-)
sheldonkreger

1

ไม่แน่ใจเกี่ยวกับ YARN แต่ฉันคิดว่า Spark สร้างความแตกต่างอย่างแท้จริงเมื่อเทียบกับ Hadoop (โฆษณาเร็วกว่า 100 เท่า) หากข้อมูลสามารถเข้ากับหน่วยความจำของโหนดการคำนวณได้ดี เพียงเพราะหลีกเลี่ยงการเข้าถึงฮาร์ดดิสก์ หากข้อมูลไม่พอดีกับหน่วยความจำก็ยังมีบางส่วนได้รับเนื่องจากการบัฟเฟอร์


0

ข้อมูลที่ดี @Sean Owen ต้องการเพิ่มอีกหนึ่งรายการ Spark อาจช่วยในการสร้างท่อส่งข้อมูลแบบครบวงจรในสถาปัตยกรรมแลมบ์ดาที่อยู่ทั้งชั้นและรุ่นที่มีความสามารถในการเขียนไปยังชั้นการให้บริการทั่วไป มันเป็นข้อได้เปรียบอย่างมากในการใช้ตรรกะระหว่างแบตช์และสตรีม นอกจากนี้อัลกอริทึม K-Means แบบสตรีมมิ่งใน Spark1.3 ยังถูกเพิ่มเข้ากับ ML นอกเหนือจากการติดตามงานที่ยอดเยี่ยมและการสร้างภาพข้อมูลกระบวนการใน 1.4


0

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

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

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


-1

การเรียนรู้ของเครื่องเป็นตัวอย่างที่ดีของประเภทปัญหาที่การแก้ปัญหาบนพื้นฐานของ Spark เป็นเวลาไม่กี่ปีข้างหน้าของการแก้ปัญหาด้วย mapreduce


2
ฉันไม่คิดว่ามันจะเป็นจริง แต่ฉันคิดว่าฉันรู้ว่าสิ่งที่คุณได้รับในหน่วยความจำทำงานได้เร็วขึ้นมากสำหรับการคำนวณซ้ำและ ML จำนวนมากซ้ำแล้วซ้ำอีก
Sean Owen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.