PowerShell を使用して、Azure Data Lake Storage Gen1 を既定のストレージとして使用する HDInsight クラスターを作成するCreate HDInsight clusters with Azure Data Lake Storage Gen1 as default storage by using PowerShell

Azure PowerShell を使用して、Azure Data Lake Storage Gen1 を既定のストレージとして使用する Azure HDInsight クラスターを構成する方法について説明します。Learn how to use Azure PowerShell to configure Azure HDInsight clusters with Azure Data Lake Storage Gen1, as default storage. Data Lake Storage Gen1 を追加のストレージとして使用する HDInsight クラスターの作成方法については、Data Lake Storage Gen1 を追加のストレージとして使用する HDInsight クラスターの作成に関するページを参照してください。For instructions on creating an HDInsight cluster with Data Lake Storage Gen1 as additional storage, see Create an HDInsight cluster with Data Lake Storage Gen1 as additional storage.

HDInsight で Data Lake Storage Gen1 を使用するための重要な考慮事項を次に示します。Here are some important considerations for using HDInsight with Data Lake Storage Gen1:

  • 既定のストレージとしての Data Lake Storage Gen1 にアクセスできる HDInsight クラスターを作成するオプションは、HDInsight バージョン 3.5 および 3.6 で使用できます。The option to create HDInsight clusters with access to Data Lake Storage Gen1 as default storage is available for HDInsight version 3.5 and 3.6.

  • 既定のストレージとしての Data Lake Storage Gen1 にアクセスできる HDInsight クラスターを作成するオプションは、HDInsight Premium クラスターでは使用できませんThe option to create HDInsight clusters with access to Data Lake Storage Gen1 as default storage is not available for HDInsight Premium clusters.

PowerShell を使用して Data Lake Storage Gen1 を操作できるように HDInsight を構成するには、次の 5 つのセクションで示す手順に従います。To configure HDInsight to work with Data Lake Storage Gen1 by using PowerShell, follow the instructions in the next five sections.

前提条件Prerequisites

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

このチュートリアルを開始する前に、次の要件を満たしていることを確認します。Before you begin this tutorial, make sure that you meet the following requirements:

  • Azure サブスクリプション:Azure 無料試用版の取得に関するページをご覧ください。An Azure subscription: Go to Get Azure free trial.

  • Azure PowerShell 1.0 以上:PowerShell のインストールと構成の方法に関するページをご覧ください。Azure PowerShell 1.0 or greater: See How to install and configure PowerShell.

  • Windows ソフトウェア開発キット (SDK) :Windows SDK のインストール方法については、「Windows 10 用のダウンロードとツール」をご覧ください。Windows Software Development Kit (SDK): To install Windows SDK, go to Downloads and tools for Windows 10. SDK は、セキュリティ証明書の作成に使用します。The SDK is used to create a security certificate.

  • Azure Active Directory サービス プリンシパル:このチュートリアルでは、Azure Active Directory (Azure AD) でサービス プリンシパルを作成する方法について説明します。Azure Active Directory service principal: This tutorial describes how to create a service principal in Azure Active Directory (Azure AD). ただし、サービス プリンシパルを作成するには、Azure AD 管理者である必要があります。However, to create a service principal, you must be an Azure AD administrator. 管理者である場合は、この前提条件をスキップしてチュートリアルを進めることができます。If you are an administrator, you can skip this prerequisite and proceed with the tutorial.

    注意

    Azure AD 管理者である場合にのみ、サービス プリンシパルを作成することができます。You can create a service principal only if you are an Azure AD administrator. Data Lake Storage Gen1 で HDInsight クラスターを作成する前に、まず Azure AD 管理者がサービス プリンシパルを作成する必要があります。Your Azure AD administrator must create a service principal before you can create an HDInsight cluster with Data Lake Storage Gen1. 証明書を使用したサービス プリンシパルの作成」で説明しているように、サービス プリンシパルは証明書を使って作成する必要があります。The service principal must be created with a certificate, as described in Create a service principal with certificate.

Data Lake Storage Gen1 アカウントを作成するCreate a Data Lake Storage Gen1 account

Data Lake Storage Gen1 アカウントを作成するには、次の操作を行います。To create a Data Lake Storage Gen1 account, do the following:

  1. デスクトップで、PowerShell ウィンドウを開き、次のスニペットを入力します。From your desktop, open a PowerShell window, and then enter the snippets below. サインインを求められたら、サブスクリプションの管理者または所有者としてサインインします。When you are prompted to sign in, sign in as one of the subscription administrators or owners.

     # 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"
    

    注意

    Data Lake Storage Gen1 リソース プロバイダーの登録時に Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid のようなエラーが発生した場合は、サブスクリプションが Data Lake Storage Gen1 のホワイトリストに登録されていない可能性があります。If you register the Data Lake Storage Gen1 resource provider and receive an error similar to Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid, your subscription might not be whitelisted for Data Lake Storage Gen1. Data Lake Storage Gen1 で Azure サブスクリプションを有効にするには、Azure portal で Azure Data Lake Storage Gen1 の概要に関するページを参照してください。To enable your Azure subscription for Data Lake Storage Gen1, follow the instructions in Get started with Azure Data Lake Storage Gen1 by using the Azure portal.

  2. Data Lake Storage Gen1 アカウントは、Azure リソース グループに関連付けられます。A Data Lake Storage Gen1 account is associated with an Azure resource group. まず、リソース グループを作成します。Start by creating a resource group.

     $resourceGroupName = "<your new resource group name>"
     New-AzResourceGroup -Name $resourceGroupName -Location "East US 2"
    

    出力は次のように表示されます。You should see an output like this:

     ResourceGroupName : hdiadlgrp
     Location          : eastus2
     ProvisioningState : Succeeded
     Tags              :
     ResourceId        : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
    
  3. Data Lake Storage Gen1 アカウントを作成します。Create a Data Lake Storage Gen1 account. 指定するアカウント名には、小文字と数字のみを含める必要があります。The account name you specify must contain only lowercase letters and numbers.

     $dataLakeStorageGen1Name = "<your new Data Lake Storage Gen1 name>"
     New-AzDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $dataLakeStorageGen1Name -Location "East US 2"
    

    出力は次のように表示されます。You should see an output like the following:

     ...
     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. Data Lake Storage Gen1 を既定のストレージとして使用するには、クラスターの作成時にクラスター固有のファイルのコピー先となるルート パスを指定する必要があります。Using Data Lake Storage Gen1 as default storage requires you to specify a root path to which the cluster-specific files are copied during cluster creation. ルート パス (このスニペットでは /clusters/hdiadlcluster) を作成するには、次のコマンドレットを使用します。To create a root path, which is /clusters/hdiadlcluster in the snippet, use the following cmdlets:

     $myrootdir = "/"
     New-AzDataLakeStoreItem -Folder -AccountName $dataLakeStorageGen1Name -Path $myrootdir/clusters/hdiadlcluster
    

Data Lake Storage Gen1 へのロールベースのアクセスの認証を設定するSet up authentication for role-based access to Data Lake Storage Gen1

すべての Azure サブスクリプションは Azure Active AD エンティティと関連付けられます。Every Azure subscription is associated with an Azure AD entity. Azure Portal か Azure Resource Manager API を使ってサブスクリプションのリソースにアクセスするユーザーやサービスは、最初に Azure AD での認証を実行する必要があります。Users and services that access subscription resources by using the Azure portal or the Azure Resource Manager API must first authenticate with Azure AD. Azure のサブスクリプションやサービスにアクセス権を付与するには、Azure リソースに対する該当するロールを割り当てます。Access is granted to Azure subscriptions and services by assigning them the appropriate role on an Azure resource. サービスの場合は、サービス プリンシパルにより、Azure AD 内のサービスが識別されます。For services, a service principal identifies the service in Azure AD.

このセクションでは、HDInsight のようなアプリケーション サービスに Azure のリソース (先ほど作成した Data Lake Storage Gen1 アカウント) へのアクセス権を付与する方法を説明します。This section illustrates how to grant an application service, such as HDInsight, access to an Azure resource (the Data Lake Storage Gen1 account that you created earlier). これを行うには、PowerShell を使用してアプリケーションのサービス プリンシパルを作成し、作成したサービス プリンシパルにロールを割り当てます。You do so by creating a service principal for the application and assigning roles to it via PowerShell.

Azure Data Lake Storage Gen1 の Active Directory 認証を設定するには、次の 2 つのセクションのタスクを実行します。To set up Active Directory authentication for Data Lake Storage Gen1, perform the tasks in the following two sections.

自己署名証明書の作成Create a self-signed certificate

このセクションの手順を進める前に、Windows SDK がインストールされていることを確認してください。Make sure you have Windows SDK installed before proceeding with the steps in this section. 証明書の作成先となるディレクトリ (C:\mycertdir など) も作成しておく必要があります。You must have also created a directory, such as C:\mycertdir, where you create the certificate.

  1. PowerShell ウィンドウで、Windows SDK をインストールした場所 (通常は C:\Program Files (x86)\Windows Kits\10\bin\x86) に移動し、MakeCert ユーティリティを使用して、自己署名証明書と秘密キーを作成します。From the PowerShell window, go to the location where you installed Windows SDK (typically, C:\Program Files (x86)\Windows Kits\10\bin\x86) and use the MakeCert utility to create a self-signed certificate and a private key. 次のコマンドを使用します。Use the following commands:

     $certificateFileDir = "<my certificate directory>"
     cd $certificateFileDir
    
     makecert -sv mykey.pvk -n "cn=HDI-ADL-SP" CertFile.cer -r -len 2048
    

    秘密キーのパスワードを入力するよう求められます。You will be prompted to enter the private key password. コマンドが正常に実行されると、指定した証明書ディレクトリに CertFile.cermykey.pvk が表示されます。After the command is successfully executed, you should see CertFile.cer and mykey.pvk in the certificate directory that you specified.

  2. Pvk2Pfx ユーティリティを使用して、MakeCert によって作成された .pvk ファイルと .cer ファイルを .pfx ファイルに変換します。Use the Pvk2Pfx utility to convert the .pvk and .cer files that MakeCert created to a .pfx file. 次のコマンドを実行します。Run the following command:

     pvk2pfx -pvk mykey.pvk -spc CertFile.cer -pfx CertFile.pfx -po <password>
    

    メッセージが表示されたら、先ほど指定した秘密キーのパスワードを入力します。When you are prompted, enter the private key password that you specified earlier. -po パラメーターに指定する値は、.pfx ファイルに関連付けられているパスワードです。The value you specify for the -po parameter is the password that's associated with the .pfx file. コマンドが正常に完了すると、指定した証明書ディレクトリに CertFile.pfx も表示されるはずです。After the command has been completed successfully, you should also see a CertFile.pfx in the certificate directory that you specified.

Azure AD とサービス プリンシパルの作成Create an Azure AD and a service principal

このセクションでは、Azure AD アプリケーションのサービス プリンシパルを作成し、そのサービス プリンシパルにロールを割り当てて、証明書を指定することでサービス プリンシパルとして認証します。In this section, you create a service principal for an Azure AD application, assign a role to the service principal, and authenticate as the service principal by providing a certificate. Azure AD でアプリケーションを作成するには、次のコマンドを実行します。To create an application in Azure AD, run the following commands:

  1. PowerShell コンソール ウィンドウで、次のコマンドレットを貼り付けます。Paste the following cmdlets in the PowerShell console window. -DisplayName プロパティに指定する値は一意になるようにしてください。Make sure that the value you specify for the -DisplayName property is unique. -HomePage-IdentiferUris の値はプレースホルダー値であるため、確認されません。The values for -HomePage and -IdentiferUris are placeholder values and are not verified.

     $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://mycontoso.com" `
         -CertValue $credential  `
         -StartDate $certificatePFX.NotBefore  `
         -EndDate $certificatePFX.NotAfter
    
     $applicationId = $application.ApplicationId
    
  2. アプリケーション ID を使用してサービス プリンシパルを作成します。Create a service principal by using the application ID.

     $servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId
    
     $objectId = $servicePrincipal.Id
    
  3. Data Lake Storage Gen1 のルートと、先ほど指定したルート パス内のすべてのフォルダーに、サービス プリンシパルのアクセス権を付与します。Grant the service principal access to the Data Lake Storage Gen1 root and all the folders in the root path that you specified earlier. 次のコマンドレットを使用します。Use the following cmdlets:

     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
    

Data Lake Storage Gen1 を既定のストレージとして使用する HDInsight Linux クラスターを作成するCreate an HDInsight Linux cluster with Data Lake Storage Gen1 as the default storage

このセクションでは、Data Lake Storage Gen1 を既定のストレージとして使用する HDInsight Hadoop Linux クラスターを作成します。In this section, you create an HDInsight Hadoop Linux cluster with Data Lake Storage Gen1 as the default storage. このリリースでは、HDInsight クラスターと Data Lake Storage Gen1 は同じ場所にある必要があります。For this release, the HDInsight cluster and Data Lake Storage Gen1 must be in the same location.

  1. サブスクリプションのテナント ID を取得し、後で使用するために保存します。Retrieve the subscription tenant ID, and store it to use later.

     $tenantID = (Get-AzContext).Tenant.TenantId
    
  2. 次のコマンドレットを使用して HDInsight クラスターを作成します。Create the HDInsight cluster by using the following cmdlets:

     # 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
    

    コマンドレットが正常に完了すると、クラスターの詳細を一覧表示する出力が表示されます。After the cmdlet has been successfully completed, you should see an output that lists the cluster details.

Data Lake Storage Gen1 を使用する HDInsight クラスターでテスト ジョブを実行するRun test jobs on the HDInsight cluster to use Data Lake Storage Gen1

HDInsight クラスターを構成した後は、クラスターでテスト ジョブを実行し、クラスターが Data Lake Storage Gen1 に確実にアクセスできるかどうかをテストできます。After you have configured an HDInsight cluster, you can run test jobs on it to ensure that it can access Data Lake Storage Gen1. これを行うには、Data Lake Storage Gen1 ( <クラスターのルート>/example/data/sample.log) に既にあるサンプル データを使用してテーブルを作成するサンプル Hive ジョブを実行します。To do so, run a sample Hive job to create a table that uses the sample data that's already available in Data Lake Storage Gen1 at <cluster root>/example/data/sample.log.

このセクションでは、作成した HDInsight Linux クラスターに Secure Shell (SSH) 接続し、サンプルの Hive クエリを実行します。In this section, you make a Secure Shell (SSH) connection into the HDInsight Linux cluster that you created, and then you run a sample Hive query.

  1. 接続したら、次のコマンドを使用して Hive コマンド ライン インターフェイス (CLI) を開始します。After you have made the connection, start the Hive command-line interface (CLI) by using the following command:

     hive
    
  2. CLI を使用して次のステートメントを入力し、サンプル データを使用して Data Lake Storage Gen1 内に vehicles という名前の新しいテーブルを作成します。Use the CLI to enter the following statements to create a new table named vehicles by using the sample data in 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;
    

    クエリの結果は SSH コンソールに出力されます。You should see the query output on the SSH console.

    注意

    上の CREATE TABLE コマンドのサンプル データへのパスは adl:///example/data/ です。adl:/// にはクラスターのルートを指定します。The path to the sample data in the preceding CREATE TABLE command is adl:///example/data/, where adl:/// is the cluster root. このチュートリアルで指定されたクラスターのルートの例に従うと、コマンドは adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlcluster になります。Following the example of the cluster root that's specified in this tutorial, the command is adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlcluster. 短縮バージョンを使用するか、またはクラスター ルートへの完全なパスを指定できます。You can either use the shorter alternative or provide the complete path to the cluster root.

HDFS コマンドを使用して Data Lake Storage Gen1 にアクセスするAccess Data Lake Storage Gen1 by using HDFS commands

Data Lake Storage Gen1 を使用するように HDInsight クラスターを構成したら、Hadoop 分散ファイル システム (HDFS) シェル コマンドを使用してストアにアクセスできます。After you have configured the HDInsight cluster to use Data Lake Storage Gen1, you can use Hadoop Distributed File System (HDFS) shell commands to access the store.

このセクションでは、作成した HDInsight Linux クラスターに SSH 接続し、HDFS コマンドを実行します。In this section, you make an SSH connection into the HDInsight Linux cluster that you created, and then you run the HDFS commands.

接続したら、次の HDFS ファイル システム コマンドを使用して、Data Lake Storage Gen1 内のファイルを一覧表示します。After you've made the connection, list the files in Data Lake Storage Gen1 by using the following HDFS file system command.

hdfs dfs -ls adl:///

hdfs dfs -put コマンドを使用して Data Lake Storage Gen1 にいくつかのファイルをアップロードし、hdfs dfs -ls を使用してファイルが正常にアップロードされたかどうかを確認することもできます。You can also use the hdfs dfs -put command to upload some files to Data Lake Storage Gen1, and then use hdfs dfs -ls to verify whether the files were successfully uploaded.

関連項目See also