अपाचे ओज़ी ट्यूटोरियल: क्या है, वर्कफ़्लो, उदाहरण - हाडोप

ओजी क्या है?

अपाचे ओज़ी Hadoop के लिए एक वर्कफ़्लो शेड्यूलर है। यह एक ऐसा सिस्टम है जो आश्रित जॉब्स के वर्कफ़्लो को चलाता है। यहाँ, उपयोगकर्ताओं को बनाने की अनुमति है निर्देशित विश्वकोश रेखांकन वर्कफ़्लोज़ की एक श्रृंखला, जिसे Hadoop में समानांतर और क्रमिक रूप से चलाया जा सकता है।

यह दो हिस्सों से मिलकर बना है:

  • वर्कफ़्लो इंजन: वर्कफ़्लो इंजन की जिम्मेदारी Hadoop जॉब्स जैसे, MapReduce, Pig, Hive से बने वर्कफ़्लो को संग्रहीत और चलाना है।
  • समन्वयक इंजनयह पूर्वनिर्धारित शेड्यूल और डेटा की उपलब्धता के आधार पर वर्कफ़्लो कार्य चलाता है।

Oozie स्केलेबल है और Hadoop क्लस्टर में हजारों वर्कफ़्लोज़ (प्रत्येक में दर्जनों जॉब्स शामिल हैं) के समय पर निष्पादन का प्रबंधन कर सकता है।

ऊजी

Oozie बहुत लचीला भी है। कोई भी व्यक्ति आसानी से जॉब शुरू, रोक, सस्पेंड और फिर से चला सकता है। Oozie विफल वर्कफ़्लो को फिर से चलाना बहुत आसान बनाता है। कोई भी व्यक्ति आसानी से समझ सकता है कि डाउनटाइम या विफलता के कारण छूटे या विफल जॉब को पकड़ना कितना मुश्किल हो सकता है। किसी विशिष्ट विफल नोड को छोड़ना भी संभव है।

ओजी कैसे काम करता है?

Oozie क्लस्टर में एक सेवा के रूप में चलता है और क्लाइंट तत्काल या बाद में प्रसंस्करण के लिए वर्कफ़्लो परिभाषाएँ प्रस्तुत करते हैं।

Oozie वर्कफ़्लो में निम्न शामिल हैं एक्शन नोड्स और नियंत्रण-प्रवाह नोड्स.

An एक्शन नोड एक वर्कफ़्लो कार्य का प्रतिनिधित्व करता है, उदाहरण के लिए, फ़ाइलों को HDFS में ले जाना, मैपरेड्यूस, पिग या चलाना करंड नौकरियां, Sqoop का उपयोग करके डेटा आयात करना या लिखे गए प्रोग्राम की शेल स्क्रिप्ट चलाना Java.

A नियंत्रण-प्रवाह नोड सशर्त तर्क जैसे निर्माणों की अनुमति देकर क्रियाओं के बीच वर्कफ़्लो निष्पादन को नियंत्रित करता है, जिसमें पहले की क्रिया नोड के परिणाम के आधार पर विभिन्न शाखाओं का पालन किया जा सकता है।

नोड प्रारंभ करें, अंत नोड, तथा त्रुटि नोड इस श्रेणी के नोड्स में आते हैं।

नोड प्रारंभ करें, वर्कफ़्लो कार्य की शुरुआत को निर्दिष्ट करता है.

अंत नोड, नौकरी के अंत का संकेत.

त्रुटि नोड त्रुटि की घटना और मुद्रित किए जाने वाले संगत त्रुटि संदेश को निर्दिष्ट करता है।

वर्कफ़्लो के निष्पादन के अंत में, क्लाइंट को वर्कफ़्लो की स्थिति के साथ अपडेट करने के लिए Oozie द्वारा HTTP कॉलबैक का उपयोग किया जाता है। किसी एक्शन नोड में प्रवेश या उससे बाहर निकलना भी कॉलबैक को ट्रिगर कर सकता है।

उदाहरण वर्कफ़्लो आरेख

उदाहरण वर्कफ़्लो आरेख

Oozie वर्कफ़्लो एप्लिकेशन की पैकेजिंग और परिनियोजन

वर्कफ़्लो एप्लिकेशन में वर्कफ़्लो परिभाषा और सभी संबंधित संसाधन जैसे कि मैपरेड्यूस जार फ़ाइलें, पिग स्क्रिप्ट आदि शामिल होते हैं। अनुप्रयोगों को एक सरल निर्देशिका संरचना का पालन करने की आवश्यकता होती है और उन्हें तैनात किया जाता है एचडीएफएस ताकि ओजी उन तक पहुंच सके।

एक उदाहरण निर्देशिका संरचना नीचे दी गई है-

<name of workflow>/</name>
??? lib/
? ??? hadoop-examples.jar
??? workflow.xml

वर्कफ़्लो.xml (वर्कफ़्लो डेफ़िनेशन फ़ाइल) को शीर्ष स्तर की निर्देशिका (वर्कफ़्लो नाम वाली पैरेंट निर्देशिका) में रखना ज़रूरी है। Lib निर्देशिका में MapReduce क्लास वाली Jar फ़ाइलें होती हैं। इस लेआउट के अनुरूप वर्कफ़्लो एप्लिकेशन को किसी भी बिल्ड टूल जैसे, Ant या Maven के साथ बनाया जा सकता है।

इस तरह के निर्माण को एक कमांड का उपयोग करके एचडीएफएस में कॉपी करने की आवश्यकता है, उदाहरण के लिए -

% 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' विकल्प के साथ उपकमांड 'job' का उपयोग करके और '-info' के बाद जॉब आईडी निर्दिष्ट करके देखा जा सकता है।

e.g., % oozie job -info <job id>

आउटपुट स्थिति दिखाता है जो RUNNING, KILLED या SUCCEEDED में से एक है।

4. सफल वर्कफ़्लो निष्पादन के परिणाम Hadoop कमांड का उपयोग करके देखे जा सकते हैं जैसे-

% hadoop fs -cat <location of result>

ओजी का उपयोग क्यों करें?

Oozie का उपयोग करने का मुख्य उद्देश्य Hadoop प्रणाली में संसाधित किए जा रहे विभिन्न प्रकार के कार्यों का प्रबंधन करना है।

नौकरियों के बीच निर्भरता उपयोगकर्ता द्वारा निर्देशित अचक्रीय ग्राफ़ के रूप में निर्दिष्ट की जाती है। Oozie इस जानकारी का उपभोग करता है और वर्कफ़्लो में निर्दिष्ट सही क्रम में उनके निष्पादन का ध्यान रखता है। इस तरह उपयोगकर्ता का पूरा वर्कफ़्लो प्रबंधित करने का समय बच जाता है। इसके अलावा, Oozie में किसी विशेष नौकरी के निष्पादन की आवृत्ति निर्दिष्ट करने का प्रावधान है।

ओजी की विशेषताएं

  • Oozie में क्लाइंट API और कमांड लाइन इंटरफ़ेस है जिसका उपयोग किसी भी स्थान से कार्य शुरू करने, नियंत्रित करने और निगरानी करने के लिए किया जा सकता है। Java आवेदन.
  • इसकी वेब सेवा एपीआई का उपयोग करके कोई भी व्यक्ति कहीं से भी नौकरियों को नियंत्रित कर सकता है।
  • ओजी में ऐसे कार्यों को निष्पादित करने का प्रावधान है जो समय-समय पर चलने के लिए निर्धारित हैं।
  • ओजी में कार्य पूरा होने पर ईमेल सूचनाएं भेजने का प्रावधान है।