Bagikan melalui


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.

  1. 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.

  2. 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
    
  3. 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                        : {}
    
  4. 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.

  1. Dari jendela PowerShell, navigasikan ke lokasi tempat Anda menginstal Windows SDK (biasanya, C:\Program Files (x86)\Windows Kits\10\bin\x86dan 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.

  2. 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.

  1. 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
    
  2. Buat perwakilan layanan dengan menggunakan ID aplikasi.

    $servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor
    
     $objectId = $servicePrincipal.Id
    
  3. 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.

  1. Mulailah dengan mengambil ID penyewa langganan. Anda akan membutuhkannya nanti.

    $tenantID = (Get-AzContext).Tenant.TenantId
    
  2. 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
    
  3. 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.

  1. Setelah terhubung, mulai CLI Apache Hive dengan menggunakan perintah berikut:

    hive
    
  2. 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.

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.

Lihat juga