Buat kluster HDInsight dengan Azure Data Lake Storage Gen1 sebagai penyimpanan default menggunakan PowerShell
Pelajari cara menggunakan Azure PowerShell untuk mengonfigurasi kluster Azure HDInsight dengan Azure Data Lake Storage Gen1, sebagai penyimpanan default. Untuk petunjuk tentang membuat kluster HDInsight dengan Data Lake Storage Gen1 sebagai penyimpanan tambahan, lihat Membuat kluster HDInsight dengan Data Lake Storage Gen1 sebagai penyimpanan tambahan.
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 default tersedia untuk HDInsight versi 3.5 dan 3.6.
Opsi untuk membuat kluster HDInsight dengan akses ke Data Lake Storage Gen1 sebagai penyimpanan default tidak tersedia untuk kluster HDInsight Premium.
Untuk mengonfigurasi HDInsight agar berfungsi dengan Data Lake Storage Gen1 menggunakan PowerShell, ikuti instruksi di lima bagian berikutnya.
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 Anda memulai tutorial ini, pastikan Anda memenuhi persyaratan berikut:
Langganan Azure: Buka Dapatkan uji coba gratis Azure.
Azure PowerShell 1.0 atau versi yang lebih baru: Lihat Cara memasang dan mengonfigurasi PowerShell.
Windows Software Development Kit (SDK) : Untuk memasang Windows SDK, buka Unduhan dan alat untuk Windows 10. SDK digunakan untuk membuat sertifikat keamanan.
Microsoft Entra perwakilan layanan: Tutorial ini menjelaskan cara membuat perwakilan layanan di Microsoft Entra ID. Namun, untuk membuat perwakilan layanan, Anda harus menjadi administrator Microsoft Entra. Jika Anda adalah administrator, Anda dapat melewati prasyarat ini dan melanjutkan tutorial.
Catatan
Anda dapat membuat perwakilan layanan hanya jika Anda adalah administrator Microsoft Entra. Administrator Microsoft Entra Anda harus membuat perwakilan layanan sebelum Anda dapat membuat kluster HDInsight dengan Data Lake Storage Gen1. Perwakilan layanan harus dibuat dengan sertifikat, seperti yang dijelaskan di Membuat perwakilan layanan dengan sertifikat.
Buat Akun Azure Data Lake Storage Gen1
Untuk membuat akun Data Lake Storage Gen1, lakukan hal berikut:
Dari desktop Anda, buka jendela PowerShell, lalu masukkan cuplikan di bawah. Saat Anda diminta untuk masuk, masuk sebagai salah satu administrator atau pemilik langganan.
# Sign 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 mendaftarkan penyedia sumber daya Data Lake Storage Gen1 dan menerima kesalahan yang serupa dengan
Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid
, langganan Data Lake Storage Gen1 mungkin tidak disetujui. Untuk mengaktifkan langganan Azure untuk Data Lake Storage Gen1, ikuti petunjuk di Memulai Azure Data Lake Storage Gen1 dengan menggunakan portal Azure.Akun Data Lake Storage Gen1 dikaitkan dengan grup sumber daya Azure. Memulai dengan membuat grup sumber daya.
$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
Membuat akun Data Lake Storage Gen1. Nama akun yang Anda tentukan hanya boleh berisi huruf kecil dan angka.
$dataLakeStorageGen1Name = "<your new 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 : {}
Menggunakan Data Lake Storage Gen1 sebagai penyimpanan default mengharuskan Anda menentukan jalur akar tempat file khusus kluster disalin selama pembuatan kluster. Untuk membuat jalur akar, yaitu /clusters/hdiadlcluster dalam cuplikan, gunakan cmdlet berikut:
$myrootdir = "/" New-AzDataLakeStoreItem -Folder -AccountName $dataLakeStorageGen1Name -Path $myrootdir/clusters/hdiadlcluster
Menyiapkan autentikasi untuk akses berbasis peran ke Data Lake Storage Gen1
Setiap langganan Azure dikaitkan dengan entitas Microsoft Entra. Pengguna dan layanan yang mengakses sumber daya langganan dengan menggunakan portal Azure atau Azure Resource Manager API harus terlebih dahulu mengautentikasi dengan Microsoft Entra ID. Akses diberikan ke langganan dan layanan Azure dengan menetapkan peran yang sesuai pada sumber daya Azure. Untuk layanan, perwakilan layanan mengidentifikasi layanan dalam Microsoft Entra ID.
Bagian ini menggambarkan cara memberikan layanan aplikasi, seperti HDInsight, akses ke sumber daya Azure (akun Data Lake Storage Gen1 yang Anda buat sebelumnya). Anda melakukannya dengan membuat perwakilan layanan untuk aplikasi dan menetapkan peran melalui PowerShell.
Untuk menyiapkan autentikasi Active Directory untuk Data Lake Storage Gen1, lakukan tugas di dua bagian berikut.
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 Anda membuat sertifikat.
Dari jendela PowerShell, buka lokasi di mana Anda memasang Windows SDK (biasanya, C:\Program Files (x86)\Windows Kits\10\bin\x86) dan gunakan utilitas MakeCert untuk membuat sertifikat yang ditandatangani sendiri dan kunci privat. 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>
Jika diminta, masukkan kata sandi kunci privat 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 membuat perwakilan layanan untuk aplikasi Microsoft Entra, menetapkan peran ke perwakilan layanan, dan mengautentikasi sebagai perwakilan layanan dengan memberikan sertifikat. Untuk membuat aplikasi di Microsoft Entra ID, jalankan perintah berikut:
Tempelkan cmdlet berikut di jendela konsol PowerShell. Pastikan nilai yang Anda tentukan untuk properti -DisplayName adalah unik. 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 akar Data Lake Storage Gen1 dan semua folder di jalur akar yang Anda tentukan sebelumnya. Gunakan cmdlet berikut:
Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path / -AceType User -Id $objectId -Permissions All Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path /clusters -AceType User -Id $objectId -Permissions All Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path /clusters/hdiadlcluster -AceType User -Id $objectId -Permissions All
Buat cluster HDInsight Linux dengan Data Lake Storage Gen1 sebagai penyimpanan default
Di bagian ini, Anda membuat kluster HDInsight Hadoop Linux dengan Data Lake Storage Gen1 sebagai penyimpanan default. Untuk rilis ini, cluster HDInsight dan Data Lake Storage Gen1 harus berada di lokasi yang sama.
Ambil ID penyewa langganan, dan simpan untuk digunakan nanti.
$tenantID = (Get-AzContext).Tenant.TenantId
Buat kluster HDInsight dengan menggunakan cmdlet berikut:
# Set these variables $location = "East US 2" $storageAccountName = $dataLakeStorageGen1Name # Data Lake Storage Gen1 account name $storageRootPath = "<Storage root path you specified earlier>" # e.g. /clusters/hdiadlcluster $clusterName = "<unique cluster name>" $clusterNodes = <ClusterSizeInNodes> # The number of nodes in the HDInsight cluster $httpCredentials = Get-Credential $sshCredentials = Get-Credential New-AzHDInsightCluster ` -ClusterType Hadoop ` -OSType Linux ` -ClusterSizeInNodes $clusterNodes ` -ResourceGroupName $resourceGroupName ` -ClusterName $clusterName ` -HttpCredential $httpCredentials ` -Location $location ` -DefaultStorageAccountType AzureDataLakeStore ` -DefaultStorageAccountName "$storageAccountName.azuredatalakestore.net" ` -DefaultStorageRootPath $storageRootPath ` -Version "3.6" ` -SshCredential $sshCredentials ` -AadTenantId $tenantId ` -ObjectId $objectId ` -CertificateFilePath $certificateFilePath ` -CertificatePassword $password
Setelah cmdlet berhasil diselesaikan, Anda akan melihat output yang mencantumkan detail cluster.
Menjalankan pekerjaan pengujian di kluster HDInsight untuk menggunakan Data Lake Storage Gen1
Setelah Anda mengonfigurasi kluster HDInsight, Anda dapat menjalankan tugas pengujian untuk memastikan kluster tersebut dapat mengakses Data Lake Storage Gen1. Untuk melakukannya, jalankan sampel pekerjaan Apache Hive untuk membuat tabel yang menggunakan data sampel yang sudah tersedia di Data Lake Storage Gen1 di <root>/example/data/sample.log kluster.
Di bagian ini, Anda membuat koneksi Secure Shell (SSH) ke kluster HDInsight Linux yang Anda buat, lalu Anda menjalankan kueri contoh Hive.
- Jika Anda menggunakan klien Windows untuk membuat sambungan SSH ke dalam kluster, lihat Menggunakan SSH dengan Hadoop berbasis Linux di HDInsight dari Windows.
- Jika Anda menggunakan klien Linux untuk membuat sambungan SSH ke dalam kluster, lihat Menggunakan SSH dengan Hadoop berbasis Linux di HDInsight dari Linux.
Setelah Anda membuat koneksi, mulai antarmuka baris perintah Hive (CLI) menggunakan perintah berikut:
hive
Gunakan CLI untuk memasukkan pernyataan berikut untuk membuat tabel baru bernama kendaraan menggunakan data sampel di Data Lake Storage Gen1:
DROP TABLE log4jLogs; CREATE EXTERNAL TABLE log4jLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE LOCATION 'adl:///example/data/'; SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
Anda akan melihat output kueri di konsol SSH.
Catatan
Jalur ke data sampel dalam perintah CREATE TABLE sebelumnya adalah adl:///example/data/
, di mana adl:///
adalah akar kluster. Mengikuti contoh akar kluster yang ditentukan dalam tutorial ini, perintahnya adalah adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlcluster
. Anda dapat menggunakan alternatif yang lebih pendek atau memberikan jalur lengkap ke akar kluster.
Mengakses Data Lake Storage Gen1 menggunakan perintah HDFS
Setelah Anda mengonfigurasi kluster HDInsight untuk menggunakan Data Lake Storage Gen1, Anda dapat menggunakan perintah shell Hadoop Distributed File System (HDFS) untuk mengakses penyimpanan.
Di bagian ini, Anda membuat sambungan SSH ke kluster HDInsight Linux yang Anda buat, lalu Anda menjalankan perintah HDFS.
- Jika Anda menggunakan klien Windows untuk membuat sambungan SSH ke dalam kluster, lihat Menggunakan SSH dengan Hadoop berbasis Linux di HDInsight dari Windows.
- Jika Anda menggunakan klien Linux untuk membuat sambungan SSH ke dalam kluster, lihat Menggunakan SSH dengan Hadoop berbasis Linux di HDInsight dari Linux.
Setelah Anda membuat sambungan, buat daftar file di Data Lake Storage Gen1 menggunakan perintah sistem file HDFS berikut.
hdfs dfs -ls adl:///
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.