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 อาจจะเข้าใจจัดการและปรับแต่งได้ง่ายขึ้น