MapReduce-feladatok futtatása AZ Apache Hadooptal HDInsighton REST használatával
Megtudhatja, hogyan futtathat MapReduce-feladatokat az Apache Hive WebHCat REST API használatával egy Apache Hadoop on HDInsight-fürtön. A Curl bemutatja, hogyan használhatja a HDInsightot nyers HTTP-kérések használatával a MapReduce-feladatok futtatásához.
Megjegyzés
Ha már ismeri a Linux-alapú Hadoop-kiszolgálók használatát, de még nem ismeri a HDInsightot, olvassa el a Mit kell tudni a HdInsighton futó Linux-alapú Apache Hadoopról ? című dokumentumot.
Előfeltételek
- Egy Apache Hadoop-fürt a HDInsighton. Lásd: Apache Hadoop-fürtök létrehozása a Azure Portal használatával.
Vagy:
MapReduce-feladat futtatása
Megjegyzés
Ha Curl- vagy egyéb REST-kommunikációt használ a WebHCat szolgáltatással, hitelesítenie kell a kéréseket a HDInsight-fürt rendszergazdai felhasználónevének és jelszavának megadásával. A fürt nevét kell használnia annak az URI-nak a részeként, amellyel a kéréseket elküldheti a kiszolgálónak.
A REST API-t alapszintű hozzáférési hitelesítés védi. Mindig https használatával kell kéréseket küldenie, hogy a hitelesítő adatok biztonságosan el legyenek küldve a kiszolgálóra.
Curl
A könnyű használat érdekében állítsa be az alábbi változókat. Ez a példa egy Windows-környezeten alapul, és szükség szerint felülvizsgálja a környezetet.
set CLUSTERNAME= set PASSWORD=
Egy parancssorból a következő paranccsal ellenőrizze, hogy tud-e kapcsolódni a HDInsight-fürthöz:
curl -u admin:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/status
Ezen parancs paraméterei a következők:
- -u: A kérelem hitelesítéséhez használt felhasználónevet és jelszót jelzi
- -G: Azt jelzi, hogy ez a művelet EGY GET kérés
Az URI kezdete minden
https://CLUSTERNAME.azurehdinsight.net/templeton/v1
kérésnél megegyezik.A következő JSON-hoz hasonló választ kap:
{"version":"v1","status":"ok"}
MapReduce-feladat elküldéséhez használja az alábbi parancsot. Szükség szerint módosítsa a jq elérési útját.
curl -u admin:%PASSWORD% -d user.name=admin ^ -d jar=/example/jars/hadoop-mapreduce-examples.jar ^ -d class=wordcount -d arg=/example/data/gutenberg/davinci.txt -d arg=/example/data/output ^ https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/mapreduce/jar | ^ C:\HDI\jq-win64.exe .id
Az URI vége (/mapreduce/jar) azt jelzi a WebHCatnek, hogy ez a kérés egy MapReduce-feladatot indít el egy jar-fájl egyik osztályából. Ezen parancs paraméterei a következők:
- -d:
-G
nincs használatban, ezért a kérés alapértelmezés szerint a POST metódusra érvényes.-d
a kéréssel küldött adatértékeket adja meg.- user.name: A parancsot futtató felhasználó
- jar: A futtatandó osztályt tartalmazó jar-fájl helye
- class: A MapReduce logikát tartalmazó osztály
- arg: A MapReduce feladatnak átadni kívánt argumentumok. Ebben az esetben a bemeneti szövegfájl és a kimenethez használt könyvtár
Ennek a parancsnak egy feladatazonosítót kell visszaadnia, amely a feladat állapotának ellenőrzésére használható:
job_1415651640909_0026
.- -d:
A feladat állapotának ellenőrzéséhez használja az alábbi parancsot. Cserélje le az értéket
JOBID
az előző lépésben visszaadott tényleges értékre. Szükség szerint módosítsa a jq helyét.set JOBID=job_1415651640909_0026 curl -G -u admin:%PASSWORD% -d user.name=admin https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/jobs/%JOBID% | ^ C:\HDI\jq-win64.exe .status.state
PowerShell
A könnyű használat érdekében állítsa be az alábbi változókat. Cserélje le
CLUSTERNAME
a elemet a tényleges fürtnévre. Futtassa a parancsot, és amikor a rendszer kéri, adja meg a fürt bejelentkezési jelszavát.$clusterName="CLUSTERNAME" $creds = Get-Credential -UserName admin -Message "Enter the cluster login password"
Az alábbi paranccsal ellenőrizze, hogy tud-e csatlakozni a HDInsight-fürthöz:
$resp = Invoke-WebRequest -Uri "https://$clustername.azurehdinsight.net/templeton/v1/status" ` -Credential $creds ` -UseBasicParsing $resp.Content
A következő JSON-hoz hasonló választ kap:
{"version":"v1","status":"ok"}
MapReduce-feladat elküldéséhez használja a következő parancsot:
$reqParams = @{} $reqParams."user.name" = "admin" $reqParams.jar = "/example/jars/hadoop-mapreduce-examples.jar" $reqParams.class = "wordcount" $reqParams.arg = @() $reqParams.arg += "/example/data/gutenberg/davinci.txt" $reqparams.arg += "/example/data/output" $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/templeton/v1/mapreduce/jar" ` -Credential $creds ` -Body $reqParams ` -Method POST ` -UseBasicParsing $jobID = (ConvertFrom-Json $resp.Content).id $jobID
Az URI vége (/mapreduce/jar) azt jelzi a WebHCatnek, hogy ez a kérés egy MapReduce-feladatot indít el egy jar-fájl egyik osztályából. Ezen parancs paraméterei a következők:
- user.name: A parancsot futtató felhasználó
- jar: A futtatandó osztályt tartalmazó jar-fájl helye
- class: A MapReduce logikát tartalmazó osztály
- arg: A MapReduce feladatnak átadni kívánt argumentumok. Ebben az esetben a bemeneti szövegfájl és a kimenethez használt könyvtár
Ennek a parancsnak egy feladatazonosítót kell visszaadnia, amely a feladat állapotának ellenőrzésére használható:
job_1415651640909_0026
.A feladat állapotának ellenőrzéséhez használja a következő parancsot:
$reqParams=@{"user.name"="admin"} $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/templeton/v1/jobs/$jobID" ` -Credential $creds ` -Body $reqParams ` -UseBasicParsing # ConvertFrom-JSON can't handle duplicate names with different case # So change one to prevent the error $fixDup=$resp.Content.Replace("jobID","job_ID") (ConvertFrom-Json $fixDup).status.state
Mindkét módszer
Ha a feladat befejeződött, a visszaadott állapot a következő:
SUCCEEDED
.Amikor a feladat állapota a következőre
SUCCEEDED
változott: , a feladat eredményeit lekérheti az Azure Blob Storage-ból. Astatusdir
lekérdezéssel átadott paraméter tartalmazza a kimeneti fájl helyét. Ebben a példában a hely a következő/example/curl
: . Ez a cím a feladat kimenetét a fürtök alapértelmezett tárolójában tárolja a következő helyen:/example/curl
.
Ezeket a fájlokat az Azure CLI használatával listázhatja és letöltheti. Az Azure CLI-vel az Azure Blob Storage használatával kapcsolatos további információkért lásd : Gyorsútmutató: Blobok létrehozása, letöltése és listázása az Azure CLI-vel.
Következő lépések
További információk a Hadoop hdInsighton való használatával kapcsolatos egyéb módokról:
- A MapReduce használata az Apache Hadooptal a HDInsighton
- Az Apache Hive használata az Apache Hadooptal a HDInsighton
A cikkben használt REST felülettel kapcsolatos további információkért lásd a WebHCat-referenciát.