oozieशुरुआत ऊजी से हो रही है


टिप्पणियों

ओज़ी एक अपाचे ओपन सोर्स प्रोजेक्ट है, जो मूल रूप से याहू में विकसित किया गया है। Oozie मल्टीस्टेज Hadoop नौकरियों के लिए एक सामान्य उद्देश्य निर्धारण प्रणाली है।

  • Oozie Workflow नामक एक इकाई में प्रासंगिक Hadoop नौकरियों के एक तार्किक समूह बनाने की अनुमति देता है। Oozie वर्कफ़्लोज़ कार्यों की DAG (डायरेक्टेड साइक्लिक ग्राफ) हैं।
  • Oozie Coordinator नामक इकाई का उपयोग करके समय या डेटा निर्भर वर्कफ़्लो को शेड्यूल करने का एक तरीका प्रदान करता है।
  • इसके अलावा आप संबंधित कोऑर्डिनेटरों को एक इकाई में जोड़ सकते हैं जिसे Bundle कहा जाता है और निष्पादन के लिए ओजी सर्वर पर शेड्यूल किया जा सकता है।

Oozie जॉड नोड्स के रूप में Oozie ज्यादातर Hadoop जॉब्स का समर्थन करते हैं: MapRedude , Java , FileSystem (HDFS ऑपरेशंस), Hive , Hive2 , Pig , Spark , SSH , Shell , DistCp और Sqoop । यह एक Decision Control Node कार्रवाई का उपयोग करके एक Decision Control Node क्षमता प्रदान करता है और Fork-Join Control Node का उपयोग करके नौकरियों के समानांतर निष्पादन होता है। यह उपयोगकर्ताओं को Email एक्शन का उपयोग करके वर्कफ़्लो की सफलता / विफलता अधिसूचना के लिए ईमेल विकल्प को कॉन्फ़िगर करने की अनुमति देता है।

संस्करण

Oozie संस्करण रिलीज़ की तारीख
4.3.0 2016/12/02

स्थापना या सेटअप

पूर्व आवश्यक वस्तुएँ

इस लेख ने Hadoop 2.7.3 पर oozie-4.3.0 स्थापित करने का प्रदर्शन किया

  1. जावा 1.7+
  2. Hadoop 2.x (यहां, 2.7.3)
  3. Maven3 +
  4. यूनिक्स बॉक्स

Step1: Dist फ़ाइल

Http://www-eu.apache.org/dist/oozie/4.3.0 से oozie tar.gz फ़ाइल प्राप्त करें और इसे निकालें

cd $HOME
tar -xvf oozie-4.3.0.tar.gz
 

Step2: Oozie बनाएँ

cd $HOME/oozie-4.3.0/bin
./mkdistro.sh -DskipTests
 

चरण 3: सर्वर स्थापना

घर की निर्देशिका के लिए निर्मित बायनेरिज़ को 'oozie' के रूप में कॉपी करें

cd $HOME
cp -R $HOME/oozie-4.3.0/distro/target/oozie-4.3.0-distro/oozie-4.3.0 .
 

चरण 3.1: libext oozie निर्देशिका के अंदर libext निर्देशिका बनाएँ

 cd $HOME/oozie
 mkdir libext
 

नोट : ExtJS (2.2+) लाइब्रेरी (वैकल्पिक, Oozie webconsole को सक्षम करने के लिए) लेकिन, ExtJS पुस्तकालय Oozie के साथ बंडल नहीं है क्योंकि यह एक अलग लाइसेंस का उपयोग करता है :( अब आपको लिबास निर्देशिका के अंदर हैडॉप जार डालने की आवश्यकता है, अन्यथा यह नीचे फेंक देगा। oozie.log फ़ाइल में त्रुटि

WARN ActionStartXCommand: 523 - SERVER [data01.teg.io] USER [हडूप] ग्रुप [-] TOKEN [] APP [मैप-कम-वफ़] JOB [0000000-161212143751620-oozie-hado-W] ACTION [0000000-16121515314202020202020। oozie-hado-W @ mr-node] कार्रवाई शुरू करने में त्रुटि [mr-node]। ErrorType [TRANSIENT], ErrorCode [JA009], संदेश [JA009: क्लस्टर को आरंभ नहीं कर सकता। कृपया अपने कॉन्फ़िगरेशन को मैप्रेडिक.फ्रेमवर्क.नाम और पत्राचार सर्वर पते के लिए जांचें।]

तो, चलो नीचे दी गई लिबास निर्देशिका के अंदर जार डालते हैं

cp $HADOOP_HOME/share/hadoop/common/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/common/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/lib/*.jar oozie/libext/
 

चरण ३.२: ओजी इंपर्सनेट, ओजी पर प्रतिरूपण की त्रुटि से बचने के लिए, नीचे की तरह कोर- site.xml को संशोधित करें

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>
    <value>[OOZIE_SERVER_HOSTNAME]</value>
  </property>
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>
    <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>
  </property>
 

मान लें, मेरा oozie उपयोगकर्ता हाउज़र है और होस्ट लोकलहोस्ट है और ग्रुप हूप है

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.huser.hosts</name>
    <value>localhost</value>
  </property>
  <property>
    <name>hadoop.proxyuser.huser.groups</name>
    <value>hadoop</value>
  </property>
 

नोट: आप भ्रम की स्थिति में सभी मूल्यों में * का उपयोग कर सकते हैं

चरण ३.३: युद्ध की तैयारी करो

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war
 

यह oozie निर्देशिका के अंदर oozie.war फ़ाइल बनाएगा। यदि इस युद्ध का उपयोग आगे किया जाएगा, तो आप इस त्रुटि का सामना कर सकते हैं:

ERROR ActionStartXCommand: 517 - SERVER [data01.teg.io] USER [हैडऑप] ग्रुप [-] TOKEN [] APP [मैप-कम-करें wf] JOB [0000000-16120104605103-oozie-hado-W] ACTION [0000000-161220104605103 oozie-hado-W @ mr-node] त्रुटि, java.lang.NoSuchFieldError: HADOOP_CLASSPATH

क्यों? क्योंकि, Oozie संकलन ने Hadoop 2.7.0 जार का उत्पादन किया, तब भी जब विकल्प "-Dhadoop.version = 2.7.3" के साथ Hadoop 2.7.3 निर्दिष्ट किया।

इसलिए, इस त्रुटि से बचने के लिए, oozie.war फ़ाइल को एक अलग निर्देशिका में कॉपी करें

mkdir $HOME/oozie_war_dir
cp $HOME/oozie/oozie.war $HOME/oozie_war_dir
cd $HOME/oozie_war_dir
jar -xvf oozie.war
rm -f oozie.war/WEB-INF/lib/hadoop-*.jar
rm -f oozie.war/WEB-INF/lib/hive-*.jar
rm oozie.war
jar -cvf oozie.war ./*
cp oozie.war $HOME/oozie/
 

फिर, तैयार युद्ध के साथ ओजी के लिए oozie.war बायनेरिज़ को पुन: बनाएँ

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war
 

चरण 3.4: एचडीएफएस पर शेयरलिब बनाएं

cd $HOME/oozie/bin
./oozie-setup.sh sharelib create -fs hdfs://localhost:9000
 

अब, यह शेयरलिब सेट आपको त्रुटि के नीचे दे सकता है:

org.apache.oozie.service.ServiceException: E0104: पूरी तरह से सेवा [org.apache.oozie.service.ShareLibService] शुरू नहीं कर सका, शेयरलिब को कैश करने में सक्षम नहीं है। एक व्यवस्थापक को oozie-setup.sh के साथ शेयरलिब स्थापित करने और 'oozie व्यवस्थापक' CLI कमांड को शेयरबीएल को अद्यतन करने के लिए जारी करने की आवश्यकता है

इससे बचने के लिए, नीचे की तरह oozie-site.xml को संशोधित करें

cd $HOME/oozie
vi conf/oozie-site.xml
 

संपत्ति के नीचे जोड़ें

<property>
    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> 
    <value>*=/usr/local/hadoop/etc/hadoop/</value>
</property>
 

मान आपके $ HADOOP_HOME / etc / hadoop होना चाहिए, जहाँ सभी hadoff कॉन्फ़िगरेशन फ़ाइलें मौजूद हैं।

चरण 3.5: Oozie DB बनाएँ

cd $HOME/oozie
./bin/ooziedb.sh create -sqlfile oozie.sql -run
 

चरण 3.6: डेमॉन शुरू करें

ओजी को डेमॉन के रूप में शुरू करने के लिए निम्नलिखित कमांड का उपयोग करें:

./bin/oozied.sh start
 

रोकने के लिए

./bin/oozied.sh stop
 

त्रुटियों के लिए लॉग की जाँच करें, यदि कोई हो

cd $HOME/oozie/logs
tail -100f oozie.log
 

कमांड लाइन से ओजी की स्थिति की जांच करने के लिए निम्नलिखित कमांड का उपयोग करें:

$ ./bin/oozie admin -oozie http://localhost:11000/oozie -status
System mode: NORMAL
 

चरण 4: ग्राहक स्थापना

$ cd
$ cp oozie/oozie-client-4.3.0.tar.gz .
$ tar -xvf oozie-client-4.3.0.tar.gz
$ mv oozie-client-3.3.2 oozie-client
$ cd bin
 

.Bashrc फ़ाइल में PATH चर में $ HOME / oozie-client / bin जोड़ें और अपने टर्मिनल को पुनः आरंभ करें या करें

source $HOME/.bashrc
 

सेट अप के बारे में अधिक जानकारी के लिए, आप इस URL https://oozie.apache.org/docs/4.3.0/DG_QuickStart.html का संदर्भ ले सकते हैं।

अब आप अपने टर्मिनल में oozie को हडॉप जॉब सबमिट कर सकते हैं।

एक उदाहरण चलाने के लिए, आप इस URL का अनुसरण कर सकते हैं और https://oozie.apache.org/docs/4.3.0/DG_Examples.html चलाने के लिए अपना पहला उदाहरण सेट कर सकते हैं

उपरोक्त URL में मानचित्र को कम करने के दौरान आपको त्रुटि का सामना करना पड़ सकता है

java.io.IOException: java.net.ConnectException: Call from localhost.localdomain / 127.0.0.1 से 0.0.0.0:10020 कनेक्शन अपवाद पर विफल: java.net.ConnectException: कनेक्शन ने इनकार कर दिया; अधिक जानकारी के लिए देखें: http://wiki.apache.org/hadoop/ConnectionRefused

समाधान: mr-jobhistory-server.sh शुरू करें

cd $HADOOP_HOME/sbin
./mr-jobhistory-server.sh start historyserver
 

Job.properties फ़ाइल को संशोधित करने के बारे में ध्यान देने के लिए एक और बिंदु है:

nameNode=hdfs://localhost:9000
jobTracker=localhost:8032
 

आपके मामले में, यह अलग हो सकता है, जैसा कि मैं अपाचे हडूप का उपयोग कर रहा हूं, आप क्लाउडडर / एचडीपी या कुछ भी उपयोग कर सकते हैं

To run spark job, I have tried running in local[*], yarn-client and
yarn-cluster as master, but succeeded in local[*] only