บทช่วยสอน Apache Spark สำหรับผู้เริ่มต้น: เรียนรู้ Apache Spark ด้วยตัวอย่าง

เผยแพร่แล้ว: 2020-03-26

สารบัญ

บทนำ

ข้อมูลมีอยู่ทุกหนทุกแห่ง ตั้งแต่บันทึกของลูกค้าของบริษัทสตาร์ทอัพรายเล็กๆ ไปจนถึงเอกสารทางการเงินของบริษัทข้ามชาติขนาดใหญ่ บริษัทต่างๆ ใช้ข้อมูลที่สร้างขึ้นนี้เพื่อทำความเข้าใจว่าธุรกิจของตนดำเนินการอย่างไรและจะปรับปรุงได้ที่ใด Peter Sondergaard รองประธานอาวุโสของ Gartner Research กล่าวว่าข้อมูลคือน้ำมันสำหรับ ศตวรรษที่ 21 และการวิเคราะห์ถือได้ว่าเป็นเครื่องยนต์สันดาป

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

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

เราจะเข้าไปดูรายละเอียดของซอฟต์แวร์ผ่านการ แนะนำ Apache Spark .

Apache Spark คืออะไร?

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

การพัฒนา Apache Spark เริ่มต้นจากโครงการวิจัยโอเพ่นซอร์สที่ AMPlab ของ UC Berkeley โดย Matei Zaharia ซึ่ง ถือเป็นผู้ก่อตั้ง Spark ในปี 2010 ภายใต้ใบอนุญาต BSD โครงการนี้เป็นโอเพ่นซอร์ส ต่อมาได้กลายเป็นโครงการบ่มเพาะภายใต้ Apache Software Foundation ในปี 2556 และกลายเป็นหนึ่งในโครงการชั้นนำของบริษัทในปี 2557

ในปี 2015 Spark มีผู้ร่วมสนับสนุนโครงการมากกว่า 1,000 ราย สิ่งนี้ทำให้เป็นหนึ่งในโครงการที่มีการใช้งานมากที่สุดใน Apache Software Foundation และในโลกของข้อมูลขนาดใหญ่ บริษัทกว่า 200 แห่งสนับสนุนโครงการนี้ตั้งแต่ปี 2552

แต่ทำไมความบ้าคลั่งทั้งหมดนี้เหนือ Spark?

เนื่องจาก Spark มีความสามารถในการจัดการข้อมูลจำนวนมากและประมวลผลในแต่ละครั้ง ข้อมูลนี้สามารถแจกจ่ายผ่านเซิร์ฟเวอร์เสมือนหรือเซิร์ฟเวอร์จริงที่เชื่อมต่ออยู่หลายพันเครื่อง มีชุด API และไลบรารีจำนวนมากที่ทำงานร่วมกับภาษาโปรแกรมต่างๆ เช่น Python, R, Scala และ Java รองรับการสตรีมข้อมูล งานที่ซับซ้อน เช่น การประมวลผลกราฟ และการเรียนรู้ของเครื่อง นอกจากนี้คุณสมบัติที่เปลี่ยนเกมของ apache spark ทำให้ความต้องการสูงขึ้น

รองรับฐานข้อมูลที่หลากหลาย เช่น ฐานข้อมูล HDFS ของ Hadoop, Amazon S3 และ NoSQL เช่น MongoDB, Apache HBase, ฐานข้อมูล MapR และ Apache Cassandra นอกจากนี้ยังรองรับ Apache Kafka และ MapR Event Store

สถาปัตยกรรม Apache Spark

หลังจากสำรวจการแนะนำ Apache Spark แล้ว ตอนนี้เราจะเรียนรู้เกี่ยวกับโครงสร้างของมัน เรียนรู้เพิ่มเติมเกี่ยวกับสถาปัตยกรรม Apache

สถาปัตยกรรมมีความชัดเจนและมีองค์ประกอบหลักสองประการ:

ชุดข้อมูลที่กระจายอย่างยืดหยุ่น (RDD)

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

Spark รองรับ RDD สองประเภท:

  • ชุดข้อมูล Hadoop ที่สร้างจากไฟล์บน HDFS (ระบบไฟล์กระจาย Hadoop)
  • คอลเล็กชันแบบขนานตามคอลเล็กชัน Scala

RDD สามารถใช้สำหรับการดำเนินการสองประเภท ได้แก่:

  • การแปลงรูปแบบ – การดำเนินการเหล่านี้ใช้สำหรับสร้าง RDDs
  • การดำเนินการ – ใช้สำหรับสั่งให้ Spark ทำการคำนวณและส่งคืนผลลัพธ์ไปยังไดรเวอร์ เราจะเรียนรู้เพิ่มเติมเกี่ยวกับไดรเวอร์ในหัวข้อต่อไป

DAG (กราฟ Acyclic แบบกำกับทิศทาง)

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

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

สถาปัตยกรรมนี้ทำงานอย่างไร? ให้เราดู.

สถาปัตยกรรม Apache Spark มี ดีมอนหลักสองตัวและ ตัว จัดการคลัสเตอร์ เหล่านี้คือ – master และ worker daemon daemon คือโปรแกรมที่ทำงานเป็นกระบวนการพื้นหลัง คลัสเตอร์ใน Spark สามารถมีทาสได้มากมาย แต่มีมาสเตอร์ดีมอนเพียงตัวเดียว

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

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

Apache Spark: ประโยชน์

นี่คือ ข้อดีของการใช้ Apache Spark :

ความเร็ว

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

การจัดการกับภาระงานหลายอย่าง

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

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

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

รองรับภาษา

Spark เป็นที่ชื่นชอบของนักพัฒนาเนื่องจากรองรับภาษาการเขียนโปรแกรมหลายภาษา เช่น Java, Python, Scala และ R ซึ่งให้ตัวเลือกมากมายสำหรับการพัฒนาแอปพลิเคชันของคุณ API ยังเป็นมิตรกับนักพัฒนามาก เนื่องจากช่วยซ่อนเทคโนโลยีการประมวลผลแบบกระจายที่ซับซ้อนซึ่งอยู่เบื้องหลังโอเปอเรเตอร์ระดับสูงที่ช่วยลดจำนวนโค้ดที่ต้องการ

ประสิทธิภาพ

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

การประเมินแบบขี้เกียจจะเพิ่มความเร็วของระบบและประสิทธิภาพของระบบ

การสนับสนุนจากชุมชน

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

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

สตรีมมิ่งแบบเรียลไทม์

Spark มีชื่อเสียงในการ สตรีมข้อมูล แบบ เรียลไทม์ สิ่งนี้เกิดขึ้นได้ผ่าน Spark Streaming ซึ่งเป็นส่วนขยายของ Core Spark API ซึ่งช่วยให้นักวิทยาศาสตร์ข้อมูลสามารถจัดการข้อมูลแบบเรียลไทม์จากแหล่งต่างๆ เช่น Amazon Kinesis และ Kafka ข้อมูลที่ประมวลผลแล้วสามารถถ่ายโอนไปยังฐานข้อมูล ระบบไฟล์ และแดชบอร์ดได้

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

แอพพลิเคชั่นของ Apache Spark

หลังจาก แนะนำ Apache Spark และประโยชน์ของมัน แล้ว เราจะเรียนรู้เพิ่มเติมเกี่ยวกับแอปพลิเคชันต่างๆ:

การเรียนรู้ของเครื่อง

ความสามารถของ Apache Spark ในการจัดเก็บข้อมูลในหน่วยความจำและดำเนินการค้นหาซ้ำๆ ทำให้เป็นตัวเลือกที่ดีสำหรับการฝึกอัลกอริทึม ML ทั้งนี้เนื่องจากการเรียกใช้แบบสอบถามที่คล้ายกันซ้ำๆ จะช่วยลดเวลาที่ต้องใช้ในการกำหนดวิธีแก้ปัญหาที่ดีที่สุด

Machine Learning Library (MLlib) ของ Spark สามารถดำเนินการวิเคราะห์ขั้นสูงได้ เช่น การวิเคราะห์เชิงคาดการณ์ การจัดประเภท การวิเคราะห์ความรู้สึก การจัดกลุ่ม และการลดขนาด

การรวมข้อมูล

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

การวิเคราะห์เชิงโต้ตอบ

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

คอมพิวเตอร์หมอก

เรารู้ว่า IoT (Internet of Things) เกี่ยวข้องกับข้อมูลจำนวนมากที่เพิ่มขึ้นจากอุปกรณ์ต่างๆ ที่มีเซ็นเซอร์ สิ่งนี้จะสร้างเครือข่ายของอุปกรณ์และผู้ใช้ที่เชื่อมต่อถึงกัน แต่เมื่อเครือข่าย IoT เริ่มขยายตัว จำเป็นต้องมีระบบการประมวลผลแบบขนานแบบกระจาย

ดังนั้นการประมวลผลข้อมูลและการจัดเก็บข้อมูลแบบกระจายศูนย์จึงทำได้ผ่าน Fog Computing พร้อมกับ Spark ด้วยเหตุนี้ Spark จึงนำเสนอส่วนประกอบที่ทรงพลัง เช่น Spark Streaming, GraphX ​​และ MLlib เรียนรู้เพิ่มเติมเกี่ยวกับแอปพลิเคชันของ apache spark

บทสรุป

เราได้เรียนรู้ว่า Apache Spark นั้นรวดเร็ว มีประสิทธิภาพ และเต็มไปด้วยคุณสมบัติ นั่นคือเหตุผลที่บริษัทต่างๆ เช่น Huawei, Baidu, IBM, JP Morgan Chase, Lockheed Martin และ Microsoft ใช้สิ่งนี้เพื่อเร่งธุรกิจของพวกเขา ปัจจุบันมีชื่อเสียงในด้านต่างๆ เช่น การค้าปลีก ธุรกิจ บริการทางการเงิน การจัดการด้านสุขภาพ และการผลิต

ในขณะที่โลกพึ่งพาข้อมูลมากขึ้น Apache Spark จะยังคงเป็นเครื่องมือสำคัญสำหรับการประมวลผลข้อมูลในอนาคต

หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับ Big Data โปรดดูที่ PG Diploma in Software Development Specialization in Big Data program ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 7 กรณี ครอบคลุมภาษาและเครื่องมือในการเขียนโปรแกรม 14 รายการ เวิร์กช็อป ความช่วยเหลือด้านการเรียนรู้และจัดหางานอย่างเข้มงวดมากกว่า 400 ชั่วโมงกับบริษัทชั้นนำ

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

เป็นผู้นำการปฏิวัติเทคโนโลยีที่ขับเคลื่อนด้วยข้อมูล

การเรียนรู้มากกว่า 400 ชั่วโมง 14 ภาษาและเครื่องมือ สถานะศิษย์เก่า IIIT-B
โปรแกรมประกาศนียบัตรขั้นสูงด้าน Big Data จาก IIIT Bangalore