Apache Spark คืออะไร
Apache Spark เป็นโอเพนซอร์สระบบประมวลผลแบบกระจาย ซึ่งมักนำไปใช้สำหรับเวิร์กโหลดของ Big Data Apache Spark ใช้แคชแบบใช้หน่วยความจำและการสืบค้นแบบเพิ่มประสิทธิภาพเพื่อการสืบค้นเชิงวิเคราะห์กับข้อมูลทุกขนาดอย่างรวดเร็ว มีให้ API การพัฒนาใน Java, Scala, Python และ R และรองรับการนำโค้ดกลับมาใช้ใหม่ในเวิร์กโหลดที่หลากหลาย เช่น การประมวลผลแบบแบทช์ การสืบค้นแบบโต้ตอบ การวิเคราะห์แบบเรียลไทม์ แมชชีนเลิร์นนิง และการประมวลผลกราฟ คุณจะพบว่ามีการนำไปใช้โดยองค์กรจากทุกอุตสาหกรรม รวมถึง FINRA, Yelp, Zillow, DataXu, Urban Institute และ CrowdStrike
Apache Spark มีความเป็นมาอย่างไร
Apache Spark เริ่มต้นขึ้นในปี 2009 ในฐานะโครงการวิจัยที่ AmPLab ของ UC Berkley ซึ่งเป็นความร่วมมือที่เกี่ยวข้องกับนักศึกษา นักวิจัย และคณาจารย์ โดยมุ่งเน้นไปที่โดเมนแอปพลิเคชันที่ใช้ข้อมูลที่เข้มข้น เป้าหมายของ Spark คือการสร้างเฟรมเวิร์กใหม่ที่ปรับให้เหมาะสมสำหรับการประมวลผลแบบซ้ำที่รวดเร็ว เช่น แมชชีนเลิร์นนิง และการวิเคราะห์ข้อมูลแบบโต้ตอบ ในขณะที่ยังคงความสามารถในการปรับขนาดและความทนทานต่อข้อผิดพลาดของ Hadoop MapReduce บทความแรกชื่อ “Spark: Cluster Computing with Working Sets” เผยแพร่ในเดือนมิถุนายน 2010 และ Spark เป็นแหล่งข้อมูลแบบโอเพ่นซอร์สภายใต้ใบอนุญาต BSD ในเดือนมิถุนายน 2013 Spark เข้าสู่สถานะเริ่มก่อตั้งที่ Apache Software Foundation (ASF) และก่อตั้งเป็นโครงการระดับบนสุดของ Apache ในเดือนกุมภาพันธ์ 2014 Spark สามารถทำงานแบบสแตนด์อโลนบน Apache Mesos หรือบ่อยที่สุดบน Apache Hadoop
Apache Spark ทำงานอย่างไร
Hadoop MapReduce เป็นแบบจำลองการเขียนโปรแกรมสำหรับการประมวลผล Big Data ด้วยอัลกอริทึมแบบขนานและกระจาย นักพัฒนาสามารถเขียนโอเปอเรเตอร์แบบขนานกันได้จำนวนมากโดยไม่ต้องกังวลเกี่ยวกับการกระจายงานและการทนต่อความผิดพลาด อย่างไรก็ตาม ความท้าทายสำหรับ MapReduce คือการประมวลผลตามลำดับหลายขั้นตอนที่ต้องใช้ในการเรียกใช้งาน ในแต่ละขั้นตอน MapReduce จะอ่านข้อมูลจากคลัสเตอร์ดำเนินการและเขียนผลลัพธ์กลับไปยัง HDFS เนื่องจากแต่ละขั้นตอนต้องมีการอ่านและเขียนดิสก์ งาน MapReduce จึงช้าลงเนื่องจากความล่าช้าของดิสก์ I/O
Spark ถูกสร้างขึ้นเพื่อแก้ไขข้อจำกัดของ MapReduce โดยดำเนินการประมวลผลในหน่วยความจำ ลดจำนวนขั้นตอนในงาน และโดยการใช้ข้อมูลซ้ำในการดำเนินการแบบขนานหลายครั้ง ด้วย Spark ขั้นตอนที่จำเป็นในการอ่านข้อมูลลงในหน่วยความจำ การดำเนินการที่ทำ และผลลัพธ์ที่เขียนย้อนกลับ จึงมีขั้นตอนเพียงเดียวเท่านั้น ซึ่งส่งผลให้ดำเนินการได้เร็วขึ้นมาก Spark ยังใช้ข้อมูลอีกครั้งโดยใช้แคชในหน่วยความจำเพื่อเร่งความเร็วของอัลกอริทึมของแมชชีนเลิร์นนิงที่เรียกฟังก์ชันในชุดข้อมูลเดียวกันซ้ำ ๆ การใช้ข้อมูลซ้ำทำได้ผ่านการสร้าง DataFrames ซึ่งเป็นการกำหนดสาระสำคัญเหนือชุดข้อมูลแบบกระจายความยืดหยุ่น (RDD) ซึ่งเป็นคอลเลกชันของวัตถุที่แคชไว้ในหน่วยความจำและนำกลับมาใช้ใหม่ในการดำเนินการ Spark หลายครั้ง สิ่งนี้ช่วยลดความหน่วงลงอย่างมาก ทำให้ Spark เร็วกว่า MapReduce หลายเท่า โดยเฉพาะอย่างยิ่งเมื่อดำเนินการแมชชีนเลิร์นนิง และการวิเคราะห์แบบโต้ตอบ
ความแตกต่างที่สำคัญ: Apache Spark เทียบกับ Apache Hadoop
นอกเหนือจากความแตกต่างในการออกแบบของ Spark และ Hadoop MapReduce แล้ว องค์กรหลายแห่งยังพบว่าเฟรมเวิร์ก Big Data เหล่านี้เป็นสิ่งเสริม โดยใช้ร่วมกันเพื่อแก้ปัญหาความท้าทายทางธุรกิจที่กว้างขึ้น
Hadoop เป็นเฟรมเวิร์กโอเพนซอร์สที่มี Hadoop Distributed File System (HDFS) เป็นพื้นที่เก็บข้อมูล YARN เป็นวิธีการจัดการทรัพยากรการประมวลผลที่ใช้โดยแอปพลิเคชันต่าง ๆ และการใช้แบบจำลองการเขียนโปรแกรม MapReduce เป็นเอ็นจิ้นการดำเนินการ ในการใช้งาน Hadoop ทั่วไป ระบบปฏิบัติการต่างๆ จะถูกนำมาใช้ เช่น Spark, Tez และ Presto
Spark เป็นเฟรมเวิร์กโอเพนซอร์สที่เน้นไปที่การสืบค้นแบบโต้ตอบ แมชชีนเลิร์นนิง และเวิร์กโหลดแบบเรียลไทม์ ไม่มีระบบจัดเก็บข้อมูลของตัวเอง แต่ดำเนินการวิเคราะห์ในระบบจัดเก็บข้อมูลอื่น ๆ เช่น HDFS หรือร้านค้ายอดนิยมอื่น ๆ เช่น Amazon Redshift, Amazon S3, Couchbase, Cassandra และอื่น ๆ Spark บน Hadoop ใช้ประโยชน์จาก YARN เพื่อแบ่งปันคลัสเตอร์และชุดข้อมูลร่วมกับเอ็นจิ้น Hadoop อื่น ๆ เพื่อให้มั่นใจในระดับการบริการและการตอบสนองที่สม่ำเสมอ
ประโยชน์ของ Apache Spark มีอะไรบ้าง
Apache Spark มีประโยชน์มากมายที่จะทำให้เป็นหนึ่งในโครงการที่มีความเคลื่อนไหวมากที่สุดในระบบนิเวศ Hadoop ซึ่งรวมถึง
รวดเร็ว
Spark สามารถใช้แคชแบบใช้หน่วยความจำและการสืบค้นแบบเพิ่มประสิทธิภาพเพื่อการสืบค้นเชิงวิเคราะห์กับข้อมูลทุกขนาดอย่างรวดเร็ว
เป็นมิตรกับนักพัฒนา
Apache Spark รองรับ Java, Scala, R และ Python ซึ่งช่วยให้คุณมีรูปแบบภาษาต่าง ๆ มากมายสำหรับสรรค์สร้างแอปพลิเคชัน API เหล่านี้ทำให้ง่ายสำหรับนักพัฒนาของคุณเนื่องจากซ่อนความซับซ้อนของการประมวลผลแบบกระจายอยู่เบื้องหลังผู้ปฏิบัติงานระดับสูงที่เรียบง่ายซึ่งช่วยลดปริมาณโค้ดที่ต้องการลงอย่างมาก
เวิร์กโหลดหลายรายการ
Apache Spark มาพร้อมกับความสามารถในการเรียกใช้เวิร์กโหลดหลายรายการ รวมถึงการสืบค้นแบบโต้ตอบ การวิเคราะห์แบบเรียลไทม์ แมชชีนเลิร์นนิง และการประมวลผลกราฟ แอปพลิเคชันเดียวสามารถรวมเวิร์กโหลดหลายรายการได้อย่างราบรื่น
เวิร์กโหลดของ Apache Spark คืออะไร
กรอบการทำงานของ Spark ประกอบด้วย:
- Spark Core เป็นรากฐานสำหรับแพลตฟอร์ม
- Spark SQL สำหรับการสืบค้นแบบโต้ตอบ
- Spark Streaming สำหรับการวิเคราะห์แบบเรียลไทม์
- Spark MLlib สำหรับแมชชีนเลิร์นนิง
- Spark GraphX สำหรับการประมวลผลกราฟ
Spark Core
Spark Core เป็นรากฐานของแพลตฟอร์ม มีหน้าที่รับผิดชอบในการจัดการหน่วยความจำการกู้คืนข้อผิดพลาด การจัดกำหนดการ การกระจายและตรวจสอบงาน และการโต้ตอบกับระบบจัดเก็บข้อมูล Spark Core เข้าใช้งานได้ผ่านส่วนต่อประสานโปรแกรมประยุกต์ (API) ที่สร้างขึ้นสำหรับ Java, Scala, Python และ R API เหล่านี้ซ่อนความซับซ้อนของการประมวลผลแบบกระจายเบื้องหลังการดำเนินการระดับสูงที่เรียบง่าย
MLlib
แมชชีนเลิร์นนิง
Spark ประกอบด้วย MLlib ซึ่งเป็นห้องสมุดอัลกอริทึมในแมชชีนเลิร์นนิงบนข้อมูลที่ปรับขนาดได้ โมเดลแมชชีนเลิร์นนิงสามารถได้รับการฝึกอบรมโดยนักวิทยาศาสตร์ข้อมูลด้วย R หรือ Python บนแหล่งข้อมูล Hadoop ใดก็ได้ บันทึกโดยใช้ MLlib และนำเข้าไปยังไปป์ไลน์ที่ใช้ Java หรือ Scala Spark ได้รับการออกแบบมาสำหรับการคำนวณแบบโต้ตอบที่รวดเร็วซึ่งทำงานในหน่วยความจำ ทำให้แมชชีนเลิร์นนิงทำงานได้อย่างรวดเร็ว อัลกอริทึมประกอบด้วยความสามารถในการจำแนกประเภท รีเกรสชัน การคลัสเตอร์ การกรองการทำงานร่วมกัน และการขุดรูปแบบ
Spark Streaming
แบบเรียลไทม์
Spark Streaming เป็นโซลูชันแบบเรียลไทม์ที่ใช้ประโยชน์จากความสามารถในการจัดตารางเวลาที่รวดเร็วของ Spark Core เพื่อทำการวิเคราะห์สตรีมมิ่ง โดยจะรับข้อมูลในชุดขนาดเล็กและเปิดใช้งานการวิเคราะห์ข้อมูลนั้นด้วยรหัสแอปพลิเคชันเดียวกันที่เขียนสำหรับการวิเคราะห์แบทช์ สิ่งนี้ช่วยเพิ่มประสิทธิภาพการทำงานของนักพัฒนา เนื่องจากพวกเขาสามารถใช้รหัสเดียวกันสำหรับการประมวลผลแบบแบทช์และสำหรับแอปพลิเคชันสตรีมแบบเรียลไทม์ Spark Streaming รองรับข้อมูลจาก Twitter, Kafka, Flume, HDFS และ ZeroMQ และข้อมูลอื่น ๆ อีกมากมายที่พบจากระบบนิเวศของ Spark Packages
Spark SQL
การสืบค้นเชิงโต้ตอบ
Spark SQL เป็นเครื่องมือสืบค้นแบบกระจายที่ให้การสืบค้นแบบโต้ตอบที่มีความแฝงต่ำเร็วกว่า MapReduce ถึง 100 เท่า ประกอบด้วยเครื่องมือเพิ่มประสิทธิภาพตามต้นทุน พื้นที่เก็บข้อมูลแบบคอลัมน์ และการสร้างโค้ดสำหรับการสืบค้นที่รวดเร็ว ในขณะที่ปรับขนาดไปยังโหนดหลายพันโหนด นักวิเคราะห์ธุรกิจสามารถใช้ SQL มาตรฐานหรือ Hive Query Language สำหรับการสืบค้นข้อมูล นักพัฒนาสามารถใช้ API ที่มีอยู่ใน Scala, Java, Python และ R รองรับแหล่งที่มาของข้อมูลต่าง ๆ นอกระบบได้ ซึ่งหมายรวมถึง JDBC, ODBC, JSON, HDFS, Hive, ORC และ Parquet ร้านค้ายอดนิยมอื่น ๆ เช่น Amazon Redshift, Amazon S3, Couchbase, Cassandra, MongoDB, Salesforce.com, Elasticsearch และอื่น ๆ อีกมากมายสามารถพบได้จากระบบนิเวศของ Spark Packages
GraphX
การประมวลผลกราฟ
Spark GraphX เป็นกรอบการประมวลผลกราฟแบบกระจายที่สร้างขึ้นบน Spark GraphX ให้บริการ ETL การวิเคราะห์เชิงสำรวจและการคำนวณกราฟแบบซ้ำเพื่อให้ผู้ใช้สามารถสร้างและแปลงโครงสร้างข้อมูลกราฟได้อย่างโต้ตอบในระดับได้ มาพร้อมกับ API ที่ยืดหยุ่นสูงและอัลกอริทึมกราฟแบบกระจายที่เลือกไว้
กรณีการใช้งานของ Apache Spark มีอะไรบ้าง
Spark เป็นระบบประมวลผลแบบกระจายเอนกประสงค์ที่ใช้สำหรับเวิร์กโหลดของ Big Data โดยปรับใช้ในทุกกรณีการใช้งาน Big Data เพื่อตรวจหารูปแบบและให้ข้อมูลเชิงลึกแบบเรียลไทม์ ตัวอย่างกรณีการใช้งาน ได้แก่:
บริการทางการเงิน
Spark ใช้ในการธนาคารเพื่อทำนายการขาดทุนของลูกค้า และแนะนำผลิตภัณฑ์ทางการเงินใหม่ ในธนาคารเพื่อการลงทุน Spark ใช้ในการวิเคราะห์ราคาหุ้นเพื่อทำนายแนวโน้มในอนาคต
การดูแลสุขภาพ
Spark ใช้เพื่อสร้างการดูแลผู้ป่วยที่ครอบคลุม โดยทำให้ข้อมูลพร้อมใช้งานให้กับพนักงานสุขภาพระดับแนวหน้าสำหรับการโต้ตอบของผู้ป่วยทุกคน Spark ยังสามารถใช้เพื่อทำนาย/แนะนำการรักษาผู้ป่วย
การผลิต
Spark ใช้เพื่อขจัดเวลาหยุดทำงานของอุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ตโดยแนะนำเมื่อใดควรทำการบำรุงรักษาเชิงป้องกัน
การค้าปลีก
Spark ใช้เพื่อดึงดูดและรักษาลูกค้าผ่านบริการและข้อเสนอส่วนบุคคล
การปรับใช้ Apache Spark ในระบบคลาวด์ทำงานอย่างไร
Spark คือเวิร์กโหลดที่เหมาะสมที่สุดสำหรับการปรับใช้ในระบบคลาวด์ เนื่องจากระบบคลาวด์จะมอบประสิทธิภาพ ความสามารถในการปรับขนาด ความเสถียร ความพร้อมใช้งาน ชุดเครื่องมือการวิเคราะห์ต่าง ๆ และการประหยัดต่อขนาดในปริมาณมากได้ การวิจัย ESG พบว่า 43% ของผู้ตอบแบบสอบถามพิจารณาว่าระบบคลาวด์เป็นระบบหลักที่ปรับใช้สำหรับ Spark เหตุผลหลักที่ลูกค้ารู้สึกว่าระบบคลาวด์เป็นจุดเด่นของ Spark คือ ใช้เวลาน้อยกว่าในการปรับใช้ ความพร้อมให้บริการที่ดีกว่า การอัปเดตคุณสมบัติ/ฟังก์ชันที่บ่อยกว่า ความยืนหยุดที่มากขึ้น การครอบคลุมทางภูมิศาสตร์ที่มากกว่า และต้นทุนที่เชื่อมโยงกับการใช้งานจริง
ข้อเสนอ AWS สำหรับ Apache Spark มีอะไรบ้าง
Amazon EMR เป็นสถานที่ที่ดีที่สุดในการปรับใช้ Apache Spark ในระบบคลาวด์เนื่องจากผสมผสานการรวมและการทดสอบความเข้มงวดของการกระจาย Hadoop และ Spark เชิงพาณิชย์เข้ากับการปรับขนาด ความเรียบง่าย และคุ้มค่าของระบบคลาวด์ ช่วยให้คุณสามารถเปิดตัวคลัสเตอร์ Spark ได้ในไม่กี่นาทีโดยไม่จำเป็นต้องจัดเตรียมโหนด การตั้งค่าคลัสเตอร์ การกำหนดค่า Spark หรือการปรับแต่งคลัสเตอร์ EMR ช่วยให้คุณสามารถจัดเตรียมอินสแตนซ์คำนวณจำนวนหนึ่งร้อยหรือหลายพันอินสแตนซ์ในเวลาไม่กี่นาที คุณสามารถใช้การปรับขนาดอัตโนมัติเพื่อให้ EMR ปรับขนาดคลัสเตอร์ Spark ของคุณโดยอัตโนมัติเพื่อประมวลผลข้อมูลขนาดใดก็ได้ และกลับลงเมื่องานของคุณเสร็จสิ้นเพื่อหลีกเลี่ยงการจ่ายค่าความจุที่ไม่ได้ใช้ คุณสามารถลดค่าใช้จ่ายของคุณได้โดยยอมรับตามเงื่อนไขที่กำหนด และประหยัดสูงสุด 75% โดยใช้ Amazon EC2 Reserved Instances หรือเรียกใช้คลัสเตอร์ของคุณด้วยความจุในการคำนวณ AWS สำรองและประหยัดสูงสุด 90% โดยใช้ EC2 Spot
เริ่มต้นใช้งาน API บน AWS ด้วยการสร้างบัญชีวันนี้