Oozie Tutorial: เรียนรู้วิธีจัดตารางงาน Hadoop ของคุณ



Apache Oozie Tutorial: Oozie เป็นระบบกำหนดการเวิร์กโฟลว์เพื่อจัดการงาน Hadoop เป็นระบบที่ปรับขนาดได้เชื่อถือได้และขยายได้

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

ในบล็อกการสอน Apache Oozie นี้เราจะกล่าวถึง:





  • บทนำ Apache Oozie
  • ขั้นตอนการทำงาน Oozie
  • ผู้ประสานงาน Oozie
  • Oozie Bundle
  • งานเวิร์กโฟลว์การนับจำนวนคำ
  • งานผู้ประสานงานการนับจำนวนคำตามเวลา

เราจะเริ่มบทช่วยสอน Oozie นี้โดยการแนะนำ Apache Oozie จากนั้นเราจะทำความเข้าใจประเภทของงานที่สามารถสร้างและดำเนินการโดยใช้ Apache Oozie

Apache Oozie Tutorial: บทนำสู่ Apache Oozie

Apache Oozie - บทช่วยสอน Oozie - EdurekaApache Oozie เป็นระบบจัดตารางเวลาเพื่อจัดการและดำเนินการงาน Hadoop ในสภาพแวดล้อมแบบกระจาย เราสามารถสร้างไปป์ไลน์ที่ต้องการด้วยการรวมงานประเภทต่างๆ อาจเป็นงาน Hive, Pig, Sqoop หรือ MapReduce ของคุณ การใช้ Apache Oozie คุณสามารถกำหนดเวลางานของคุณได้ ภายในลำดับของงานยังสามารถตั้งโปรแกรมงานสองงานขึ้นไปให้ทำงานคู่ขนานกันได้ เป็นระบบที่ปรับขนาดได้เชื่อถือได้และขยายได้



Oozie เป็นเว็บแอปพลิเคชัน Java แบบโอเพนซอร์สซึ่งมีหน้าที่ทริกเกอร์การดำเนินการเวิร์กโฟลว์ ในทางกลับกันมันใช้เอ็นจิ้นการดำเนินการ Hadoop เพื่อดำเนินการงาน

การเปลี่ยนแปลงที่เชื่อมต่อและไม่เชื่อมต่อใน Informatica

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

มีงานสามประเภทใน Apache Oozie:



  • งาน Oozie Workflow & ลบสิ่งเหล่านี้คือ Directed Acyclic Graphs (DAGs) ซึ่งระบุลำดับของการดำเนินการที่จะดำเนินการ
  • งาน Oozie Coordinator & ลบซึ่งประกอบด้วยงานเวิร์กโฟลว์ที่เรียกใช้ตามเวลาและความพร้อมของข้อมูล
  • กลุ่ม Oozie & ลบสิ่งเหล่านี้สามารถเรียกได้ว่าเป็นชุดของผู้ประสานงานหลายคนและงานเวิร์กโฟลว์

ตอนนี้เรามาทำความเข้าใจงานเหล่านี้ทีละงานกัน

Apache Oozie Tutorial: Oozie Workflow

เวิร์กโฟลว์คือลำดับของการกระทำที่จัดเรียงใน Direct Acyclic Graph (DAG) การดำเนินการขึ้นอยู่กับซึ่งกันและกันเนื่องจากการดำเนินการถัดไปสามารถดำเนินการได้หลังจากผลลัพธ์ของการกระทำปัจจุบันเท่านั้น แอ็คชันเวิร์กโฟลว์อาจเป็นแอ็คชัน Pig, Hive action, MapReduce action, Shell action, Java action เป็นต้นสามารถมีแผนผังการตัดสินใจเพื่อตัดสินใจว่างานควรทำงานอย่างไร

เราสามารถสร้างการดำเนินการประเภทต่างๆตามงานและการดำเนินการแต่ละประเภทสามารถมีแท็กประเภทของตัวเองได้ควรวางเวิร์กโฟลว์และสคริปต์หรือไหในพา ธ HDFS ก่อนดำเนินการเวิร์กโฟลว์

คำสั่ง: งาน oozie –oozie http: // localhost: 11000 / oozie -config job.properties -run

สำหรับการตรวจสอบสถานะของงานคุณสามารถไปที่เว็บคอนโซล Oozie นั่นคือ http: // host_name: 11000 . เมื่อคลิกที่งานคุณจะเห็นสถานะของงาน

ในสถานการณ์ที่เราต้องการเรียกใช้งานหลาย ๆ งานควบคู่กันไปเราสามารถใช้ ส้อม . เมื่อใดก็ตามที่เราใช้ fork เราต้องใช้ Join เป็น end node ในการแยก สำหรับแต่ละส้อมควรมีการเข้าร่วม เข้าร่วมจะถือว่าโหนดทั้งหมดที่ทำงานคู่ขนานกันเป็นลูกของส้อมเดียว ตัวอย่างเช่นเราสามารถสร้างตารางสองตารางพร้อมกันได้

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

ค่าของ job-tracker, name-node, script และ param สามารถส่งผ่านได้โดยตรง แต่สิ่งนี้ยากที่จะจัดการ นี่คือที่ที่ไฟล์กำหนดค่า (เช่นไฟล์. คุณสมบัติ) มีประโยชน์

บทช่วยสอน Apache Oozie: ผู้ประสานงาน Oozie

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

คำจำกัดความที่จำเป็นสำหรับงานผู้ประสานงานคือ:

  • เริ่มต้น & ลบเริ่มวันที่เวลาสำหรับงาน
  • จบ & ลบวันที่สิ้นสุดของงาน
  • เขตเวลา & ลบเขตเวลาของแอปพลิเคชันผู้ประสานงาน
  • ความถี่ & ลบความถี่เป็นนาทีสำหรับการดำเนินการงาน

คุณสมบัติเพิ่มเติมบางอย่างพร้อมใช้งานสำหรับข้อมูลการควบคุม:

  • หมดเวลา & ลบเวลาสูงสุดเป็นนาทีซึ่งการดำเนินการจะรอให้เป็นไปตามเงื่อนไขเพิ่มเติมก่อนที่จะทิ้ง 0 บ่งชี้ว่าหากเหตุการณ์ที่ป้อนเข้าทั้งหมดไม่เป็นที่พอใจในช่วงเวลาของการดำเนินการที่เป็นรูปธรรมการดำเนินการควรหมดเวลาทันที -1 หมายถึงไม่มีการหมดเวลาการดำเนินการจะรอตลอดไป ค่าเริ่มต้นคือ -1
  • ภาวะพร้อมกัน & ลบจำนวนการดำเนินการสูงสุดสำหรับงานที่สามารถรันคู่ขนานกันได้ ค่าเริ่มต้นคือ 1
  • การดำเนินการ - ระบุลำดับการดำเนินการหากงานผู้ประสานงานหลายอินสแตนซ์มีคุณสมบัติตรงตามเกณฑ์การดำเนินการ มันสามารถ:
    • FIFO (ค่าเริ่มต้น)
    • LIFO
    • LAST_ONLY

คำสั่ง: งาน oozie –oozie http: // localhost: 11000 / oozie -config -run

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

Apache Oozie Tutorial: Oozie Bundle

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

เวลาเริ่มเตะ & ลบเวลาที่กลุ่มควรเริ่มต้นและส่งใบสมัครผู้ประสานงาน

ความก้าวหน้าในบทช่วยสอน Apache Oozie นี้เราจะเข้าใจวิธีสร้าง Workflow Job

Apache Oozie Tutorial: Word Count Workflow Job

ในตัวอย่างนี้เราจะดำเนินการ Word Count Job โดยใช้ Apache Oozie ในที่นี้เราจะไม่พูดถึงวิธีการเขียนโปรแกรมจำนวนคำ MapReduce ดังนั้นก่อนทำตามบทช่วยสอน Apache Oozie คุณต้องดาวน์โหลดสิ่งนี้ โถนับคำ ไฟล์. ตอนนี้สร้างไดเรกทอรี WordCountTest ที่เราจะวางไฟล์ทั้งหมด สร้างไดเร็กทอรี lib ซึ่งเราจะวาง jar จำนวนคำดังที่แสดงในภาพด้านล่าง

ตอนนี้ให้ก้าวไปข้างหน้าและสร้าง job.properties & workflow.xml ไฟล์ที่เราจะระบุงานและพารามิเตอร์ที่เกี่ยวข้อง

job.properties

ขั้นแรกเรากำลังสร้างไฟล์ job.properties ไฟล์ที่เรากำลังกำหนดเส้นทางของ NameNode & ResourceManager ต้องใช้พา ธ NameNode สำหรับการแก้ไขเส้นทางไดเร็กทอรีเวิร์กโฟลว์และพา ธ jobTracker จะช่วยในการส่งงานไปยัง YARN เราจำเป็นต้องระบุเส้นทางของไฟล์ workflow.xml ซึ่งควรเก็บไว้ใน HDFS

workflow.xml

ต่อไปเราต้องสร้างไฟล์ workflow.xml ไฟล์ที่เราจะกำหนดการกระทำทั้งหมดของเราและดำเนินการ ขั้นแรกเราต้องระบุชื่อแอปเวิร์กโฟลว์เช่น WorkflowRunnerTest . จากนั้นเราจะระบุไฟล์ เริ่มต้นโหนด . โหนดเริ่มต้น ( ใน ที่ เริ่มที่จะ แท็ก ) เป็นจุดเริ่มต้นสำหรับงานเวิร์กโฟลว์ ชี้ไปที่โหนดเวิร์กโฟลว์แรกจากจุดที่ควรเริ่มงาน ดังที่คุณเห็นในภาพด้านล่างโหนดถัดไปคือ จุดตัด 0 งานจะเริ่มจากจุดไหน

ต่อไปเรากำลังระบุงานที่จะดำเนินการในโหนดการดำเนินการ เรากำลังดำเนินการงาน MapReduce WordCount ที่นี่ เราจำเป็นต้องระบุการกำหนดค่าที่จำเป็นสำหรับการดำเนินงาน MapReduce นี้ เรากำลังกำหนดตัวติดตามงานและที่อยู่ NameNode

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

คอนฟิกูเรชันงาน MapReduce สุดท้ายคือไดเร็กทอรีอินพุตและเอาต์พุตใน HDFS ไดเร็กทอรีอินพุตคือ ข้อมูล ไดเร็กทอรีซึ่งเก็บไว้ในรูทพา ธ ของ NameNode . ในที่สุดเราจะระบุองค์ประกอบการฆ่าหากงานล้มเหลว

ตอนนี้เราต้องย้ายไฟล์ WordCountTest โฟลเดอร์ใน HDFS ตามที่เราระบุไว้ในไฟล์ oozie.wf.application.path ทรัพย์สินใน job.properties ไฟล์. ดังนั้นเรากำลังคัดลอกไฟล์ WordCountTest โฟลเดอร์ในไดเร็กทอรีรากของ Hadoop

คำสั่ง: hadoop fs - ป้อน WordCountTest /

ในการตรวจสอบคุณสามารถไปที่ NameNode Web UI และตรวจสอบว่ามีการอัปโหลดโฟลเดอร์ในไดเรกทอรีราก HDFS หรือไม่

ตอนนี้เราพร้อมแล้วที่จะก้าวไปข้างหน้าและดำเนินงานเวิร์กโฟลว์

คำสั่ง: งาน oozie –oozie http: // localhost: 11000 / oozie -config job.properties -run

เมื่อเราทำงานเสร็จแล้วเราจะได้รับรหัสงาน (เช่น 0000009-171219160449620-oozie-edur-W ) ดังแสดงในภาพด้านบน คุณสามารถเข้าไปตรวจสอบงานที่คุณส่งได้ใน Oozie Web UI เช่น localhost: 11000 . คุณสามารถดูได้จากภาพด้านล่างนี้งานที่เราส่งไปนั้นมีรายชื่ออยู่ในรายการ

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

  • ข้อมูลงาน

  • นิยามงาน

  • การกำหนดค่างาน

เนื่องจากสถานะของงานสำเร็จดังนั้นเราจึงต้องไปที่ไดเร็กทอรีรูท HDFS และตรวจสอบว่าไดเร็กทอรีเอาต์พุตถูกสร้างขึ้นหรือไม่

อย่างที่คุณเห็นว่าไฟล์ oozieout สร้างไดเร็กทอรีใน HDFS แล้วตอนนี้เรามาดูไฟล์เอาต์พุตที่สร้างขึ้น

ดังที่เราได้เห็นวิธีการสร้างงานเวิร์กโฟลว์ Oozie แล้วตอนนี้เราจะก้าวไปข้างหน้าในบล็อก Apache Oozie Tutorial และทำความเข้าใจวิธีสร้างงานผู้ประสานงาน

Apache Oozie Tutorial: งานผู้ประสานงานการนับจำนวนคำตามเวลา

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

ให้เราก้าวไปข้างหน้าอย่างรวดเร็วในบทแนะนำ Apache Oozie และสร้างงานผู้ประสานงาน ที่นี่เราจะสร้างไฟล์สามไฟล์คือ Coordinator.properties , Coordinator.xml & workflow.xml ไฟล์. อีกครั้งที่นี่เราจะวาง w เลขที่ โถภายใน lib ไดเรกทอรีดังที่แสดงในภาพด้านล่าง

ตอนนี้ให้เราดูไฟล์เหล่านี้ทีละไฟล์ ขั้นแรกเราจะเริ่มต้นด้วยไฟล์ Coordinator.properties

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

สำหรับการกำหนดความถี่เป็นนาทีชั่วโมงวันและเดือนให้ใช้รูปแบบต่อไปนี้:

$ {ผู้ประสานงาน: minutes (int n)} n $ {ผู้ประสานงาน: minutes (45)} -> 45
$ {ผู้ประสานงาน: ชั่วโมง (int n)} n * 60 $ {ผู้ประสานงาน: ชั่วโมง (3)} -> 180
$ {ประสานงาน: วัน (int n)} ตัวแปร $ {Coord: days (2)} -> นาทีใน 2 วันเต็มนับจากวันที่ปัจจุบัน
$ {ผู้ประสานงาน: เดือน (int n)} ตัวแปร $ {Coord: months (1)} -> นาทีใน 1 เดือนเต็มนับจากวันที่ปัจจุบัน

ต่อไปเราจะกำหนดเวลาเริ่มต้นและเวลาสิ้นสุดของงานดังที่แสดงในภาพด้านบน เวลาเริ่มต้น คือวันที่และเวลาเริ่มต้นของงาน & endTime คือวันที่และเวลาสิ้นสุดของงาน

ต่อไปเราจะระบุ URL NameNode & ResourceManager ซึ่งจะใช้เพื่ออ้างอิงไฟล์ workflow.xml ใน HDFS และส่งงานไปยัง YARN ตามลำดับ ในที่สุดเรากำลังระบุพา ธ workflow.xml ซึ่งเราจะเก็บไว้ใน HDFS นอกจากนี้เราจะระบุเส้นทางของแอปพลิเคชันที่จะจัดเก็บไฟล์และไดเรกทอรี lib ทั้งหมด

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

ต่อไปข้างหน้าเราต้องสร้าง workflow.xml ไฟล์ที่เราจะระบุงาน มันคล้ายกับไฟล์ workflow.xml ซึ่งเราได้สร้างขึ้นในงานเวิร์กโฟลว์

อีกครั้งเราจะย้ายสิ่งนี้ WordCountTest_TimedBased ไดเรกทอรีไปยัง HDFS

คำสั่ง : hadoop fs - ป้อน WordCountTest_TimeBased /

ตอนนี้เราพร้อมแล้วที่จะก้าวไปข้างหน้าและดำเนินการงานผู้ประสานงานนี้ในบทแนะนำ Oozie นี้ มาเริ่มดำเนินการกันเลย

คำสั่ง : งาน oozie –oozie http: // localhost: 11000 / oozie -config Coordinator.properties -run

จดรหัสงานของผู้ประสานงานนี้ (เช่น 0000010-171219160449620-oozie-edur-C) มันจะช่วยให้คุณติดตามงานของคุณใน Oozie Web UI

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

  • ข้อมูลงานผู้ประสานงาน

  • ความหมายของงานผู้ประสานงาน

  • การกำหนดค่างานผู้ประสานงาน

ตอนนี้เมื่อเราได้ดูแท็บต่างๆ เราจะกลับไปที่ไดเร็กทอรีรูท HDFS ที่จะสร้างโฟลเดอร์ผลลัพธ์ ดังที่คุณเห็นในภาพด้านล่าง oozieTimeBasedout สร้างไดเร็กทอรีแล้วตามที่เราระบุไว้ใน workflow.xml ไฟล์.

ตอนนี้ให้เราดูไฟล์ผลลัพธ์ที่สร้างขึ้น

ฉันหวังว่าคุณจะพบข้อมูลบล็อก Apache Oozie Tutorial นี้ หากคุณสนใจที่จะเรียนรู้เพิ่มเติมคุณสามารถผ่านสิ่งนี้ได้ ซึ่งจะบอกคุณเกี่ยวกับ Big Data และวิธีที่ Hadoop แก้ปัญหาความท้าทายที่เกี่ยวข้องกับ Big Data

ตอนนี้คุณเข้าใจ Apache Oozie แล้วลองดูไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรม Edureka Big Data Hadoop Certification ช่วยให้ผู้เรียนมีความเชี่ยวชาญใน HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume และ Sqoop โดยใช้กรณีการใช้งานแบบเรียลไทม์ในโดเมนการค้าปลีกโซเชียลมีเดียการบินการท่องเที่ยวการเงิน

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป