บทช่วยสอน Apache Oozie: คืออะไร เวิร์กโฟลว์ ตัวอย่าง – Hadoop
OOZIE คืออะไร?
Apache Oozie เป็นตัวกำหนดเวลาเวิร์กโฟลว์สำหรับ Hadoop เป็นระบบที่รันเวิร์กโฟลว์ของงานที่ขึ้นต่อกัน ที่นี่ผู้ใช้ได้รับอนุญาตให้สร้าง กำกับกราฟ Acyclic ของเวิร์กโฟลว์ซึ่งสามารถทำงานแบบขนานและต่อเนื่องกันใน Hadoop
ประกอบด้วยสองส่วน:
-
เอ็นจิ้นเวิร์กโฟลว์: ความรับผิดชอบของเอ็นจิ้นเวิร์กโฟลว์คือการจัดเก็บและรันเวิร์กโฟลว์ที่ประกอบด้วยงาน Hadoop เช่น MapReduce, Pig, Hive
- เครื่องยนต์ประสานงาน: รันงานเวิร์กโฟลว์ตามกำหนดการที่กำหนดไว้ล่วงหน้าและความพร้อมใช้งานของข้อมูล
Oozie สามารถปรับขนาดได้และสามารถจัดการการดำเนินการเวิร์กโฟลว์นับพัน (แต่ละเวิร์กโฟลว์ประกอบด้วยงานหลายสิบงาน) ในคลัสเตอร์ Hadoop ได้ทันเวลา
Oozie มีความยืดหยุ่นมากเช่นกัน เราสามารถเริ่ม หยุด ระงับ และรันงานใหม่ได้อย่างง่ายดาย Oozie ทำให้การรันเวิร์กโฟลว์ที่ล้มเหลวอีกครั้งเป็นเรื่องง่ายมาก เราสามารถเข้าใจได้อย่างง่ายดายว่าการติดตามงานที่พลาดหรือล้มเหลวเนื่องจากการหยุดทำงานหรือความล้มเหลวนั้นเป็นเรื่องยากเพียงใด แม้กระทั่งสามารถข้ามโหนดที่ล้มเหลวเฉพาะได้
OOZIE ทำงานอย่างไร?
Oozie ทำงานเป็นบริการในคลัสเตอร์ และไคลเอนต์จะส่งคำจำกัดความของเวิร์กโฟลว์เพื่อประมวลผลทันทีหรือในภายหลัง
ขั้นตอนการทำงานของ Oozie ประกอบด้วย โหนดการกระทำ และ โหนดควบคุมการไหล.
An โหนดการกระทำ แสดงถึงงานเวิร์กโฟลว์ เช่น การย้ายไฟล์ไปยัง HDFS การเรียกใช้ MapReduce, Pig หรือ รัง งานนำเข้าข้อมูลโดยใช้ Sqoop หรือการรันเชลล์สคริปต์ของโปรแกรมที่เขียน Java.
A โหนดควบคุมการไหล ควบคุมการดำเนินการเวิร์กโฟลว์ระหว่างการดำเนินการโดยอนุญาตให้มีการสร้างโครงสร้าง เช่น ตรรกะแบบมีเงื่อนไข โดยที่สามารถติดตามสาขาต่าง ๆ ได้ ขึ้นอยู่กับผลลัพธ์ของโหนดการดำเนินการก่อนหน้านี้
เริ่มโหนด, โหนดสิ้นสุดและ โหนดข้อผิดพลาด อยู่ในหมวดหมู่ของโหนดนี้
เริ่มโหนด กำหนดจุดเริ่มต้นของงานเวิร์กโฟลว์
โหนดสิ้นสุด ส่งสัญญาณสิ้นสุดงาน
โหนดข้อผิดพลาด กำหนดการเกิดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องที่จะพิมพ์
เมื่อสิ้นสุดการดำเนินการเวิร์กโฟลว์ Oozie จะใช้การโทรกลับ HTTP เพื่ออัปเดตไคลเอ็นต์ด้วยสถานะเวิร์กโฟลว์ การเข้าหรือออกจากโหนดการกระทำอาจทำให้เกิดการโทรกลับ
ตัวอย่างไดอะแกรมเวิร์กโฟลว์
จัดทำแพ็กเกจและการปรับใช้แอปพลิเคชันเวิร์กโฟลว์ Oozie
แอปพลิเคชันเวิร์กโฟลว์ประกอบด้วยคำจำกัดความของเวิร์กโฟลว์และทรัพยากรที่เกี่ยวข้องทั้งหมด เช่น ไฟล์ Jar ของ MapReduce สคริปต์ Pig เป็นต้น แอปพลิเคชันต้องปฏิบัติตามโครงสร้างไดเร็กทอรีที่เรียบง่ายและปรับใช้ เอชดีเอฟเอส เพื่อให้ Oozie สามารถเข้าถึงได้
โครงสร้างไดเร็กทอรีตัวอย่างแสดงอยู่ด้านล่าง -
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
จำเป็นต้องเก็บ workflow.xml (ไฟล์ข้อกำหนดเวิร์กโฟลว์) ไว้ในไดเร็กทอรีระดับบนสุด (ไดเร็กทอรีพาเรนต์ที่มีชื่อเวิร์กโฟลว์) ไดเรกทอรี Lib มีไฟล์ Jar ที่มีคลาส MapReduce แอปพลิเคชันเวิร์กโฟลว์ที่สอดคล้องกับเค้าโครงนี้สามารถสร้างได้ด้วยเครื่องมือสร้างใดๆ เช่น Ant หรือ Maven
บิลด์ดังกล่าวจำเป็นต้องคัดลอกไปยัง HDFS โดยใช้คำสั่ง เช่น –
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
ขั้นตอนในการรันงานเวิร์กโฟลว์ Oozie
ในส่วนนี้ เราจะดูวิธีการรันงานเวิร์กโฟลว์ เพื่อดำเนินการนี้ เราจะใช้เครื่องมือบรรทัดคำสั่ง Oozie (โปรแกรมไคลเอนต์ที่สื่อสารกับเซิร์ฟเวอร์ Oozie)
1. ส่งออกตัวแปรสภาพแวดล้อม OOZIE_URL ซึ่งบอกคำสั่ง oozie ว่าเซิร์ฟเวอร์ Oozie ใดที่จะใช้ (ที่นี่เราใช้ตัวแปรที่ทำงานอยู่ในเครื่อง):
% export OOZIE_URL="http://localhost:11000/oozie"
2. รันงานเวิร์กโฟลว์โดยใช้-
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
ตัวเลือก -config อ้างถึงท้องถิ่น Java ไฟล์คุณสมบัติที่มีคำจำกัดความสำหรับพารามิเตอร์ในไฟล์ XML เวิร์กโฟลว์ รวมถึง oozie.wf.application.path ซึ่งบอก Oozie ถึงตำแหน่งของแอปพลิเคชันเวิร์กโฟลว์ใน HDFS
เนื้อหาของไฟล์คุณสมบัติตัวอย่าง:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. รับสถานะของงานเวิร์กโฟลว์-
สถานะของงานเวิร์กโฟลว์สามารถดูได้โดยใช้คำสั่งย่อย 'งาน' พร้อมด้วยอ็อพชัน '-info' และการระบุ id งานหลัง '-info'
e.g., % oozie job -info <job id>
เอาต์พุตแสดงสถานะเป็น RUNNING, KILLED หรือ SUCCEEDED
4. ผลลัพธ์ของการดำเนินการเวิร์กโฟลว์ที่ประสบความสำเร็จสามารถดูได้โดยใช้คำสั่ง Hadoop เช่น
% hadoop fs -cat <location of result>
ทำไมต้องใช้ Oozie?
วัตถุประสงค์หลักของการใช้ Oozie คือเพื่อจัดการงานประเภทต่างๆ ที่กำลังประมวลผลในระบบ Hadoop
การขึ้นต่อกันระหว่างงานจะถูกระบุโดยผู้ใช้ในรูปแบบของ Directed Acyclic Graphs Oozie ใช้ข้อมูลนี้และดูแลการดำเนินการตามลำดับที่ถูกต้องตามที่ระบุไว้ในเวิร์กโฟลว์ วิธีนี้จะช่วยประหยัดเวลาของผู้ใช้ในการจัดการเวิร์กโฟลว์ทั้งหมด นอกจากนี้ Oozie ยังมีข้อกำหนดในการระบุความถี่ในการปฏิบัติงานโดยเฉพาะ
คุณสมบัติของ Oozie
- Oozie มีไคลเอ็นต์ API และอินเทอร์เฟซบรรทัดคำสั่งซึ่งสามารถใช้เพื่อเรียกใช้ ควบคุม และตรวจสอบงานได้ Java แอพลิเคชัน
- การใช้ Web Service API ทำให้สามารถควบคุมงานได้จากทุกที่
- Oozie มีข้อกำหนดในการดำเนินงานซึ่งมีกำหนดให้ดำเนินการเป็นระยะ
- Oozie มีระบบส่งการแจ้งเตือนทางอีเมลเมื่องานเสร็จสมบูรณ์