Apache Oozie futtatása Az Enterprise Security Package csomaggal rendelkező Azure HDInsight-fürtökön
Az Apache Oozie egy munkafolyamat és koordinációs rendszer, amely apache Hadoop-feladatokat kezel. Az Oozie integrálva van a Hadoop-verembe, és a következő feladatokat támogatja:
- Apache MapReduce
- Apache Pig
- Apache Hive
- Apache Sqoop
Az Oozie használatával olyan feladatokat is ütemezhet, amelyek egy adott rendszerre vonatkoznak, például Java-programokra vagy rendszerhéjszkriptekre.
Előfeltétel
Egy Azure HDInsight Hadoop-fürt Enterprise Security Package (ESP) csomaggal. Lásd: HDInsight-fürtök konfigurálása ESP-vel.
Megjegyzés
Az Oozie nem ESP-fürtökön való használatával kapcsolatos részletes utasításokért lásd: Apache Oozie-munkafolyamatok használata Linux-alapú Azure HDInsightban.
Csatlakozás ESP-fürthöz
További információ a Secure Shellről (SSH), lásd: Csatlakozás a HDInsighthoz (Hadoop) SSH használatával.
Csatlakozzon a HDInsight-fürthöz SSH használatával:
ssh [DomainUserName]@<clustername>-ssh.azurehdinsight.net
A sikeres Kerberos-hitelesítés ellenőrzéséhez használja a
klist
parancsot. Ha nem, a használatávalkinit
indítsa el a Kerberos-hitelesítést.Jelentkezzen be a HDInsight-átjáróba a Azure Data Lake Storage eléréséhez szükséges OAuth-jogkivonat regisztrálásához:
curl -I -u [DomainUserName@Domain.com]:[DomainUserPassword] https://<clustername>.azurehdinsight.net
A sikeres regisztrációt a 200 OK állapotválaszkód jelzi. Ellenőrizze a felhasználónevet és a jelszót, ha jogosulatlan válasz érkezik, például 401.
A munkafolyamat definiálása
Az Oozie-munkafolyamat-definíciók az Apache Hadoop folyamatdefiníciós nyelven (hPDL) vannak megírva. A hPDL egy XML-folyamatdefiníciós nyelv. A munkafolyamat meghatározásához hajtsa végre a következő lépéseket:
Tartományi felhasználó munkaterületének beállítása:
hdfs dfs -mkdir /user/<DomainUser> cd /home/<DomainUserPath> cp /usr/hdp/<ClusterVersion>/oozie/doc/oozie-examples.tar.gz . tar -xvf oozie-examples.tar.gz hdfs dfs -put examples /user/<DomainUser>/
A helyére
DomainUser
írja be a tartomány felhasználónevét. Cserélje le a elemetDomainUserPath
a tartományfelhasználó kezdőkönyvtárának elérési útjára. Cserélje le a elemetClusterVersion
a fürt adatplatformjának verziójára.Új fájl létrehozásához és szerkesztéséhez használja az alábbi utasítást:
nano workflow.xml
A nanoszerkesztő megnyitása után adja meg a következő XML-fájlt a fájl tartalmaként:
<?xml version="1.0" encoding="UTF-8"?> <workflow-app xmlns="uri:oozie:workflow:0.4" name="map-reduce-wf"> <credentials> <credential name="metastore_token" type="hcat"> <property> <name>hcat.metastore.uri</name> <value>thrift://<active-headnode-name>-<clustername>.<Domain>.com:9083</value> </property> <property> <name>hcat.metastore.principal</name> <value>hive/_HOST@<Domain>.COM</value> </property> </credential> <credential name="hs2-creds" type="hive2"> <property> <name>hive2.server.principal</name> <value>${jdbcPrincipal}</value> </property> <property> <name>hive2.jdbc.url</name> <value>${jdbcURL}</value> </property> </credential> </credentials> <start to="mr-test" /> <action name="mr-test"> <map-reduce> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <prepare> <delete path="${nameNode}/user/${wf:user()}/examples/output-data/mrresult" /> </prepare> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> <property> <name>mapred.mapper.class</name> <value>org.apache.oozie.example.SampleMapper</value> </property> <property> <name>mapred.reducer.class</name> <value>org.apache.oozie.example.SampleReducer</value> </property> <property> <name>mapred.map.tasks</name> <value>1</value> </property> <property> <name>mapred.input.dir</name> <value>/user/${wf:user()}/${examplesRoot}/input-data/text</value> </property> <property> <name>mapred.output.dir</name> <value>/user/${wf:user()}/${examplesRoot}/output-data/mrresult</value> </property> </configuration> </map-reduce> <ok to="myHive2" /> <error to="fail" /> </action> <action name="myHive2" cred="hs2-creds"> <hive2 xmlns="uri:oozie:hive2-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <jdbc-url>${jdbcURL}</jdbc-url> <script>${hiveScript2}</script> <param>hiveOutputDirectory2=${hiveOutputDirectory2}</param> </hive2> <ok to="myHive" /> <error to="fail" /> </action> <action name="myHive" cred="metastore_token"> <hive xmlns="uri:oozie:hive-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> </configuration> <script>${hiveScript1}</script> <param>hiveOutputDirectory1=${hiveOutputDirectory1}</param> </hive> <ok to="end" /> <error to="fail" /> </action> <kill name="fail"> <message>Oozie job failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <end name="end" /> </workflow-app>
Cserélje le
clustername
a elemet a fürt nevére.A fájl mentéséhez válassza a Ctrl+X billentyűkombinációt. Írja be az Y értéket. Ezután válassza az Enter elemet.
A munkafolyamat két részre van osztva:
Megbízólevél. Ez a szakasz az Oozie-műveletek hitelesítéséhez használt hitelesítő adatokat veszi fel:
Ez a példa a Hive-műveletek hitelesítését használja. További információ: Művelethitelesítés.
A hitelesítőadat-szolgáltatás lehetővé teszi, hogy az Oozie-műveletek megszemélyesíthessék a felhasználót a Hadoop-szolgáltatások eléréséhez.
Akció. Ez a szakasz három műveletből áll: map-reduce, Hive server 2 és Hive server 1:
A térkép-csökkentési művelet egy példát futtat egy Oozie-csomagból a térkép-csökkentéshez, amely az összesített szószámot adja vissza.
A Hive server 2 és a Hive server 1 művelet egy HDInsighttal ellátott Hive-mintatáblán futtat lekérdezést.
A Hive-műveletek a hitelesítő adatok szakaszban meghatározott hitelesítő adatokat használják a hitelesítéshez a műveletelem kulcsszójának
cred
használatával.
A fájl
/user/<domainuser>/examples/apps/map-reduce/workflow.xml
másolásához használja aworkflow.xml
következő parancsot:hdfs dfs -put workflow.xml /user/<domainuser>/examples/apps/map-reduce/workflow.xml
Cserélje le a elemet
domainuser
a tartomány felhasználónevére.
Az Oozie-feladat tulajdonságfájljának meghatározása
A feladattulajdonságok új fájljának létrehozásához és szerkesztéséhez használja az alábbi utasítást:
nano job.properties
A nanoszerkesztő megnyitása után a fájl tartalmaként használja a következő XML-t:
nameNode=adl://home jobTracker=headnodehost:8050 queueName=default examplesRoot=examples oozie.wf.application.path=${nameNode}/user/[domainuser]/examples/apps/map-reduce/workflow.xml hiveScript1=${nameNode}/user/${user.name}/countrowshive1.hql hiveScript2=${nameNode}/user/${user.name}/countrowshive2.hql oozie.use.system.libpath=true user.name=[domainuser] jdbcPrincipal=hive/<active-headnode-name>.<Domain>.com@<Domain>.COM jdbcURL=[jdbcurlvalue] hiveOutputDirectory1=${nameNode}/user/${user.name}/hiveresult1 hiveOutputDirectory2=${nameNode}/user/${user.name}/hiveresult2
- Használja a
adl://home
nameNode
tulajdonság URI-ját, ha elsődleges fürttárolóként Azure Data Lake Storage Gen1-et. Ha Azure Blob Storage használ, váltson a következőre:wasb://home
. Ha Azure Data Lake Storage Gen2 használ, váltson a következőre:abfs://home
. - Cserélje le a elemet
domainuser
a tartomány felhasználónevére. - Cserélje le
ClusterShortName
a elemet a fürt rövid nevére. Ha például a fürt neve https:// [példahivatkozás] sechadoopcontoso.azurehdisnight.net, aclustershortname
fürt első hat karaktere: sechad. - Cserélje le a elemet
jdbcurlvalue
a Hive-konfiguráció JDBC URL-címére. Ilyen például a jdbc:hive2://headnodehost:10001/;transportMode=http. - A fájl mentéséhez válassza a Ctrl+X billentyűkombinációt, írja be a kifejezést
Y
, majd válassza az Enter billentyűt.
Ennek a tulajdonságfájlnak helyileg kell jelen lennie az Oozie-feladatok futtatásakor.
- Használja a
Egyéni Hive-szkriptek létrehozása Oozie-feladatokhoz
Az alábbi szakaszokban látható módon létrehozhatja a Hive-kiszolgáló 1 és a Hive server 2 két Hive-szkriptét.
Hive server 1 fájl
Hozzon létre és szerkesszen egy fájlt a Hive-kiszolgáló 1 műveleteihez:
nano countrowshive1.hql
Hozza létre a szkriptet:
INSERT OVERWRITE DIRECTORY '${hiveOutputDirectory1}' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select devicemake from hivesampletable limit 2;
Mentse a fájlt az Apache Hadoop elosztott fájlrendszerbe (HDFS):
hdfs dfs -put countrowshive1.hql countrowshive1.hql
Hive server 2 fájl
Hozzon létre és szerkesszen egy mezőt a Hive Server 2 műveleteihez:
nano countrowshive2.hql
Hozza létre a szkriptet:
INSERT OVERWRITE DIRECTORY '${hiveOutputDirectory1}' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select devicemodel from hivesampletable limit 2;
Mentse a fájlt a HDFS-be:
hdfs dfs -put countrowshive2.hql countrowshive2.hql
Oozie-feladatok elküldése
Az Oozie-feladatok ESP-fürtökhöz való elküldése olyan, mintha Oozie-feladatokat küldenének be nem ESP-fürtökön.
További információ: Munkafolyamat definiálása és futtatása Linux-alapú Azure HDInsighton az Apache Oozie és az Apache Hadoop használatával.
Oozie-feladat beküldésének eredményei
A rendszer Oozie-feladatokat futtat a felhasználó számára. Így az Apache Hadoop YARN és az Apache Ranger auditnaplói is megjelenítik a megszemélyesített felhasználóként futtatott feladatokat. Egy Oozie-feladat parancssori felületének kimenete a következő kódhoz hasonlóan néz ki:
Job ID : 0000015-180626011240801-oozie-oozi-W
------------------------------------------------------------------------------------------------
Workflow Name : map-reduce-wf
App Path : adl://home/user/alicetest/examples/apps/map-reduce/wf.xml
Status : SUCCEEDED
Run : 0
User : alicetest
Group : -
Created : 2018-06-26 19:25 GMT
Started : 2018-06-26 19:25 GMT
Last Modified : 2018-06-26 19:30 GMT
Ended : 2018-06-26 19:30 GMT
CoordAction ID: -
Actions
------------------------------------------------------------------------------------------------
ID Status Ext ID ExtStatus ErrCode
------------------------------------------------------------------------------------------------
0000015-180626011240801-oozie-oozi-W@:start: OK - OK -
------------------------------------------------------------------------------------------------
0000015-180626011240801-oozie-oozi-W@mr-test OK job_1529975666160_0051 SUCCEEDED -
------------------------------------------------------------------------------------------------
0000015-180626011240801-oozie-oozi-W@myHive2 OK job_1529975666160_0053 SUCCEEDED -
------------------------------------------------------------------------------------------------
0000015-180626011240801-oozie-oozi-W@myHive OK job_1529975666160_0055 SUCCEEDED -
------------------------------------------------------------------------------------------------
0000015-180626011240801-oozie-oozi-W@end OK - OK -
-----------------------------------------------------------------------------------------------
A Hive-kiszolgáló 2 műveleteinek Ranger-auditnaplói azt mutatják, hogy Oozie futtatja a műveletet a felhasználó számára. A Ranger és a YARN nézet csak a fürt rendszergazdája számára látható.
Felhasználói engedélyezés konfigurálása az Oozie-ban
Az Oozie önmagában is rendelkezik egy felhasználói engedélyezési konfigurációval, amely megakadályozhatja, hogy a felhasználók leállítsanak vagy töröljék más felhasználók feladatait. A konfiguráció engedélyezéséhez állítsa a értéket a oozie.service.AuthorizationService.security.enabled
értékre true
.
További információ: Az Apache Oozie telepítése és konfigurálása.
Az olyan összetevők esetében, mint a Hive server 1, ahol a Ranger beépülő modul nem érhető el vagy nem támogatott, csak durva hdfS-engedélyezés lehetséges. A részletesebb engedélyezés csak Ranger beépülő modulokon keresztül érhető el.
Az Oozie webes felhasználói felületének lekérése
Az Oozie webes felhasználói felülete webes nézetet biztosít a fürt Oozie-feladatainak állapotáról. A webes felhasználói felület beszerzéséhez hajtsa végre a következő lépéseket az ESP-fürtökben:
Adjon hozzá egy peremhálózati csomópontot , és engedélyezze az SSH Kerberos-hitelesítést.
Az Oozie webes felhasználói felületének lépéseit követve engedélyezze az SSH-bújtatást a peremcsomóponthoz, és hozzáférjen a webes felhasználói felülethez.
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: