MapReduce-feladatok futtatása az Apache Hadooptal a HDInsighton a PowerShell használatával
Ez a dokumentum egy példa arra, hogy az Azure PowerShell használatával futtathat Egy MapReduce-feladatot egy HDInsight-fürtön futó Hadoopban.
Előfeltételek
Apache Hadoop-fürt a HDInsighton. Lásd: Apache Hadoop-fürtök létrehozása az Azure Portal használatával.
A PowerShell Az modul telepítve van.
MapReduce-feladat futtatása
Az Azure PowerShell olyan parancsmagokat biztosít, amelyek lehetővé teszik a MapReduce-feladatok távoli futtatását a HDInsighton. A PowerShell belsőleg REST-hívásokat indít a HDInsight-fürtön futó WebHCat (korábbi nevén Templeton) felé.
Az alábbi parancsmagok a MapReduce-feladatok távoli HDInsight-fürtön való futtatásakor használatosak.
Parancsmag | Leírás |
---|---|
Connect-AzAccount | Hitelesíti az Azure PowerShellt az Azure-előfizetésében. |
New-AzHDInsightMapReduceJobDefinition | Új feladatdefiníciót hoz létre a megadott MapReduce-adatok használatával. |
Start-AzHDInsightJob | Elküldi a feladatdefiníciót a HDInsightnak, és elindítja a feladatot. A függvény egy feladatobjektumot ad vissza. |
Wait-AzHDInsightJob | A feladat objektummal ellenőrzi a feladat állapotát. Megvárja, amíg a feladat befejeződik, vagy túllépi a várakozási időt. |
Get-AzHDInsightJobOutput | A feladat kimenetének lekérésére szolgál. |
Az alábbi lépések bemutatják, hogyan futtathat feladatokat a HDInsight-fürtben ezek a parancsmagok.
Szerkesztő használatával mentse a következő kódot mapreducejob.ps1 néven.
# Login to your Azure subscription $context = Get-AzContext if ($context -eq $null) { Connect-AzAccount } $context # Get cluster info $clusterName = Read-Host -Prompt "Enter the HDInsight cluster name" $creds=Get-Credential -Message "Enter the login for the cluster" #Get the cluster info so we can get the resource group, storage, etc. $clusterInfo = Get-AzHDInsightCluster -ClusterName $clusterName $resourceGroup = $clusterInfo.ResourceGroup $storageAccountName=$clusterInfo.DefaultStorageAccount.split('.')[0] $container=$clusterInfo.DefaultStorageContainer #NOTE: This assumes that the storage account is in the same resource # group as the cluster. If it is not, change the # --ResourceGroupName parameter to the group that contains storage. $storageAccountKey=(Get-AzStorageAccountKey ` -Name $storageAccountName ` -ResourceGroupName $resourceGroup)[0].Value #Create a storage context $context = New-AzStorageContext ` -StorageAccountName $storageAccountName ` -StorageAccountKey $storageAccountKey #Define the MapReduce job #NOTE: If using an HDInsight 2.0 cluster, use hadoop-examples.jar instead. # -JarFile = the JAR containing the MapReduce application # -ClassName = the class of the application # -Arguments = The input file, and the output directory $wordCountJobDefinition = New-AzHDInsightMapReduceJobDefinition ` -JarFile "/example/jars/hadoop-mapreduce-examples.jar" ` -ClassName "wordcount" ` -Arguments ` "/example/data/gutenberg/davinci.txt", ` "/example/data/WordCountOutput" #Submit the job to the cluster Write-Host "Start the MapReduce job..." -ForegroundColor Green $wordCountJob = Start-AzHDInsightJob ` -ClusterName $clusterName ` -JobDefinition $wordCountJobDefinition ` -HttpCredential $creds #Wait for the job to complete Write-Host "Wait for the job to complete..." -ForegroundColor Green Wait-AzHDInsightJob ` -ClusterName $clusterName ` -JobId $wordCountJob.JobId ` -HttpCredential $creds # Download the output Get-AzStorageBlobContent ` -Blob 'example/data/WordCountOutput/part-r-00000' ` -Container $container ` -Destination output.txt ` -Context $context # Print the output of the job. Get-AzHDInsightJobOutput ` -Clustername $clusterName ` -JobId $wordCountJob.JobId ` -HttpCredential $creds
Nyisson meg egy új Azure PowerShell-parancssort . Módosítsa a könyvtárakat a mapreducejob.ps1 fájl helyére, majd futtassa a szkriptet a következő paranccsal:
.\mapreducejob.ps1
A szkript futtatásakor a rendszer kérni fogja a HDInsight-fürt nevét és a fürt bejelentkezését. Előfordulhat, hogy a rendszer kérni fogja az Azure-előfizetés hitelesítését is.
Amikor a feladat befejeződött, a következő szöveghez hasonló kimenet jelenik meg:
Cluster : CLUSTERNAME ExitCode : 0 Name : wordcount PercentComplete : map 100% reduce 100% Query : State : Completed StatusDirectory : f1ed2028-afe8-402f-a24b-13cc17858097 SubmissionTime : 12/5/2014 8:34:09 PM JobId : job_1415949758166_0071
Ez a kimenet azt jelzi, hogy a feladat sikeresen befejeződött.
Feljegyzés
Ha az ExitCode értéke nem 0, tekintse meg a hibaelhárítást.
Ez a példa a letöltött fájlokat egy output.txt fájlba is tárolja abban a könyvtárban, amelyből a szkriptet futtatja.
Kimenet megtekintése
A feladat által létrehozott szavak és számok megtekintéséhez nyissa meg a output.txt fájlt egy szövegszerkesztőben.
Feljegyzés
A MapReduce-feladatok kimeneti fájljai nem módosíthatók. Ha tehát újrafuttatja ezt a mintát, módosítania kell a kimeneti fájl nevét.
Hibaelhárítás
Ha a feladat befejezésekor nem ad vissza információt, tekintse meg a feladat hibáit. A feladat hibainformációinak megtekintéséhez adja hozzá a következő parancsot a mapreducejob.ps1 fájl végéhez. Ezután mentse a fájlt, és futtassa újra a szkriptet.
# Print the output of the WordCount job.
Write-Host "Display the standard output ..." -ForegroundColor Green
Get-AzHDInsightJobOutput `
-Clustername $clusterName `
-JobId $wordCountJob.JobId `
-HttpCredential $creds `
-DisplayOutputType StandardError
Ez a parancsmag a feladat futtatásakor az STDERR-nek írt információkat adja vissza.
Következő lépések
Mint látható, az Azure PowerShell egyszerű módot kínál a MapReduce-feladatok HDInsight-fürtön való futtatására, a feladat állapotának figyelésére és a kimenet lekérésére. További információ a Hadoop HDInsighton való használatával kapcsolatos egyéb módokról:
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: