Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Naučte se používat rozhraní REST API Apache Hive WebHCat ke spouštění úloh MapReduce v clusteru Apache Hadoop v clusteru HDInsight. Curl se používá k předvedení toho, jak můžete pracovat se službou HDInsight pomocí nezpracovaných požadavků HTTP ke spouštění úloh MapReduce.
Poznámka:
Pokud už znáte použití linuxových serverů Hadoop, ale s HDInsight začínáte, přečtěte si, co potřebujete vědět o Apache Hadoopu založeném na Linuxu v dokumentu HDInsight .
Požadavky
- Cluster Apache Hadoop ve službě HDInsight. Viz Vytváření clusterů Apache Hadoop pomocí webu Azure Portal.
Buď:
Spuštění úlohy MapReduce
Poznámka:
Pokud používáte Curl nebo jakoukoli jinou komunikaci REST s WebHCat, musíte požadavky ověřit zadáním uživatelského jména a hesla správce clusteru HDInsight. Název clusteru musíte použít jako součást identifikátoru URI, který se používá k odesílání požadavků na server.
Rozhraní REST API je zabezpečené pomocí základního ověřování přístupu. Vždy byste měli posílat žádosti pomocí protokolu HTTPS, abyste zajistili, že se vaše přihlašovací údaje bezpečně posílají na server.
Curl
Pro usnadnění použití nastavte níže uvedené proměnné. Tento příklad je založený na prostředí Systému Windows, podle potřeby revidujte ho pro vaše prostředí.
set CLUSTERNAME= set PASSWORD=Z příkazového řádku pomocí následujícího příkazu ověřte, že se můžete připojit ke clusteru HDInsight:
curl -u admin:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/statusParametry použité v tomto příkazu jsou následující:
- -u: Označuje uživatelské jméno a heslo použité k ověření žádosti.
- -G: Označuje, že tato operace je požadavkem GET.
Začátek identifikátoru URI
https://CLUSTERNAME.azurehdinsight.net/templeton/v1je stejný pro všechny požadavky.Obdržíte odpověď podobnou následujícímu formátu JSON:
{"version":"v1","status":"ok"}K odeslání úlohy MapReduce použijte následující příkaz. Podle potřeby upravte cestu na jq .
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 .idKonec identifikátoru URI (/mapreduce/jar) informuje WebHCat, že tento požadavek spustí úlohu MapReduce z třídy v souboru JAR. Parametry použité v tomto příkazu jsou následující:
-
-d:
-Gnepoužívá se, takže požadavek se použije jako výchozí pro metodu POST.-durčuje datové hodnoty, které se odesílají s požadavkem.- user.name: Uživatel, který spouští příkaz
- jar: Umístění souboru JAR obsahujícího třídu, která se má spustit.
- třída: Třída, která obsahuje logiku MapReduce
- arg: Argumenty, které mají být předány do úlohy MapReduce. V tomto případě vstupní textový soubor a adresář, které se používají pro výstup.
Tento příkaz by měl vrátit ID úlohy, které lze použít ke kontrole stavu úlohy:
job_1415651640909_0026.-
-d:
Pokud chcete zkontrolovat stav úlohy, použijte následující příkaz. Nahraďte hodnotu
JOBIDskutečnou hodnotou vrácenou v předchozím kroku. Podle potřeby upravte umístění jq .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
Pro usnadnění použití nastavte níže uvedené proměnné. Nahraďte
CLUSTERNAMEskutečným názvem clusteru. Po zobrazení výzvy spusťte příkaz a zadejte přihlašovací heslo clusteru.$clusterName="CLUSTERNAME" $creds = Get-Credential -UserName admin -Message "Enter the cluster login password"Pomocí následujícího příkazu ověřte, že se můžete připojit ke clusteru HDInsight:
$resp = Invoke-WebRequest -Uri "https://$clustername.azurehdinsight.net/templeton/v1/status" ` -Credential $creds ` -UseBasicParsing $resp.ContentObdržíte odpověď podobnou následujícímu formátu JSON:
{"version":"v1","status":"ok"}Pokud chcete odeslat úlohu MapReduce, použijte následující příkaz:
$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 $jobIDKonec identifikátoru URI (/mapreduce/jar) informuje WebHCat, že tento požadavek spustí úlohu MapReduce z třídy v souboru JAR. Parametry použité v tomto příkazu jsou následující:
- user.name: Uživatel, který spouští příkaz
- jar: Umístění souboru JAR obsahujícího třídu, která se má spustit.
- třída: Třída, která obsahuje logiku MapReduce
- arg: Argumenty, které mají být předány do úlohy MapReduce. V tomto případě vstupní textový soubor a adresář, které se používají pro výstup.
Tento příkaz by měl vrátit ID úlohy, které lze použít ke kontrole stavu úlohy:
job_1415651640909_0026.Pokud chcete zkontrolovat stav úlohy, použijte následující příkaz:
$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
Obě metody
Pokud je úloha dokončená, vrácený stav je
SUCCEEDED.Když se stav úlohy změní na
SUCCEEDED, můžete načíst výsledky úlohy z úložiště objektů blob v Azure. Parametrstatusdirpředaný s dotazem obsahuje umístění výstupního souboru. V tomto příkladu je umístění/example/curl. Tato adresa ukládá výstup úlohy do výchozího úložiště clusterů na/example/curladrese .
Tyto soubory můžete vypsat a stáhnout pomocí Azure CLI. Další informace o práci se službou Azure Blob Storage pomocí Azure CLI najdete v rychlém startu: Vytvoření, stažení a výpis objektů blob pomocí Azure CLI.
Další kroky
Informace o dalších způsobech práce se systémem Hadoop ve službě HDInsight:
- Použití MapReduce s Apache Hadoopem ve službě HDInsight
- Použití Apache Hivu s Apache Hadoopem ve službě HDInsight
Další informace o rozhraní REST, které se používá v tomto článku, naleznete v tématu WebHCat Reference.