Gunakan Azure PowerShell untuk membuat kluster HDInsight dengan Azure Data Lake Storage Gen1 (sebagai penyimpanan tambahan)
Pelajari cara menggunakan Azure PowerShell untuk mengonfigurasi kluster HDInsight dengan Azure Data Lake Storage Gen1, sebagai penyimpanan tambahan. Untuk petunjuk tentang cara membuat kluster HDInsight dengan Data Lake Storage Gen1 sebagai penyimpanan default, lihat Membuat kluster HDInsight dengan Data Lake Storage Gen1 sebagai penyimpanan default.
Catatan
Jika Anda akan menggunakan Data Lake Storage Gen1 sebagai penyimpanan tambahan untuk klaster HDInsight, kami sangat menyarankan Anda melakukannya saat membuat kluster seperti yang dijelaskan dalam artikel ini. Menambahkan Data Lake Storage Gen1 sebagai penyimpanan tambahan ke kluster HDInsight yang ada merupakan proses yang rumit dan rentan terhadap kesalahan.
Untuk jenis kluster yang didukung, Data Lake Storage Gen1 dapat digunakan sebagai penyimpanan default atau akun penyimpanan tambahan. Ketika Data Lake Storage Gen1 digunakan sebagai penyimpanan tambahan, akun penyimpanan default untuk kluster akan tetap menjadi penyimpanan Azure Blob (WASB) dan file terkait kluster (seperti log, dll.) masih ditulis ke penyimpanan default, sementara data yang ingin Anda proses dapat disimpan di Data Lake Storage Gen1. Menggunakan Data Lake Storage Gen1 sebagai akun penyimpanan tambahan tidak mempengaruhi performa atau kemampuan untuk membaca/menulis ke penyimpanan dari kluster.
Menggunakan Data Lake Storage Gen1 untuk penyimpanan kluster HDInsight
Berikut adalah beberapa pertimbangan penting untuk menggunakan HDInsight dengan Data Lake Storage Gen1:
- Opsi untuk membuat kluster HDInsight dengan akses ke Data Lake Storage Gen1 sebagai penyimpanan tambahan tersedia untuk HDInsight versi 3.2, 3.4, 3.5 dan 3.6.
Mengonfigurasi HDInsight untuk bekerja dengan Data Lake Storage Gen1 menggunakan PowerShell melibatkan langkah-langkah berikut:
- Membuat akun Data Lake Storage Gen1
- Menyiapkan autentikasi untuk akses berbasis peran ke Data Lake Storage Gen1
- Buat kluster HDInsight dengan autentikasi ke Data Lake Storage Gen1
- Jalankan tugas pengujian di kluster
Prasyarat
Catatan
Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Sebelum memulai tutorial ini, Anda harus memiliki hal berikut:
Langganan Azure. Lihat Dapatkan uji coba gratis Azure.
Azure PowerShell 1.0 atau yang lebih baru. Lihat Cara menginstal dan mengonfigurasi Azure PowerShell.
Windows SDK. Anda dapat menginstalnya dari sini. Anda menggunakan ini untuk membuat sertifikat keamanan.
Microsoft Entra perwakilan layanan. Langkah-langkah dalam tutorial ini memberikan instruksi tentang cara membuat perwakilan layanan di Microsoft Entra ID. Namun, Anda harus menjadi administrator Microsoft Entra untuk dapat membuat perwakilan layanan. Jika Anda adalah administrator Microsoft Entra, Anda dapat melewati prasyarat ini dan melanjutkan tutorial.
Jika Anda bukan administrator Microsoft Entra, Anda tidak akan dapat melakukan langkah-langkah yang diperlukan untuk membuat perwakilan layanan. Dalam kasus seperti itu, administrator Microsoft Entra Anda harus terlebih dahulu membuat perwakilan layanan sebelum Anda dapat membuat kluster HDInsight dengan Data Lake Storage Gen1. Selain itu, perwakilan layanan harus dibuat menggunakan sertifikat, seperti yang dijelaskan di Membuat perwakilan layanan dengan sertifikat.
Membuat akun Data Lake Storage Gen1
Ikuti langkah-langkah ini untuk membuat akun Data Lake Storage Gen1.
Dari desktop Anda, buka jendela Azure PowerShell baru, dan masukkan cuplikan berikut. Saat diminta untuk masuk, pastikan Anda masuk sebagai salah satu administrator/pemilik langganan:
# Log in to your Azure account Connect-AzAccount # List all the subscriptions associated to your account Get-AzSubscription # Select a subscription Set-AzContext -SubscriptionId <subscription ID> # Register for Data Lake Storage Gen1 Register-AzResourceProvider -ProviderNamespace "Microsoft.DataLakeStore"
Catatan
Jika Anda menerima kesalahan yang mirip dengan
Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid
saat mendaftarkan penyedia sumber daya Data Lake Storage Gen1, kemungkinan langganan Anda tidak disetujui untuk Data Lake Storage Gen1. Pastikan Anda mengaktifkan langganan Azure untuk Data Lake Storage Gen1 dengan mengikuti instruksiini.Akun penyimpanan dengan Data Lake Storage Gen1 dikaitkan dengan Grup Sumber Daya Azure. Mulailah dengan membuat Grup Sumber Daya Azure.
$resourceGroupName = "<your new resource group name>" New-AzResourceGroup -Name $resourceGroupName -Location "East US 2"
Anda akan melihat output seperti ini:
ResourceGroupName : hdiadlgrp Location : eastus2 ProvisioningState : Succeeded Tags : ResourceId : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
Buat akun penyimpanan dengan Data Lake Storage Gen1. Nama akun yang Anda tentukan hanya boleh berisi huruf kecil dan angka.
$dataLakeStorageGen1Name = "<your new storage account with Data Lake Storage Gen1 name>" New-AzDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $dataLakeStorageGen1Name -Location "East US 2"
Anda akan melihat output seperti teks di bawah ini:
... ProvisioningState : Succeeded State : Active CreationTime : 5/5/2017 10:53:56 PM EncryptionState : Enabled ... LastModifiedTime : 5/5/2017 10:53:56 PM Endpoint : hdiadlstore.azuredatalakestore.net DefaultGroup : Id : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp/providers/Microsoft.DataLakeStore/accounts/hdiadlstore Name : hdiadlstore Type : Microsoft.DataLakeStore/accounts Location : East US 2 Tags : {}
Unggah beberapa data sampel ke Data Lake Storage Gen1. Kami akan menggunakan hal ini nanti di artikel ini untuk memverifikasi bahwa data dapat diakses dari kluster HDInsight. Jika Anda mencari data sampel untuk diunggah, Anda bisa mendapatkan folder Ambulance Data dari Repositori Git Azure Data Lake.
$myrootdir = "/" Import-AzDataLakeStoreItem -AccountName $dataLakeStorageGen1Name -Path "C:\<path to data>\vehicle1_09142014.csv" -Destination $myrootdir\vehicle1_09142014.csv
Menyiapkan autentikasi untuk akses berbasis peran ke Data Lake Storage Gen1
Setiap langganan Azure dikaitkan dengan Microsoft Entra ID. Pengguna dan layanan yang mengakses sumber daya langganan menggunakan portal Azure atau Azure Resource Manager API harus terlebih dahulu mengautentikasi dengan Microsoft Entra ID tersebut. Akses diberikan ke langganan dan layanan Azure dengan menetapkan peran yang sesuai pada sumber daya Azure. Untuk layanan, perwakilan layanan mengidentifikasi layanan di Microsoft Entra ID. Bagian ini mengilustrasikan cara memberikan layanan aplikasi, seperti HDInsight, akses ke sumber daya Azure (akun penyimpanan dengan Data Lake Storage Gen1 yang Anda buat sebelumnya) dengan membuat prinsip layanan untuk aplikasi dan menetapkan peran melalui Azure PowerShell.
Untuk menyiapkan autentikasi Active Directory untuk Data Lake Storage Gen1, Anda harus melakukan tugas berikut.
- Membuat sertifikat yang ditandatangani sendiri
- Membuat aplikasi di Microsoft Entra ID dan Perwakilan Layanan
Membuat sertifikat yang ditandatangani sendiri
Pastikan Anda telah memasang Windows SDK sebelum melanjutkan dengan langkah-langkah di bagian ini. Anda juga harus membuat direktori, seperti C:\mycertdir, tempat sertifikat akan dibuat.
Dari jendela PowerShell, navigasikan ke lokasi tempat Anda menginstal Windows SDK (biasanya,
C:\Program Files (x86)\Windows Kits\10\bin\x86
dan gunakan utilitas MakeCert untuk membuat sertifikat yang ditandatangani sendiri dan kunci pribadi. Gunakan perintah berikut:$certificateFileDir = "<my certificate directory>" cd $certificateFileDir makecert -sv mykey.pvk -n "cn=HDI-ADL-SP" CertFile.cer -r -len 2048
Anda akan diminta untuk memasukkan kata sandi kunci privat. Setelah perintah berhasil dijalankan, Anda akan melihat CertFile.cer dan mykey.pvk di direktori sertifikat yang Anda tentukan.
Gunakan utilitas Pvk2Pfx untuk mengonversi file .pvk dan .cer yang dibuat MakeCert menjadi file .pfx. Jalankan perintah berikut.
pvk2pfx -pvk mykey.pvk -spc CertFile.cer -pfx CertFile.pfx -po <password>
Saat diminta, masukkan kata sandi kunci pribadi yang Anda tentukan sebelumnya. Nilai yang Anda tentukan untuk parameter -po adalah kata sandi yang terkait dengan file .pfx. Setelah perintah berhasil diselesaikan, Anda juga akan melihat CertFile.pfx di direktori sertifikat yang Anda tentukan.
Membuat Microsoft Entra ID dan perwakilan layanan
Di bagian ini, Anda melakukan langkah-langkah untuk membuat perwakilan layanan untuk aplikasi Microsoft Entra, menetapkan peran ke perwakilan layanan, dan mengautentikasi sebagai perwakilan layanan dengan memberikan sertifikat. Jalankan perintah berikut untuk membuat aplikasi di Microsoft Entra ID.
Tempelkan cmdlet berikut di jendela konsol PowerShell. Pastikan nilai yang Anda tentukan untuk properti -DisplayName adalah unik. Juga, nilai untuk -HomePage dan -IdentiferUris adalah nilai tempat penampung dan tidak diverifikasi.
$certificateFilePath = "$certificateFileDir\CertFile.pfx" $password = Read-Host -Prompt "Enter the password" # This is the password you specified for the .pfx file $certificatePFX = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certificateFilePath, $password) $rawCertificateData = $certificatePFX.GetRawCertData() $credential = [System.Convert]::ToBase64String($rawCertificateData) $application = New-AzADApplication ` -DisplayName "HDIADL" ` -HomePage "https://contoso.com" ` -IdentifierUris "https://contoso.com" ` -CertValue $credential ` -StartDate $certificatePFX.NotBefore ` -EndDate $certificatePFX.NotAfter $applicationId = $application.ApplicationId
Buat perwakilan layanan dengan menggunakan ID aplikasi.
$servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor $objectId = $servicePrincipal.Id
Berikan akses perwakilan layanan ke folder Data Lake Storage Gen1 dan file yang akan Anda akses dari kluster HDInsight. Cuplikan di bawah ini menyediakan akses ke root akun penyimpanan dengan Data Lake Storage Gen1 (tempat Anda menyalin file data sampel), dan file itu sendiri.
Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path / -AceType User -Id $objectId -Permissions All Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path /vehicle1_09142014.csv -AceType User -Id $objectId -Permissions All
Buat kluster HDInsight Linux dengan Data Lake Storage Gen1 sebagai penyimpanan tambahan
Di bagian ini, kami membuat kluster HDInsight Hadoop Linux dengan Data Lake Storage Gen1 sebagai penyimpanan tambahan. Untuk rilis ini, kluster HDInsight dan akun penyimpanan dengan Data Lake Storage Gen1 harus berada di lokasi yang sama.
Mulailah dengan mengambil ID penyewa langganan. Anda akan membutuhkannya nanti.
$tenantID = (Get-AzContext).Tenant.TenantId
Untuk rilis ini, untuk kluster Hadoop, Data Lake Storage Gen1 hanya dapat digunakan sebagai penyimpanan tambahan untuk kluster tersebut. Penyimpanan default masih akan menjadi penyimpanan Azure Blob (WASB). Jadi, pertama-tama kita akan membuat akun penyimpanan dan kontainer penyimpanan yang diperlukan untuk kluster.
# Create an Azure storage account $location = "East US 2" $storageAccountName = "<StorageAccountName>" # Provide a Storage account name New-AzStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName -Location $location -Type Standard_GRS # Create an Azure Blob Storage container $containerName = "<ContainerName>" # Provide a container name $storageAccountKey = (Get-AzStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName)[0].Value $destContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey New-AzStorageContainer -Name $containerName -Context $destContext
Buat Kluster HDInsight Gunakan cmdlet berikut:
# Set these variables $clusterName = $containerName # As a best practice, have the same name for the cluster and container $clusterNodes = <ClusterSizeInNodes> # The number of nodes in the HDInsight cluster $httpCredentials = Get-Credential $sshCredentials = Get-Credential New-AzHDInsightCluster -ClusterName $clusterName -ResourceGroupName $resourceGroupName -HttpCredential $httpCredentials -Location $location -DefaultStorageAccountName "$storageAccountName.blob.core.windows.net" -DefaultStorageAccountKey $storageAccountKey -DefaultStorageContainer $containerName -ClusterSizeInNodes $clusterNodes -ClusterType Hadoop -Version "3.4" -OSType Linux -SshCredential $sshCredentials -ObjectID $objectId -AadTenantId $tenantID -CertificateFilePath $certificateFilePath -CertificatePassword $password
Setelah cmdlet berhasil diselesaikan, Anda akan melihat output yang mencantumkan detail kluster.
Menjalankan pekerjaan pengujian di kluster HDInsight untuk menggunakan Data Lake Storage Gen1
Setelah mengonfigurasi kluster HDInsight, Anda dapat menjalankan pekerjaan pengujian di kluster untuk menguji bahwa kluster HDInsight dapat mengakses Data Lake Storage Gen1. Untuk melakukannya, kami akan menjalankan contoh pekerjaan Apache Hive yang membuat tabel menggunakan data sampel yang Anda unggah sebelumnya ke akun penyimpanan Anda dengan Data Lake Storage Gen1.
Di bagian ini Anda akan SSH ke dalam kluster HDInsight Linux yang Anda buat dan menjalankan contoh kueri Apache Hive.
- Jika Anda menggunakan klien Windows untuk SSH ke dalam kluster, lihat Menggunakan SSH dengan Hadoop berbasis Linux di HDInsight dari Windows.
- Jika Anda menggunakan klien Linux untuk SSH ke dalam kluster, lihat Gunakan SSH dengan Hadoop berbasis Linux di HDInsight dari Linux.
Setelah terhubung, mulai CLI Apache Hive dengan menggunakan perintah berikut:
hive
Dengan menggunakan CLI, masukkan pernyataan berikut untuk membuat tabel baru bernama vehicles dengan menggunakan data sampel di Data Lake Storage Gen1:
DROP TABLE vehicles; CREATE EXTERNAL TABLE vehicles (str string) LOCATION 'adl://<mydatalakestoragegen1>.azuredatalakestore.net:443/'; SELECT * FROM vehicles LIMIT 10;
Anda akan melihat output yang mirip dengan yang berikut:
1,1,2014-09-14 00:00:03,46.81006,-92.08174,51,S,1 1,2,2014-09-14 00:00:06,46.81006,-92.08174,13,NE,1 1,3,2014-09-14 00:00:09,46.81006,-92.08174,48,NE,1 1,4,2014-09-14 00:00:12,46.81006,-92.08174,30,W,1 1,5,2014-09-14 00:00:15,46.81006,-92.08174,47,S,1 1,6,2014-09-14 00:00:18,46.81006,-92.08174,9,S,1 1,7,2014-09-14 00:00:21,46.81006,-92.08174,53,N,1 1,8,2014-09-14 00:00:24,46.81006,-92.08174,63,SW,1 1,9,2014-09-14 00:00:27,46.81006,-92.08174,4,NE,1 1,10,2014-09-14 00:00:30,46.81006,-92.08174,31,N,1
Mengakses Data Lake Storage Gen1 menggunakan perintah HDFS
Setelah mengonfigurasi kluster HDInsight untuk menggunakan Data Lake Storage Gen1, Anda dapat menggunakan perintah shell HDFS untuk mengakses penyimpanan.
Di bagian ini Anda akan SSH ke dalam kluster HDInsight Linux yang Anda buat dan menjalankan perintah HDFS.
- Jika Anda menggunakan klien Windows untuk SSH ke dalam kluster, lihat Menggunakan SSH dengan Hadoop berbasis Linux di HDInsight dari Windows.
- Jika Anda menggunakan klien Linux untuk SSH ke dalam kluster, lihat Gunakan SSH dengan Hadoop berbasis Linux di HDInsight dari Linux.
Setelah terhubung, gunakan perintah sistem file HDFS berikut untuk mencantumkan file di akun penyimpanan dengan Data Lake Storage Gen1.
hdfs dfs -ls adl://<storage account with Data Lake Storage Gen1 name>.azuredatalakestore.net:443/
Hal ini akan mencantumkan file yang Anda unggah sebelumnya ke Data Lake Storage Gen1.
15/09/17 21:41:15 INFO web.CaboWebHdfsFileSystem: Replacing original urlConnectionFactory with org.apache.hadoop.hdfs.web.URLConnectionFactory@21a728d6
Found 1 items
-rwxrwxrwx 0 NotSupportYet NotSupportYet 671388 2015-09-16 22:16 adl://mydatalakestoragegen1.azuredatalakestore.net:443/mynewfolder
Anda juga dapat menggunakan perintah hdfs dfs -put
untuk mengunggah beberapa file ke Data Lake Storage Gen1, lalu menggunakan hdfs dfs -ls
untuk memverifikasi apakah file berhasil diunggah.