Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pelajari cara menggunakan APACHE Hive WebHCat REST API untuk menjalankan pekerjaan MapReduce pada Apache Hadoop pada kluster HDInsight. Curl digunakan untuk menunjukkan bagaimana Anda dapat berinteraksi dengan HDInsight dengan menggunakan permintaan HTTP mentah untuk menjalankan pekerjaan MapReduce.
Nota
Jika Anda sudah terbiasa menggunakan server Hadoop berbasis Linux, tetapi Anda baru mengenal HDInsight, lihat Apa yang perlu Anda ketahui tentang Apache Hadoop berbasis Linux pada dokumen HDInsight .
Prasyarat
- Kluster Apache Hadoop di Microsoft Azure HDInsight. Lihat Membuat kluster Apache Hadoop menggunakan portal Microsoft Azure.
Yaitu:
Jalankan pekerjaan MapReduce
Nota
Saat Anda menggunakan Curl atau komunikasi REST lainnya dengan WebHCat, Anda harus mengautentikasi permintaan dengan memberikan nama pengguna dan kata sandi administrator kluster HDInsight. Anda harus menggunakan nama kluster sebagai bagian dari URI yang digunakan untuk mengirim permintaan ke server.
REST API diamankan dengan menggunakan autentikasi akses dasar. Anda harus selalu membuat permintaan dengan menggunakan HTTPS untuk memastikan bahwa kredensial Anda dikirim dengan aman ke server.
Curl
Untuk kemudahan penggunaan, atur variabel di bawah ini. Contoh ini didasarkan pada lingkungan Windows, revisi sesuai kebutuhan untuk lingkungan Anda.
set CLUSTERNAME= set PASSWORD=Dari baris perintah, gunakan perintah berikut untuk memverifikasi bahwa Anda dapat tersambung ke kluster HDInsight Anda:
curl -u admin:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/statusParameter yang digunakan dalam perintah ini adalah sebagai berikut:
- -u: Menunjukkan nama pengguna dan kata sandi yang digunakan untuk mengautentikasi permintaan
- -G: Menunjukkan bahwa operasi ini adalah permintaan GET
Awal URI,
https://CLUSTERNAME.azurehdinsight.net/templeton/v1, sama untuk semua permintaan.Anda menerima respons yang mirip dengan JSON berikut:
{"version":"v1","status":"ok"}Untuk mengirimkan pekerjaan MapReduce, gunakan perintah berikut. Ubah jalur ke jq sesuai kebutuhan.
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 .idAkhir URI (/mapreduce/jar) memberi tahu WebHCat bahwa permintaan ini memulai pekerjaan MapReduce dari kelas dalam file jar. Parameter yang digunakan dalam perintah ini adalah sebagai berikut:
-
-d:
-Gtidak digunakan, sehingga permintaan default ke metode POST.-dmenentukan nilai data yang dikirim dengan permintaan.- user.name: Pengguna yang menjalankan perintah
- jar: Lokasi file jar yang berisi kelas yang akan dijalankan
- kelas: Kelas yang berisi logika MapReduce
- arg: Argumen yang akan diteruskan ke pekerjaan MapReduce. Dalam hal ini, file teks input dan direktori yang digunakan untuk output
Perintah ini harus mengembalikan ID pekerjaan yang dapat digunakan untuk memeriksa status pekerjaan:
job_1415651640909_0026.-
-d:
Untuk memeriksa status pekerjaan, gunakan perintah berikut. Ganti nilai untuk
JOBIDdengan nilai aktual yang dikembalikan pada langkah sebelumnya. Revisi lokasi jq sesuai kebutuhan.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
Untuk kemudahan penggunaan, atur variabel di bawah ini. Ganti
CLUSTERNAMEdengan nama kluster Anda yang sebenarnya. Jalankan perintah dan masukkan kata sandi masuk kluster saat diminta.$clusterName="CLUSTERNAME" $creds = Get-Credential -UserName admin -Message "Enter the cluster login password"Gunakan perintah berikut untuk memverifikasi bahwa Anda dapat tersambung ke kluster HDInsight Anda:
$resp = Invoke-WebRequest -Uri "https://$clustername.azurehdinsight.net/templeton/v1/status" ` -Credential $creds ` -UseBasicParsing $resp.ContentAnda menerima respons yang mirip dengan JSON berikut:
{"version":"v1","status":"ok"}Untuk mengirimkan pekerjaan MapReduce, gunakan perintah berikut:
$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 $jobIDAkhir URI (/mapreduce/jar) memberi tahu WebHCat bahwa permintaan ini memulai pekerjaan MapReduce dari kelas dalam file jar. Parameter yang digunakan dalam perintah ini adalah sebagai berikut:
- user.name: Pengguna yang menjalankan perintah
- jar: Lokasi file jar yang berisi kelas yang akan dijalankan
- kelas: Kelas yang berisi logika MapReduce
- arg: Argumen yang akan diteruskan ke pekerjaan MapReduce. Dalam hal ini, file teks input dan direktori yang digunakan untuk menghasilkan output
Perintah ini harus mengembalikan ID pekerjaan yang dapat digunakan untuk memeriksa status pekerjaan:
job_1415651640909_0026.Untuk memeriksa status pekerjaan, gunakan perintah berikut:
$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
Kedua metode
Jika pekerjaan selesai, status yang dikembalikan adalah
SUCCEEDED.Ketika status pekerjaan telah berubah menjadi
SUCCEEDED, Anda dapat mengambil hasil pekerjaan dari penyimpanan Azure Blob. Parameterstatusdiryang diteruskan dengan kueri berisi lokasi file output. Dalam contoh ini, lokasinya adalah/example/curl. Alamat ini menyimpan output pekerjaan dalam penyimpanan default kluster di/example/curl.
Anda dapat mencantumkan dan mengunduh file-file ini menggunakan Azure CLI. Untuk informasi selengkapnya tentang menggunakan Azure CLI untuk bekerja dengan penyimpanan Azure Blob, lihat Mulai Cepat: Membuat, mengunduh, dan mencantumkan blob dengan Azure CLI.
Langkah berikutnya
Untuk informasi tentang cara lain Anda dapat bekerja dengan Hadoop di Microsoft Azure HDInsight:
- Menggunakan MapReduce dengan Apache Hadoop di Microsoft Azure HDInsight
- Menggunakan Apache Hive dengan Apache Hadoop di Microsoft Azure HDInsight
Untuk informasi selengkapnya tentang antarmuka REST yang digunakan dalam artikel ini, lihat Referensi WebHCat.