ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับ Apache Storm

เผยแพร่แล้ว: 2018-02-20

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

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

เมื่อพิจารณาถึงคุณค่าของข้อมูลแบบเรียลไทม์ องค์กรต่างๆ ก็เริ่มสร้างเครื่องมือวิเคราะห์ข้อมูลแบบเรียลไทม์ต่างๆ ในบทความนี้ เราจะมาพูดถึงหนึ่งในนั้น – Apache Storm เราจะมาดูกันว่ามันคืออะไร สถาปัตยกรรมของแอปพลิเคชั่นพายุทั่วไป มันเป็นองค์ประกอบหลัก (หรือที่เรียกว่านามธรรม) และกรณีการใช้งานจริงของมัน

ไปกันเถอะ!

สารบัญ

Apache Storm คืออะไร?

Apache Storm
Apache Storm – เผยแพร่โดย Twitter เป็นเฟรมเวิร์กโอเพนซอร์ซแบบกระจายที่ช่วยในการประมวลผลข้อมูลแบบเรียลไทม์ Apache Storm ทำงานสำหรับข้อมูลแบบเรียลไทม์ เช่นเดียวกับ Hadoop ทำงานสำหรับการประมวลผลข้อมูลแบบกลุ่ม (การประมวลผลแบบกลุ่มจะตรงกันข้ามกับแบบเรียลไทม์ ในที่นี้ ข้อมูลจะถูกแบ่งออกเป็นกลุ่ม และแต่ละกลุ่มจะได้รับการประมวลผล ซึ่งไม่ได้ทำจริง -เวลา.)

Apache Storm ไม่มีความสามารถในการจัดการสถานะและอาศัย Apache ZooKeeper (บริการส่วนกลางสำหรับจัดการการกำหนดค่าในแอปพลิเคชัน Big Data) เพื่อจัดการสถานะคลัสเตอร์ เช่น การรับรู้ข้อความ สถานะการประมวลผล และข้อความอื่นๆ Apache Storm มีแอพพลิเคชั่นที่ออกแบบในรูปแบบของกราฟอะไซคลิกโดยตรง เป็นที่รู้จักสำหรับการประมวลผลมากกว่าหนึ่งล้านทูเพิลต่อวินาทีต่อโหนด ซึ่งสามารถปรับขนาดได้สูงและให้การรับประกันงานในการประมวลผล Storm เขียนด้วย Clojure ซึ่งเป็นภาษาการเขียนโปรแกรมที่เน้นการทำงานแบบ Lisp

หัวใจของ Apache Storm คือ "คำจำกัดความของ Thrift" สำหรับการกำหนดและส่งกราฟลอจิก (หรือที่เรียกว่าโทโพโลยี) เนื่องจาก Thrift สามารถใช้งานได้ในภาษาใดก็ได้ที่คุณเลือก โทโพโลยีก็สามารถสร้างในภาษาใดก็ได้ สิ่งนี้ทำให้ Storm รองรับหลายภาษา – ทำให้เป็นมิตรกับนักพัฒนามากขึ้น

Storm ทำงานบน YARN และรวมเข้ากับระบบนิเวศ Hadoop ได้อย่างสมบูรณ์แบบ เป็นเฟรมเวิร์กการประมวลผลข้อมูลตามเวลาจริงที่มีการสนับสนุนแบตช์เป็นศูนย์ ใช้สตรีมข้อมูลทั้งหมดเป็น 'เหตุการณ์' ทั้งหมด แทนที่จะแบ่งเป็นกลุ่มย่อยๆ ดังนั้นจึงเหมาะที่สุดสำหรับข้อมูลที่จะนำเข้าเป็นเอนทิตีเดียว

มาดูสถาปัตยกรรมทั่วไปของแอปพลิเคชั่น Storm กันดีกว่า – มันจะทำให้คุณเข้าใจมากขึ้นว่า Storm ทำงานอย่างไร!

Apache Storm: สถาปัตยกรรมทั่วไปและส่วนประกอบที่สำคัญ

Apache Storm
โดยพื้นฐานแล้วมีโหนดสองประเภทที่เกี่ยวข้องกับแอปพลิเคชัน Storm (ดังที่แสดงด้านบน)

  • มาสเตอร์โหนด (บริการ Nimbus)

หากคุณทราบถึงการทำงานภายในของ Hadoop คุณต้องรู้ว่า 'ตัวติดตามงาน' คืออะไร มันเป็นภูตที่ทำงานบนโหนดมาสเตอร์ของ Hadoop และมีหน้าที่รับผิดชอบในการกระจายงานระหว่างโหนด Nimbus เป็นบริการที่คล้ายคลึงกันสำหรับ Storm มันทำงานบน Master Node ของคลัสเตอร์ Storm และรับผิดชอบในการกระจายงานระหว่างโหนดของผู้ปฏิบัติงาน

Nimbus เป็นบริการ Thrift ที่ให้บริการโดย Apache ซึ่งช่วยให้คุณส่งรหัสของคุณในภาษาการเขียนโปรแกรมที่คุณเลือก ซึ่งจะช่วยให้คุณเขียนใบสมัครโดยไม่ต้องเรียนรู้ภาษาใหม่สำหรับ Storm โดยเฉพาะ

ดังที่เราได้กล่าวไว้ก่อนหน้านี้ Storm ขาดความสามารถในการจัดการของรัฐ บริการ Nimbus ต้องพึ่งพา ZooKeeper เพื่อตรวจสอบข้อความที่ส่งโดยโหนดผู้ปฏิบัติงานขณะประมวลผลงาน โหนดผู้ปฏิบัติงานทั้งหมดอัปเดตสถานะงานในบริการ ZooKeeper เพื่อให้ Nimbus ดูและตรวจสอบ

  • โหนดคนงาน (บริการหัวหน้างาน)

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

แอปพลิเคชัน Storm มีองค์ประกอบ/นามธรรมสี่ประการที่รับผิดชอบในการปฏิบัติงานในมือ เหล่านี้คือ:

Apache Storm

  • โทโพโลยี

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

  • ลำธาร

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

  • พวยกา

    ต้นอ่อนเป็นแหล่งกำเนิดของลำธารในทูเปิลสตอร์ม มีหน้าที่ติดต่อกับแหล่งข้อมูลจริง รับข้อมูลอย่างต่อเนื่อง แปลงข้อมูลเหล่านั้นให้เป็นกระแสข้อมูล tuples จริง และส่งไปยังสลักเกลียวเพื่อดำเนินการในที่สุด สามารถเชื่อถือได้หรือไม่น่าเชื่อถือ Spout ที่เชื่อถือได้จะเล่น tuple ซ้ำหาก Storm ไม่สามารถประมวลผล Spout ที่ไม่น่าเชื่อถือได้ ในทางกลับกัน จะลืม Tuple ทันทีหลังจากที่ปล่อยออกไป

  • สายฟ้า

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

ใครใช้สตอร์ม?

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

มาดูผู้เล่นรายใหญ่สองสามรายที่ใช้ Apache Storm และทำอย่างไร!

  • ทวิตเตอร์

โลโก้ทวิตเตอร์
Twitter ใช้ Storm เพื่อขับเคลื่อนระบบที่หลากหลาย ตั้งแต่การปรับแต่งฟีดของคุณ การปรับรายได้ให้เหมาะสม ไปจนถึงการปรับปรุงผลการค้นหา และกระบวนการอื่นๆ เนื่องจาก Twitter พัฒนา Storm (ซึ่งต่อมาถูกซื้อโดย Apache และชื่อ Apache Storm) มันจึงรวมเข้ากับโครงสร้างพื้นฐานที่เหลือของ Twitter ได้อย่างราบรื่น – ระบบฐานข้อมูล (Cassandra, Memcached เป็นต้น) สภาพแวดล้อมการส่งข้อความ (Mesos) และระบบตรวจสอบ .

  • Spotify

โลโก้สปอตไลท์
Spotify ขึ้นชื่อเรื่องการสตรีมเพลงไปยังผู้ใช้งานมากกว่า 50 ล้านคนและสมาชิก 10 ล้านคน มีฟีเจอร์แบบเรียลไทม์มากมาย เช่น การแนะนำเพลง การตรวจสอบ การวิเคราะห์ การกำหนดเป้าหมายโฆษณา และการสร้างเพลย์ลิสต์ เพื่อให้บรรลุความสำเร็จนี้ Spotify ใช้ Apache Storm
Apache Storm ที่ซ้อนทับกับสภาพแวดล้อมการส่งข้อความที่ใช้ Kafka, Memcached และ netty-zmtp ทำให้ Spotify สามารถสร้างระบบกระจายที่ทนทานต่อข้อผิดพลาดที่มีเวลาแฝงต่ำได้อย่างง่ายดาย

เพื่อสรุป…

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

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

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

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

โปรแกรมประกาศนียบัตรขั้นสูงด้าน Big Data จาก IIIT Bangalore