Spark - บทนำ
อุตสาหกรรมต่างๆใช้ Hadoop อย่างกว้างขวางเพื่อวิเคราะห์ชุดข้อมูลของตน เหตุผลก็คือ Hadoop framework เป็นไปตามรูปแบบการเขียนโปรแกรมอย่างง่าย (MapReduce) และช่วยให้สามารถแก้ปัญหาการประมวลผลที่ปรับขนาดได้ยืดหยุ่นทนต่อข้อผิดพลาดและคุ้มค่า ที่นี่ข้อกังวลหลักคือการรักษาความเร็วในการประมวลผลชุดข้อมูลขนาดใหญ่ในแง่ของเวลารอระหว่างการสืบค้นและเวลารอเพื่อเรียกใช้โปรแกรม
Spark ได้รับการแนะนำโดย Apache Software Foundation เพื่อเร่งกระบวนการซอฟต์แวร์คอมพิวเตอร์คอมพิวเตอร์ Hadoop
ในทางตรงกันข้ามกับความเชื่อทั่วไป Spark is not a modified version of Hadoopและไม่ได้ขึ้นอยู่กับ Hadoop จริง ๆ เนื่องจากมีการจัดการคลัสเตอร์ของตัวเอง Hadoop เป็นเพียงวิธีหนึ่งในการนำ Spark ไปใช้
Spark ใช้ Hadoop ในสองวิธี - หนึ่งคือ storage และที่สองคือ processing. เนื่องจาก Spark มีการคำนวณการจัดการคลัสเตอร์ของตัวเองจึงใช้ Hadoop เพื่อการจัดเก็บเท่านั้น
Apache Spark
Apache Spark เป็นเทคโนโลยีการประมวลผลคลัสเตอร์ที่รวดเร็วปานสายฟ้าแลบออกแบบมาเพื่อการคำนวณที่รวดเร็ว มันขึ้นอยู่กับ Hadoop MapReduce และขยายโมเดล MapReduce เพื่อใช้อย่างมีประสิทธิภาพสำหรับการคำนวณประเภทอื่น ๆ ซึ่งรวมถึงการสืบค้นแบบโต้ตอบและการประมวลผลสตรีม คุณสมบัติหลักของ Spark คือin-memory cluster computing ที่เพิ่มความเร็วในการประมวลผลของแอปพลิเคชัน
Spark ได้รับการออกแบบมาเพื่อให้ครอบคลุมปริมาณงานที่หลากหลายเช่นแอปพลิเคชันแบตช์อัลกอริธึมซ้ำการสืบค้นแบบโต้ตอบและการสตรีม นอกเหนือจากการรองรับภาระงานทั้งหมดเหล่านี้ในระบบที่เกี่ยวข้องแล้วยังช่วยลดภาระการจัดการในการบำรุงรักษาเครื่องมือแยกต่างหาก
วิวัฒนาการของ Apache Spark
Spark เป็นหนึ่งในโครงการย่อยของ Hadoop ที่พัฒนาในปี 2009 ใน AMPLab ของ UC Berkeley โดย Matei Zaharia เป็น Open Sourced ในปี 2010 ภายใต้ใบอนุญาต BSD ได้รับการบริจาคให้กับมูลนิธิซอฟต์แวร์ Apache ในปี 2013 และตอนนี้ Apache Spark ได้กลายเป็นโครงการ Apache ระดับบนตั้งแต่เดือนกุมภาพันธ์ 2014
คุณสมบัติของ Apache Spark
Apache Spark มีคุณสมบัติดังต่อไปนี้
Speed- Spark ช่วยเรียกใช้แอปพลิเคชันในคลัสเตอร์ Hadoop หน่วยความจำเร็วขึ้นสูงสุด 100 เท่าและเร็วขึ้น 10 เท่าเมื่อทำงานบนดิสก์ สามารถทำได้โดยการลดจำนวนการอ่าน / เขียนลงในดิสก์ เก็บข้อมูลการประมวลผลระดับกลางไว้ในหน่วยความจำ
Supports multiple languages- Spark มี API ในตัวใน Java, Scala หรือ Python ดังนั้นคุณสามารถเขียนแอปพลิเคชันในภาษาต่างๆ Spark มาพร้อมกับตัวดำเนินการระดับสูง 80 ตัวสำหรับการสืบค้นแบบโต้ตอบ
Advanced Analytics- Spark ไม่เพียง แต่รองรับ 'แผนที่' และ 'ลด' นอกจากนี้ยังรองรับการสืบค้น SQL ข้อมูลสตรีมมิ่งแมชชีนเลิร์นนิง (ML) และอัลกอริทึมกราฟ
Spark สร้างขึ้นบน Hadoop
แผนภาพต่อไปนี้แสดงสามวิธีในการสร้าง Spark ด้วยส่วนประกอบ Hadoop
การปรับใช้ Spark มีสามวิธีดังที่อธิบายไว้ด้านล่าง
Standalone- การใช้งาน Spark แบบสแตนด์อโลนหมายความว่า Spark ครอบครองตำแหน่งที่อยู่ด้านบนของ HDFS (Hadoop Distributed File System) และมีการจัดสรรพื้นที่สำหรับ HDFS อย่างชัดเจน ที่นี่ Spark และ MapReduce จะทำงานเคียงข้างกันเพื่อครอบคลุมงานจุดประกายทั้งหมดในคลัสเตอร์
Hadoop Yarn- การปรับใช้ Hadoop Yarn หมายถึงเพียงแค่จุดประกายทำงานบน Yarn โดยไม่ต้องติดตั้งล่วงหน้าหรือเข้าถึงรูท ช่วยในการรวม Spark เข้ากับระบบนิเวศ Hadoop หรือ Hadoop stack ช่วยให้ส่วนประกอบอื่น ๆ ทำงานบนสแต็ก
Spark in MapReduce (SIMR)- Spark ใน MapReduce ใช้เพื่อเปิดงานจุดประกายนอกเหนือจากการใช้งานแบบสแตนด์อโลน ด้วย SIMR ผู้ใช้สามารถเริ่ม Spark และใช้เชลล์ได้โดยไม่ต้องมีสิทธิ์เข้าถึงระดับผู้ดูแลระบบ
ส่วนประกอบของ Spark
ภาพประกอบต่อไปนี้แสดงให้เห็นถึงส่วนประกอบต่างๆของ Spark
Apache Spark Core
Spark Core เป็นเครื่องมือประมวลผลทั่วไปที่เป็นพื้นฐานสำหรับแพลตฟอร์มจุดประกายที่มีการสร้างฟังก์ชันอื่น ๆ ทั้งหมด มีการประมวลผลในหน่วยความจำและการอ้างอิงชุดข้อมูลในระบบจัดเก็บข้อมูลภายนอก
Spark SQL
Spark SQL เป็นส่วนประกอบที่อยู่ด้านบนของ Spark Core ซึ่งนำเสนอข้อมูลนามธรรมใหม่ที่เรียกว่า SchemaRDD ซึ่งให้การสนับสนุนข้อมูลที่มีโครงสร้างและกึ่งโครงสร้าง
Spark Streaming
Spark Streaming ใช้ประโยชน์จากความสามารถในการตั้งเวลาที่รวดเร็วของ Spark Core เพื่อทำการวิเคราะห์สตรีมมิ่ง นำเข้าข้อมูลเป็นชุดย่อยและดำเนินการแปลง RDD (Resilient Distributed Datasets) บนชุดข้อมูลขนาดเล็กเหล่านั้น
MLlib (ไลบรารีการเรียนรู้ของเครื่อง)
MLlib เป็นเฟรมเวิร์กการเรียนรู้ของเครื่องที่กระจายอยู่เหนือ Spark เนื่องจากสถาปัตยกรรม Spark ที่ใช้หน่วยความจำแบบกระจาย เป็นไปตามเกณฑ์มาตรฐานที่ทำโดยนักพัฒนา MLlib กับการใช้งาน Alternating Least Squares (ALS) Spark MLlib เร็วกว่ารุ่นที่ใช้ดิสก์ Hadoop ถึงเก้าเท่าApache Mahout (ก่อนที่ Mahout จะได้รับอินเทอร์เฟซ Spark)
GraphX
GraphX เป็นเฟรมเวิร์กการประมวลผลกราฟแบบกระจายที่ด้านบนของ Spark มี API สำหรับการแสดงการคำนวณกราฟที่สามารถจำลองกราฟที่ผู้ใช้กำหนดโดยใช้ Pregel Abstraction API นอกจากนี้ยังมีรันไทม์ที่ปรับให้เหมาะสมสำหรับสิ่งที่เป็นนามธรรมนี้