Apache Apex – บทนำ
เผยแพร่แล้ว: 2015-12-29Apache Hadoop ได้กลายเป็นซอฟต์แวร์เฟรมเวิร์กสำหรับการคำนวณที่เชื่อถือได้ ปรับขนาดได้ กระจายและมีขนาดใหญ่ นับตั้งแต่ก่อตั้ง Hadoop เป็นเฟรมเวิร์กตัวเลือกแรกสำหรับการประมวลผลแบบแบตช์ ตั้งแต่ธนาคารขนาดใหญ่ไปจนถึงยักษ์ใหญ่ด้านการค้าปลีกออนไลน์ ทุกคนต่างใช้ Hadoop สำหรับการสร้างรายงานตามระยะเวลา การคำนวณ และสำหรับกรณีการใช้งานอื่นๆ อีกมากมาย โดยปกติ กรณีการใช้งานเหล่านี้เป็นกระบวนการแบบกลุ่มและต้องใช้เวลาสองสามชั่วโมงก่อนที่เราจะเข้าใจข้อมูล โลกที่รวดเร็วในปัจจุบันต้องการความหมายหรือการกระทำจากข้อมูลดิบเกือบจะในเวลาที่สร้าง สิ่งนี้นำไปสู่แนวคิดของการประมวลผลแบบสตรีม แม้ว่า Hadoop เดิมจะไม่ถือว่าเหมาะสำหรับการประมวลผลแบบสตรีม แต่การประดิษฐ์ YARN (Hadoop 2.0) ได้ทำให้มันเป็นตัวเลือกที่ดีสำหรับมัน ขณะนี้มีเฟรมเวิร์กการประมวลผลสตรีมหลายแบบในระบบนิเวศ Hadoop และ Apex เป็นเฟรมเวิร์กใหม่ล่าสุดที่เข้าสู่ตลาดที่มีผู้คนหนาแน่นนี้
Apache Apex คืออะไร?
Apache Apex เป็นแพลตฟอร์มที่ใช้ YARN ซึ่งช่วยให้นักพัฒนาแอปพลิเคชันสามารถเขียนแอปพลิเคชันที่เน้นการสตรีมและแอปพลิเคชันแบบแบทช์ ได้รับการออกแบบมาเพื่อประมวลผลข้อมูลที่กำลังเคลื่อนที่ ในรูปแบบการกระจาย ประสิทธิภาพสูง และทนต่อข้อผิดพลาด ไอซิ่งเหนือสิ่งนี้คือ API ที่ใช้งานง่าย ซึ่งช่วยให้ผู้ใช้สามารถเขียนโค้ดจาวาด้วยความรู้ที่จำกัดในการประมวลผลสตรีม
Apex นั้นใช้คุณสมบัติการทำงานและการปฏิบัติงานที่แยกจากกัน แทนที่จะรวมเข้าด้วยกัน สิ่งนี้ทำให้นักพัฒนาแอปพลิเคชันมุ่งเน้นไปที่การเขียน User Defined Functions โดยไม่ต้องคิดว่าจะทำงานอย่างไรในสภาพแวดล้อมแบบกระจาย
Apache Apex มีไลบรารี่ของฟังก์ชันที่ใช้กันทั่วไปมากมาย สิ่งเหล่านี้ถูกเพิ่มเข้ามาเป็นส่วนหนึ่งของไลบรารี Apache Apex-Malhar ไลบรารีนี้มีตัวดำเนินการเพื่อเข้าถึงระบบไฟล์ ฐานข้อมูล คิวข้อความต่างๆ ชุมชนกำลังเพิ่มตัวดำเนินการในแต่ละวัน ทำให้ชีวิตนักพัฒนาแอปพลิเคชันง่ายขึ้น
บล็อกหลักของ Apache Apex คืออะไร
สถาปัตยกรรมของ Apex นั้นเรียบง่ายมาก Apex มี Malhar ไลบรารีโอเปอเรเตอร์และเอ็นจิ้นหลักที่ใช้งานได้ Core of Apex สามารถอธิบายได้ดังนี้ พวกมันมักถูกเรียกว่ากลุ่มหลักของ Apache Apex
คุณสามารถแยกเลเยอร์ได้อย่างชัดเจนและสามารถดูภาพรวมได้ในจุดที่เหมาะสม ให้เราดูข้อมูลเกี่ยวกับบล็อกเหล่านี้
- StraM ( Str eam A pplication M aster)
Stram เป็น YARN Application Master ความรับผิดชอบรวมถึงการเปิดตัวแอปพลิเคชันสตรีม การจัดสรรทรัพยากร การจัดกำหนดการ DAG แบบลอจิคัล นอกเหนือจากการดำเนินการ YARN แล้ว StraM จะเริ่มต้นตัวดำเนินการ สตรีม Stram ยังรวบรวมสถิติจากลูกๆ - ภาพรวมสถานะ
กรอบการประมวลผลสตรีมไม่สามารถสูญเสียผลลัพธ์ที่ประมวลผลได้ นอกจากนี้ พวกเขาต้องรู้ว่ามีการประมวลผลมากน้อยเพียงใดเพื่อที่จะประมวลผลบันทึกได้อย่างถูกต้องหลังจากกู้คืนจากความล้มเหลว ดังนั้นจุดตรวจสอบจึงมีความสำคัญในการประมวลผลสตรีมเป็นระยะๆ ใน Apex นั้น StraM ติดตามจุดตรวจสอบและที่ขอบเขตของตัวดำเนินการ การตรวจสอบเป็นระยะจะดำเนินการบน HDFS - REST API
Stram เป็นจุดเชื่อมต่อสำหรับ REST API เครื่องมือภายนอกสามารถเข้าถึง REST API นี้และรวมเข้ากับแอปพลิเคชันภายนอกได้ - เครื่องมือ
Apex จัดเตรียม CLI เพื่อเปิดใช้และตรวจสอบแอปพลิเคชัน Apex แม้แต่เราเองก็สามารถสร้างได้ด้วยความช่วยเหลือของ REST API ร่วมกับ CLI แอปพลิเคชันสามารถกำหนดค่าด้วยสคริปต์การกำหนดค่าแบบคงที่สำหรับการเปิดใช้อัตโนมัติ - พาร์ทิชัน
- การปรับเปลี่ยนแบบไดนามิก
- การวิเคราะห์ SLA
Apache Apex ทำการวิเคราะห์ SLA เป็นระยะๆ มันทำการวิเคราะห์เวลาแฝง คอขวด และปริมาณงาน และเพิ่มทรัพยากรมากขึ้นเพื่อให้ตรงตามการกำหนดค่า SLA - ความปลอดภัย
- ความพร้อมใช้งานสูง
Apache Apex ใช้ฟังก์ชันการรีสตาร์ทของ YARN และรีสตาร์ทจากสถานะจุดตรวจสอบล่าสุด - มัลฮาร
Apache Apex –Malhar เป็นไลบรารีของโอเปอเรเตอร์ที่มีโอเปอเรเตอร์มากมาย ตัวดำเนินการเหล่านี้ถูกจัดประเภทเป็น - ตัวดำเนินการอินพุต / เอาต์พุต –
ภายใต้หมวดหมู่นี้ ปัจจุบัน Malhar มีโอเปอเรเตอร์ให้อ่าน/เขียนจาก - ระบบไฟล์
- RDBMS
- ร้านค้า NoSQL
- คิวข้อความ
- ฐานข้อมูลในหน่วยความจำ
- สื่อสังคม
- ตัวดำเนินการคำนวณ –
- การจับคู่รูปแบบ
- สถิติและคณิตศาสตร์
- การเรียนรู้ของเครื่อง
- พาร์เซอร์
- สื่อสังคม
- เซิร์ฟเวอร์บัฟเฟอร์
Apex ให้การแบ่งพาร์ติชั่นตามคีย์และการทำโหลดบาลานซ์แบบไดนามิก แม้แต่ผู้ใช้ก็สามารถกำหนดรูปแบบการแบ่งพาร์ติชั่นของตัวเองได้
Apache Apex มีคุณสมบัติที่มีประโยชน์และไม่เหมือนใครนี้ รองรับการเปลี่ยนแปลง Logical DAG การเปลี่ยนแปลงแผนการดำเนินการทางกายภาพ
เอเพ็กซ์รองรับ Kerberos คลัสเตอร์ Hadoop ที่มีการรักษาความปลอดภัยพื้นฐาน สามารถเข้าถึงด้วยการผสานรวม Kerberos โดยธรรมชาติ
Malhar มีโอเปอเรเตอร์มากมายที่จะช่วยในการนำตรรกะทางธุรกิจไปใช้จริง ห้องสมุดนี้มี
เซิร์ฟเวอร์บัฟเฟอร์อยู่ที่ขอบเขตของตัวดำเนินการแต่ละอัน ในกรณีของข้อมูล เซิร์ฟเวอร์บัฟเฟอร์ตัวดำเนินการในพื้นที่สามารถอยู่หลังสตริงของตัวดำเนินการ จุดประสงค์หลักคือเก็บข้อมูลไว้ที่ขอบชั่วคราวก่อนจะส่งต่อไปยังครั้งต่อไป มีบทบาทสำคัญเมื่อโหนดถูกกู้คืนจากความล้มเหลว เซิร์ฟเวอร์บัฟเฟอร์โหลดข้อมูลจากสถานะจุดตรวจสอบล่าสุดเพื่อเล่นซ้ำ
โมเดลการเขียนโปรแกรม Apex Application คืออะไร?
คุณสมบัตินี้มีเฟรมเวิร์กที่หลากหลายและไลบรารี Malhar ซึ่งหมายความว่านักพัฒนาแอปพลิเคชันจำเป็นต้องเชื่อมต่อตัวดำเนินการและเปิดใช้แอปพลิเคชันเท่านั้น ดังนั้น แอปพลิเคชันของคุณจึงเป็นเพียงลำดับของโอเปอเรเตอร์
นี่คือวิธีที่กรอบงานที่สมบูรณ์ทำให้ชีวิตของนักพัฒนาง่ายขึ้น มาดูกันว่าแอปพลิเคชั่นสาธิตนี้ทำงานอย่างไร
Apache Apex Demo
มาเริ่มกันที่ ' Hello World of Big Data J ' ซึ่งเป็นตัวอย่างการนับจำนวนคำขนาดเล็กโดยใช้ Apache Apex
การตั้งค่า Apache Apex
ในการเรียกใช้การสาธิตนี้ เราต้องกำหนดค่า Apex คุณสามารถติดตั้ง Apache Apex บนคลัสเตอร์ที่มีอยู่ของคุณ หรือมีวิธีง่ายๆ ในการทดลองใช้งาน คุณสามารถดาวน์โหลด Sandbox VM ที่ติดตั้งล่วงหน้าจากเว็บไซต์ DataTorrent ได้จากที่นี่ สำหรับการสาธิตนี้ เราจะใช้ VM ที่ติดตั้งไว้ล่วงหน้า
เกมส์ Apex UI Console
Apex มาพร้อมกับ UI Console ที่ออกแบบอย่างเป็นธรรมชาติและสวยงาม ซึ่งคุณสามารถใช้สำหรับการเรียกใช้ ตรวจสอบ และจัดการแอปพลิเคชัน ประกอบด้วยสถิติต่างๆ เกี่ยวกับส่วนประกอบต่างๆ ที่ปรับใช้
หลังจากคุณดาวน์โหลด sandbox VM แล้ว UnTar แล้วโหลดลงใน VM player ที่คุณชื่นชอบ (ฉันใช้ VMWare VM player) ซอฟต์แวร์และเครื่องมือทั้งหมดที่จำเป็นสำหรับการเรียกใช้ Apex ได้รับการกำหนดค่าแล้วใน VM นี้ และสคริปต์เริ่มต้นทั้งหมดได้รับการกำหนดค่าให้ทำงานเมื่อบูตระบบปฏิบัติการ ดังนั้น เมื่อ VM ของคุณเริ่มทำงาน คุณจะมีอินสแตนซ์ของ Apache Apex ตอนนี้ ในการดูคอนโซล เพียงกด http://locahost:9090 ในเว็บเบราว์เซอร์ที่คุณชื่นชอบและลงชื่อเข้าใช้คอนโซล ชื่อผู้ใช้เริ่มต้น: รหัสผ่านสำหรับแซนด์บ็อกซ์ VM คือ dtadmin: dtadmin คุณจะเห็นคอนโซลดังต่อไปนี้
หน้านี้แสดงภาพรวมโดยสมบูรณ์ของระบบทั้งหมด เช่น การใช้ CPU และหน่วยความจำ แอปพลิเคชัน ประสิทธิภาพ ปัญหา ฯลฯ
ในการปรับใช้แอปพลิเคชัน ไปที่แท็บพัฒนาที่ด้านบนของหน้า
ที่นี่ คุณสามารถปรับใช้แพ็คเกจแอปพลิเคชันของคุณ และสามารถจัดการ tuple schema สำหรับข้อมูลภายใน Apex ได้
Apex ให้คุณมีแอปพลิเคชั่นจำนวนมากซึ่งคุณสามารถดูรายการด้านล่าง:
สาธิตการนับจำนวนคำ
มาเริ่มใช้งานโปรแกรมนับจำนวนคำกัน คุณสามารถทำได้โดยคลิกที่ตัวเลือกการเปิดใช้แอปพลิเคชันถัดจาก DataTorrent Wordcount Demo ถัดไป คุณสามารถระบุแอปพลิเคชันที่แตกต่างจากเดิมและแก้ไขรายละเอียดการกำหนดค่าได้ หากจำเป็น (เราจะไม่ทำเช่นนั้นเนื่องจากค่าเริ่มต้นส่วนใหญ่ทำงานได้ดี เรามาแก้ไขชื่อแอปเป็น "MyWordCountDemo") คุณจะเห็นข้อความแจ้งว่าแอปพลิเคชันถูกปรับใช้เรียบร้อยแล้วโดยมีลิงก์ไปยังแอปพลิเคชัน คลิกที่ลิงค์นั้น
นี้จะเปิดหน้าใหม่ รอสักครู่จนกว่าสถานะแอปพลิเคชันจะเปลี่ยนจาก "ยอมรับ" เป็น "กำลังทำงาน" ตอนนี้คุณจะเห็นหน้าที่เต็มไปด้วยสถิติและข้อมูลต่างๆ ภาพหน้าจอสองภาพถัดไปแสดงภาพพวกเขา
หน้านี้แสดงข้อมูลต่างๆ แก่เรา เช่น มุมมองทางลอจิคัล กายภาพ และเมตริกของแอปพลิเคชัน พร้อมด้วยสถิติของทูเพิล/เรกคอร์ดต่างๆ ซึ่งประมวลผลโดยแอปพลิเคชันทุกวินาที มันแสดงให้เห็นการแสดงกราฟิกของทูเพิลที่ปล่อยออกมาและเวลาแฝง ฯลฯ
คุณสามารถคลิกที่โอเปอเรเตอร์ตรรกะใดๆ ตรวจสอบบันทึก และแม้แต่บันทึกตัวอย่าง มาทำกันสำหรับตัวดำเนินการคอนโซล คลิกที่คอนโซลโอเปอเรเตอร์และคุณจะได้รับข้อมูลโดยละเอียดเกี่ยวกับโอเปอเรเตอร์ดังต่อไปนี้:
จากนั้นเลือกพาร์ติชั่นตัวใดตัวหนึ่งแล้วคลิกบันทึกตัวอย่าง
หลังจากนั้นไม่กี่วินาที คุณจะเห็นสิ่งอันดับ คลิกที่ทูเพิลเพื่อดูเนื้อหา ดังที่คุณเห็นจากเนื้อหา แอปพลิเคชันได้ทำการนับจำนวนคำบนข้อมูลตามหน้าต่าง และมี 2 “ถึง”, 4 “ที่”, 4 “a” ฯลฯ ในทูเพิลอินพุตที่ 0 สำหรับหน้าต่างนี้ ตอนนี้คุณสามารถหยุดแอปพลิเคชันได้โดยคลิกที่ "ปิดเครื่อง" หรือ "ฆ่า" ในหน้าหลักของแอปพลิเคชัน
เพียงเท่านี้ เราก็ปรับใช้และเรียกใช้แอปพลิเคชันนับจำนวนคำได้สำเร็จ
บทสรุป
นั่นคือการแนะนำเครื่องมือสตรีมมิ่งใหม่ - Apache Apex และการรันแอปพลิเคชันใน Apache Apex ที่ประสบความสำเร็จ Apache Apex มีคุณสมบัติเด่นมากมายที่ทำให้ได้เปรียบเหนือกรอบงานอื่นๆ ที่มีอยู่ซึ่งฉันจะกล่าวถึงในโพสต์ต่อๆ ไป