Oozie Tutorial: Alamin Kung Paano Mag-iskedyul ng iyong Mga Trabaho ng Hadoop



Apache Oozie Tutorial: Ang Oozie ay isang system ng scheduler ng daloy ng trabaho upang pamahalaan ang mga trabaho sa Hadoop. Ito ay isang nasusukat, maaasahan at napapalawak na system.

Bago simulan ang Apache Oozie tutorial na ito, ipaalam sa amin na alamin kung saan ginagamit ang scheduler system. Sa mga senaryong real time, ang isang trabaho ay nakasalalay sa iba pang mga trabaho, tulad ng output ng isang gawain sa MapReduce na maaaring maipasa sa trabaho sa Hive para sa karagdagang pagproseso. Ang susunod na senaryo ay maaaring, pag-iiskedyul ng isang hanay ng mga gawain sa batayan ng oras tulad ng pang-araw-araw, lingguhan, buwanang o batay sa pagkakaroon ng data. Nagbibigay sa iyo ang Apache Oozie ng kapangyarihan upang madaling hawakan ang mga ganitong uri ng mga senaryo. Ito ang dahilan kung bakit Apache Oozie ay isang mahalagang bahagi ng .

Sa Apache Oozie tutorial blog na ito, sasakupin namin ang:





  • Apache Oozie Panimula
  • Oozie Workflow
  • Oo Coordinator
  • Oozie Bundle
  • Nagbibilang ng Trabaho sa Trabaho ng Word
  • Job-Coordinator na Batay sa Oras na Job

Sisimulan namin ang tutorial na Oozie sa pamamagitan ng pagpapakilala sa Apache Oozie. Pagkatapos ay magpatuloy, mauunawaan natin ang mga uri ng mga trabaho na maaaring malikha at maipatupad gamit ang Apache Oozie.

Apache Oozie Tutorial: Panimula sa Apache Oozie

Apache Oozie - Oozie Tutorial - EdurekaAng Apache Oozie ay isang sistema ng tagapag-iskedyul upang pamahalaan at maipatupad ang mga trabaho sa Hadoop sa isang ipinamigay na kapaligiran. Maaari kaming lumikha ng isang nais na pipeline na may pagsasama ng iba't ibang uri ng mga gawain. Maaari itong maging iyong gawain sa Hive, Pig, Sqoop o MapReduce. Gamit ang Apache Oozie maaari mo ring iiskedyul ang iyong mga trabaho. Sa loob ng isang pagkakasunud-sunod ng gawain, dalawa o higit pang mga trabaho ay maaari ding mai-program upang tumakbo kahilera sa bawat isa. Ito ay isang nasusukat, maaasahan at napapalawak na system.



Ang Oozie ay isang bukas na Source-web application ng Source, na responsable para sa pagpapalit ng mga pagkilos ng daloy ng trabaho. Ito naman ay gumagamit ng Hadoop execution engine upang maisagawa ang mga gawain.

Nakita ni Apache Oozie ang pagkumpleto ng mga gawain sa pamamagitan ng callback at botohan. Kapag nagsimula ang isang gawain ni Oozie, nagbibigay ito ng isang natatanging callback HTTP URL sa gawain at aabisuhan ang URL na iyon kapag nakumpleto ang gawain. Kung hindi naisagawa ng gawain ang callback URL, maaaring i-poll ni Oozie ang gawain para makumpleto.

Mayroong tatlong uri ng mga trabaho sa Apache Oozie:



  • Oozie Mga Trabaho sa Trabaho & minus Ito ang Directed Acyclic Graphs (DAGs) na tumutukoy sa isang pagkakasunud-sunod ng mga aksyon na naisakatuparan.
  • Trabaho ng Coordinator ng Oozie & minus Ang mga ito ay binubuo ng mga trabaho sa daloy ng trabaho na na-trigger ng oras at pagkakaroon ng data.
  • Oozie Bundles & minus Maaari itong tukuyin bilang isang pakete ng maraming mga coordinator at mga trabaho sa daloy ng trabaho.

Ngayon, unawain nating isa-isa ang lahat ng mga trabahong ito.

Apache Oozie Tutorial: Oozie Workflow

Ang daloy ng trabaho ay isang pagkakasunud-sunod ng mga aksyon na nakaayos sa isang Direktang Acyclic Graph (DAG). Ang mga aksyon ay nakasalalay sa bawat isa, dahil ang susunod na aksyon ay maaari lamang maisagawa pagkatapos ng output ng kasalukuyang pagkilos. Ang isang aksyon sa daloy ng trabaho ay maaaring isang pagkilos ng Baboy, pagkilos ng Pugad, aksyon ng MapReduce, pagkilos ng Shell, pagkilos ng Java atbp. Maaaring may mga puno ng pagpapasya upang magpasya kung paano at sa aling kondisyon dapat tumakbo ang isang trabaho.

Maaari kaming lumikha ng iba't ibang mga uri ng pagkilos batay sa trabaho at ang bawat uri ng pagkilos ay maaaring magkaroon ng sarili nitong uri ng mga tag.Ang daloy ng trabaho at ang mga script o garapon ay dapat ilagay sa path ng HDFS bago ipatupad ang daloy ng trabaho.

Utos: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -Run

Para sa pagsusuri sa katayuan ng trabaho, maaari kang pumunta sa Oozie web console, i. http: // host_name: 11000 . Sa pamamagitan ng pag-click sa trabaho makikita mo ang katayuan ng trabaho.

Sa mga sitwasyon, kung saan nais naming magpatakbo ng maraming mga trabaho nang paralel, maaari naming gamitin Tinidor . Tuwing gumagamit kami ng tinidor, kailangan naming gamitin ang Sumali bilang isang end node sa tinidor. Para sa bawat tinidor dapat mayroong isang sumali. Ipagpalagay na sumali na ang lahat ng mga node na pagpapatupad nang parallely, ay isang anak ng isang solong tinidor. Halimbawa, maaari kaming lumikha ng dalawang mga talahanayan sa parehong oras nang parallel.

Kung nais naming magpatakbo ng isang aksyon batay sa output ng desisyon, maaari kaming magdagdag ng mga tag ng desisyon. Halimbawa, kung mayroon na tayong sarsa ng pugad hindi namin kakailanganin itong likhain muli. Sa sitwasyong iyon, maaari kaming magdagdag ng isang tag ng desisyon upang hindi mapatakbo ang mga hakbang sa paggawa ng talahanayan kung mayroon nang talahanayan. Ang mga node ng pagpapasya ay may isang tag ng switch na katulad ng switch case.

Ang halaga ng job-tracker, name-node, script at param ay maaaring direktang maipasa. Ngunit, naging mahirap itong pamahalaan. Dito madaling gamitin ang isang config file (ibig sabihin. Properties file).

Apache Oozie Tutorial: Oozie Coordinator

Maaari kang mag-iskedyul ng mga kumplikadong daloy ng trabaho pati na rin ang mga daloy ng trabaho na naka-iskedyul nang regular gamit ang Coordinator. Nag-uudyok ang Oozie Coordinators ng mga trabaho sa mga daloy ng trabaho batay sa oras, data o predicates ng kaganapan. Ang mga daloy ng trabaho sa loob ng coordinator ng trabaho ay nagsisimula kapag nasiyahan ang ibinigay na kundisyon.

Kinakailangan ang mga kahulugan para sa mga trabaho ng coordinator ay:

  • umpisahan & minus Simulan ang datime para sa trabaho.
  • magtapos & minus End datime para sa trabaho.
  • timezone & minus ng Timezone ng aplikasyon ng coordinator.
  • dalas & minus Ang dalas, sa ilang minuto, para sa pagpapatupad ng mga trabaho.

Ang ilan pang mga pag-aari ay magagamit para sa Impormasyon sa Pagkontrol:

  • pag-timeout & minus Ang maximum na oras, sa ilang minuto, kung saan maghihintay ang isang pagkilos upang masiyahan ang mga karagdagang kundisyon, bago itapon. Ipinapahiwatig ng 0 na kung ang lahat ng mga kaganapan sa pag-input ay hindi nasiyahan sa oras ng pagpapatupad ng pagkilos, ang aksyon ay dapat na agad na mag-timeout. -1 ay nagpapahiwatig ng walang pag-timeout, ang aksyon ay maghihintay magpakailanman. Ang default na halaga ay -1.
  • pagsang-ayon & minus Ang maximum na bilang ng mga pagkilos para sa isang trabaho na maaaring tumakbo nang paralel. Ang default na halaga ay 1.
  • pagpapatupad - Tinutukoy nito ang order ng pagpapatupad kung maraming mga pagkakataon ng trabaho ng coordinator ang nasiyahan sa kanilang pamantayan sa pagpapatupad. Maaari itong:
    • FIFO (default)
    • LIFO
    • LAST_ONLY

Utos: oozie job –oozie http: // localhost: 11000 / oozie -config -run

Kung ang isang pag-aari ng pagsasaayos na ginamit sa kahulugan ay hindi ibinigay kasama ang pagsasaayos ng trabaho habang nagsusumite ng trabaho ng coordinator, mabibigo ang pagsusumite ng trabaho.

Apache Oozie Tutorial: Oozie Bundle

Oozie Bundle systemPinapayagan kang tukuyin at magpatupad ng isang hanay ng mga application ng coordinator, na madalas na tinatawag na isang pipeline ng data. Sa isang bundle ng Oozie, walang malinaw na pagtitiwala sa mga aplikasyon ng coordinator. Gayunpaman, maaari mong gamitin ang dependency ng data ng mga aplikasyon ng coordinator upang lumikha ng isang ipinahiwatig na pipeline ng aplikasyon ng data.Maaari mong simulan / ihinto / suspindihin / ipagpatuloy / muling buhayin ang bundle. Nagbibigay ito ng isang mas mahusay at madaling kontrol sa pagpapatakbo.

kung paano lumikha ng klase ng singleton sa java

Kick-off-time & minus Ang oras kung kailan dapat magsimula ang isang bundle at magsumite ng mga aplikasyon ng coordinator.

Pagsulong sa tutorial na Apache Oozie na ito, mauunawaan namin kung paano lumikha ng Trabaho ng Trabaho.

Apache Oozie Tutorial: Word Count Workflow Job

Sa halimbawang ito, magpapatupad kami ng isang Word Count Job gamit ang Apache Oozie. Dito hindi namin tatalakayin kung paano magsulat ng isang programa ng bilang ng salita sa MapReduce. Kaya, bago sundin ang tutorial na Apache Oozie kailangan mong i-download ito salitang bilang ng garapon file Ngayon, lumikha ng isang direktoryo ng WordCountTest kung saan ilalagay namin ang lahat ng mga file. Lumikha ng isang lib direktoryo kung saan ilalagay namin ang word count jar tulad ng ipinapakita sa mga larawan sa ibaba.

Ngayon, hayaan mong magpatuloy at lumikha trabaho.mga pag-aari & daloy ng trabaho.xml mga file, kung saan tutukuyin namin ang trabaho at mga parameter na nauugnay dito.

trabaho.mga pag-aari

Una, lumilikha kami ng a trabaho.mga pag-aari file, kung saan tinutukoy namin ang landas ng NameNode & ResourceManager. Kinakailangan ang landas ng NameNode para sa paglutas ng landas sa direktoryo ng workflow at landas ng jobTracker ay makakatulong sa pagsusumite ng trabaho sa YARN. Kailangan nating ibigay ang landas ng daloy ng trabaho.xml file, na dapat itago sa HDFS.

daloy ng trabaho.xml

Susunod, kailangan nating likhain ang daloy ng trabaho.xml file, kung saan tutukuyin namin ang lahat ng aming mga aksyon at isasagawa ang mga ito. Una, kailangan naming tukuyin ang pangalan ng app ng workflow-ibig sabihin WorkflowRunnerTest . Pagkatapos, tinutukoy namin ang simulan ang node . Ang start node ( sa ang magsimula sa tag ) ay ang entry point para sa isang trabaho na daloy ng trabaho. Itinuturo nito patungo sa unang node ng daloy ng trabaho mula sa kung saan dapat magsimula ang trabaho. Tulad ng nakikita mo sa imahe sa ibaba, ang susunod na node ay interseksyon0 mula saan magsisimula ang trabaho.

Susunod, tinutukoy namin ang gagawing gawain, sa node ng pagkilos. Nagpapatupad kami ng isang gawain sa MapReduce WordCount dito. Kailangan naming tukuyin ang mga pagsasaayos na kinakailangan para sa pagpapatupad ng gawaing MapReduce na ito. Tinutukoy namin ang tracker ng trabaho at address ng NameNode.

Susunod ay ang nakahandang elemento, na eksklusibong ginagamit para sa paglilinis ng direktoryo, bago isagawa ang pagkilos. Nagsasagawa kami dito ng pagtanggal na operasyon sa HDFS para sa pagtanggal ng palabas1 folder kung nalikha na. Ang paghahanda ng tag ay ginagamit para sa paglikha o pagtanggal ng isang folder bago ipatupad ang trabaho. Pagkatapos ay tinutukoy namin ang mga pag-aari ng MapReduce tulad ng pangalan ng pila sa trabaho, klase ng mapper, klase ng reducer, klase ng output key at klase ng halaga ng output.

Ang huling pagsasaayos ng gawain ng MapReduce ay ang direktoryo ng input at output sa HDFS. Ang direktoryo ng input ay data direktoryo, na nakaimbak sa root path ng NameNode . Sa wakas, tutukuyin namin ang elemento ng pumatay kung nabigo ang trabaho.

Ngayon kailangan nating ilipat ang WordCountTest folder sa HDFS, tulad ng tinukoy namin sa oozie.wf.aplikasyon.path pag-aari sa trabaho.mga pag-aari file Kaya, kinokopya namin ang WordCountTest folder sa direktoryo ng root ng Hadoop.

Utos: hadoop fs -put WordCountTest /

Upang ma-verify, maaari kang pumunta sa NameNode Web UI at suriin kung na-upload ang folder sa direktoryo ng root ng HDFS o hindi.

Ngayon, nakatakda kaming lahat upang magpatuloy at ipatupad ang trabaho sa daloy ng trabaho.

Utos: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -Run

Kapag naisakatuparan na namin ang aming trabaho makakakuha kami ng job id (ibig sabihin 0000009-171219160449620-oozie-edur-W ) tulad ng ipinakita sa imahe sa itaas. Maaari kang pumunta at suriin ang trabahong iyong isinumite sa Oozie Web UI ibig sabihin localhost: 11000 . Maaari mong makita sa imahe sa ibaba, ang trabahong isinumite namin ay nakalista sa ibaba.

Kung mapapansin mo ang nasa itaas na imahe, makikita mo ang Job ID, ang pangalan ng Trabaho, ang katayuan ng trabaho, ang gumagamit na nagsumite ng trabaho, oras ng paggawa, pagsisimula at huling pagbabago. Maaari kang mag-click sa trabaho upang makakuha ng maraming mga detalye tulad ng:

  • Impormasyon sa Trabaho

  • Kahulugan sa Trabaho

  • Pag-configure ng Trabaho

Tulad ng katayuan ng trabaho ay nagtagumpay, kaya kailangan nating pumunta sa direktoryo ng ugat ng HDFS at suriin kung ang direktoryo ng output ay nilikha o hindi.

Tulad ng makikita mo na ang oozieout ang direktoryo ay nilikha sa HDFS, kaya't tingnan natin ngayon ang output file na nilikha.

Tulad ng nakita namin kung paano lumikha ng isang trabaho sa daloy ng trabaho ng Oozie, ngayon ay isusulong namin sa blog na Apache Oozie Tutorial na ito at mauunawaan kung paano lumikha ng isang trabaho ng coordinator.

Apache Oozie Tutorial: Ang Batay sa Oras ng Batas sa Word Bilang ng Coordinator

Sa halimbawang ito, lilikha kami ng isang trabaho na batay sa oras na bilang ng coordinator sa trabaho na naisasagawa pagkatapos ng isang tukoy na agwat ng oras. Maaari kang lumikha at mag-iskedyul ng isang trabaho gamit ang Apache Oozie na kailangang maisagawa araw-araw o pana-panahon.

Mabilis tayong umusad sa tutorial na Apache Oozie na ito at lumikha ng isang trabaho sa coordinator. Dito lilikha kami ng tatlong mga file ie coordinator.mga pag-aari , coordinator.xml & daloy ng trabaho.xml file Muli, dito natin ilalagay ang w pagbibilang garapon sa loob ng lib direktoryo tulad ng ipinakita sa larawan sa ibaba.

Ngayon tingnan natin nang isa-isa ang mga file na ito. Una, magsisimula kami sa file ng coordinator.properties.

Dito, tinutukoy namin ang dalas kung saan naisasagawa ang daloy ng trabaho. Ang dalas ay laging ipinahayag sa loob ng ilang minuto. Sa aming kaso, ang trabaho ng coordinator na ito ay naisasagawa nang isang beses bawat oras sa pagitan ng tinukoy na oras. Ginagamit ang dalas upang makuha ang mga pana-panahong agwat kung saan ginawa ang mga hanay ng data, at naka-iskedyul na tumakbo ang mga aplikasyon ng coordinator.

Para sa pagtukoy ng dalas sa minuto, oras, araw at buwan gamitin ang sumusunod na format:

$ {coord: minuto (int n)} n $ {coord: minuto (45)} -> 45
$ {coord: oras (int n)} n * 60 $ {coord: oras (3)} -> 180
$ {coord: araw (int n)} variable $ {coord: araw (2)} -> minuto sa 2 buong araw mula sa kasalukuyang petsa
$ {coord: months (int n)} variable $ {coord: months (1)} -> minuto sa isang 1 buong buwan mula sa kasalukuyang petsa

Susunod, tinutukoy namin ang oras ng pagsisimula at pagtatapos ng trabaho tulad ng ipinakita sa larawan sa itaas. oras ng umpisa ay ang simula ng oras ng trabaho at endTime ay ang pagtatapos ng oras ng trabaho.

Susunod, tinutukoy namin ang url ng NameNode & ResourceManager, na gagamitin upang mag-refer sa workflow.xml file sa HDFS at magsumite ng mga trabaho sa YARN ayon sa pagkakabanggit. Sa wakas, tinutukoy namin ang landas ng workflow.xml, na itatabi namin sa HDFS. Tutukuyin din namin ang landas ng application kung saan ang lahat ng mga file at direktoryo ng lib ay maiimbak.

Ang pangalawang file ay coordinator.xml kung saan gagamitin namin ang lahat ng mga pag-aari na tinukoy namin sa coordinator.mga pag-aari file Ngayon, una, tutukuyin namin ang mga katangian ng application ng coordinator hal. Pangalan, dalas at timezone. Susunod, isa-isahin namin ang mga daloy ng trabaho. Dito, mayroon lamang kaming isang daloy ng trabaho. Kaya, sa loob ng elemento ng pagkilos lilikha kami ng elemento ng daloy ng trabaho, kung saan tutukuyin namin ang landas ng application.

Susunod, pagsulong nang maaga kailangan nating likhain daloy ng trabaho.xml file kung saan tutukuyin namin ang gawain. Ito ay katulad ng daloy ng trabaho.xml file, na nilikha namin sa trabaho sa daloy ng trabaho.

Ngayon ulit, lilipat natin ito WordCountTest_TimedBased direktoryo sa HDFS.

Utos : hadoop fs -put WordCountTest_TimeBased /

Ngayon, nakatakda kaming lahat na magpatuloy at ipatupad ang trabaho ng tagapag-ugnay na ito sa Oozie Tutorial. Sige na at isagawa natin ito.

Utos : oozie job –oozie http: // localhost: 11000 / oozie -config coordinator.properties -run

pl sql tutorial na may mga halimbawa

Itala ang job id ng coordinator na ito (hal. 0000010-171219160449620-oozie-edur-C). Tutulungan ka nitong subaybayan ang iyong trabaho sa Oozie Web UI.

Maaari mong makita ang trabaho na nakalista sa iyong tab na Mga Trabaho ng Coordinator sa Oozie Web UI. Katulad ng Trabaho sa Trabaho na mayroon kaming pangalan, katayuan, gumagamit, dalas, oras ng pagsisimula at pagtatapos ng trabaho. Kapag mag-click ka sa isang partikular na trabaho, makikita mo ang mga detalye ng trabaho, tulad ng ipinakita sa mga larawan sa ibaba.

  • Impormasyon sa Trabaho ng Coordinator

  • Kahulugan ng Trabaho ng Coordinator

  • Pag-configure ng Trabaho ng Coordinator

Ngayon, tulad ng pagtingin namin sa iba't ibang mga tab. Babalik kami sa direktoryo ng ugat ng HDFS kung saan malilikha ang output folder. Tulad ng nakikita mo sa larawan sa ibaba, oozieTimeBasedout ang direktoryo ay nilikha, tulad ng tinukoy namin sa daloy ng trabaho.xml file

Ngayon, tingnan natin ang output file na nilikha.

Inaasahan kong nahanap mo ang kaalaman sa blog ng Apache Oozie Tutorial blog na ito. Kung interesado kang matuto nang higit pa, maaari mo itong daanan na nagsasabi sa iyo tungkol sa Big Data at kung paano nilulutas ng Hadoop ang mga hamon na nauugnay sa Big Data.

Ngayon na naintindihan mo na si Apache Oozie, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Ang kurso sa Edureka Big Data Hadoop Certification Training ay tumutulong sa mga nag-aaral na maging dalubhasa sa HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume at Sqoop na gumagamit ng mga kaso ng paggamit ng real-time sa Retail, Social Media, Aviation, Turismo, Pananalapi domain.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento at babalikan ka namin.