Bagikan melalui


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:

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

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

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

  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>
    

    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:

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

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

  1. Ambil ID penyewa langganan, dan simpan untuk digunakan nanti.

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

  1. Setelah Anda membuat koneksi, mulai antarmuka baris perintah Hive (CLI) menggunakan perintah berikut:

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

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.

Lihat juga