Azure HDInsight クラスターで Data Lake Storage Gen1 を使用するUse Data Lake Storage Gen1 with Azure HDInsight clusters

注意

パフォーマンスを改善し、新機能を利用するには、Azure Data Lake Storage Gen2 を使用して新しい HDInsight クラスターをデプロイします。Deploy new HDInsight clusters using Azure Data Lake Storage Gen2 for improved performance and new features.

HDInsight クラスターでデータを分析するには、Azure StorageAzure Data Lake Storage Gen 1、または Azure Data Lake Storage Gen 2 のいずれかにデータを格納できます。To analyze data in HDInsight cluster, you can store the data either in Azure Storage, Azure Data Lake Storage Gen 1 or Azure Data Lake Storage Gen 2. いずれのストレージ オプションでも、計算に使用される HDInsight クラスターを安全に削除できます。このとき、ユーザー データは失われません。All storage options enable you to safely delete HDInsight clusters that are used for computation without losing user data.

この記事では、HDInsight クラスターでの Data Lake Storage Gen1 の動作について説明します。In this article, you learn how Data Lake Storage Gen1 works with HDInsight clusters. HDInsight クラスターでの Data Lake Store の動作については、「Azure HDInsight クラスターで Azure Storage を使用する」をご覧ください。To learn how Azure Storage works with HDInsight clusters, see Use Azure Storage with Azure HDInsight clusters. HDInsight クラスターの作成について詳しくは、HDInsight での Apache Hadoop クラスターの作成に関するページを参照してください。For more information about creating an HDInsight cluster, see Create Apache Hadoop clusters in HDInsight.

注意

Data Lake Storage Gen1 へのアクセスには必ずセキュリティで保護されたチャネルが使われるため、adls ファイルシステム スキーム名はありません。Data Lake Storage Gen1 is always accessed through a secure channel, so there is no adls filesystem scheme name. 常に adl を使用します。You always use adl.

注意

この記事は、新しい 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.

HDInsight クラスターの可用性Availability for HDInsight clusters

Apache Hadoop は、既定のファイル システムの概念をサポートしています。Apache Hadoop supports a notion of the default file system. 既定のファイル システムは、既定のスキームとオーソリティを意味します。The default file system implies a default scheme and authority. これは相対パスの解決に使用することもできます。It can also be used to resolve relative paths. HDInsight クラスターの作成プロセス時に、Azure Storage 内の BLOB コンテナーを既定のファイル システムとして指定できます。また、HDInsight 3.5 以降のバージョンでは、Azure Storage と Azure Data Lake Storage Gen1 のいずれかを既定のファイル システムとして選択できます (いくつか例外があります)。During the HDInsight cluster creation process, you can specify a blob container in Azure Storage as the default file system, or with HDInsight 3.5 and newer versions, you can select either Azure Storage or Azure Data Lake Storage Gen1 as the default files system with a few exceptions.

HDInsight クラスターでは、2 つの方法で Data Lake Storage Gen1 を使用できます。HDInsight clusters can use Data Lake Storage Gen1 in two ways:

  • 既定のストレージとしてAs the default storage
  • 既定のストレージが Azure Storage Blob のときの追加ストレージとしてAs additional storage, with Azure Storage Blob as default storage.

現時点では、Data Lake Storage Gen1 を既定ストレージおよび追加のストレージ アカウントとして使うことができるのは、HDInsight クラスターの一部の種類/バージョンのみです。As of now, only some of the HDInsight cluster types/versions support using Data Lake Storage Gen1 as default storage and additional storage accounts:

HDInsight クラスターの種類HDInsight cluster type 既定のストレージとしての Data Lake Storage Gen1Data Lake Storage Gen1 as default storage 追加のストレージとしての Data Lake Storage Gen1Data Lake Storage Gen1 as additional storage メモNotes
HDInsight バージョン 4.0HDInsight version 4.0 いいえNo いいえNo ADLS Gen1 は、HDInsight 4.0 ではサポートされていません。ADLS Gen1 is not supported with HDInsight 4.0
HDInsight Version 3.6HDInsight version 3.6 はいYes はいYes HBase は例外With the exception of HBase
HDInsight Version 3.5HDInsight version 3.5 はいYes はいYes HBase は例外With the exception of HBase
HDInsight Version 3.4HDInsight version 3.4 いいえNo はいYes
HDInsight Version 3.3HDInsight version 3.3 いいえNo いいえNo
HDInsight Version 3.2HDInsight version 3.2 いいえNo はいYes
StormStorm Data Lake Storage Gen1 を使って、Storm トポロジからデータを書き込むことができます。You can use Data Lake Storage Gen1 to write data from a Storm topology. また、Data Lake Storage を、Storm トポロジから読み取ることができる参照データとして使用することもできます。You can also use Data Lake Storage for reference data that can then be read by a Storm topology.

警告

HDInsight HBase は、Azure Data Lake Storage Gen1 ではサポートされていません。HDInsight HBase is not supported with Azure Data Lake Storage Gen1

Data Lake Storage Gen1 を追加のストレージ アカウントとして使っても、クラスターから Azure ストレージに対する読み取り/書き込みのパフォーマンスや機能には影響しません。Using Data Lake Storage Gen1 as an additional storage account does not affect performance or the ability to read or write to Azure storage from the cluster.

既定のストレージとして Data Lake Storage Gen1 を使用するUse Data Lake Storage Gen1 as default storage

Data Lake Storage Gen1 を既定のストレージとして HDInsight がデプロイされている場合、クラスター関連のファイルは adl://mydatalakestore/<cluster_root_path>/ に格納されます。<cluster_root_path> は、Data Lake Storage にお客様が作成したフォルダーの名前です。When HDInsight is deployed with Data Lake Storage Gen1 as default storage, the cluster-related files are stored in adl://mydatalakestore/<cluster_root_path>/, where <cluster_root_path> is the name of a folder you create in Data Lake Storage. クラスターごとにルート パスを指定することで、複数のクラスターに対して同じ Data Lake Storage アカウントを使うことができます。By specifying a root path for each cluster, you can use the same Data Lake Storage account for more than one cluster. このため、次の場所にセットアップを設定できます。So, you can have a setup where:

  • Cluster1 は、パス adl://mydatalakestore/cluster1storage を使用できますCluster1 can use the path adl://mydatalakestore/cluster1storage
  • Cluster2 は、パス adl://mydatalakestore/cluster2storage を使用できますCluster2 can use the path adl://mydatalakestore/cluster2storage

両方のクラスターが同じ Data Lake Storage Gen1 アカウント mydatalakestore を使用していることに注意してください。Notice that both the clusters use the same Data Lake Storage Gen1 account mydatalakestore. クラスターそれぞれが、Data Lake Storage で独自のルート ファイルシステムにアクセスします。Each cluster has access to its own root filesystem in Data Lake Storage. 特に Azure Portal をデプロイすると、ルート パスの /clusters/<clustername > などのフォルダー名を使用するよう求められます。The Azure portal deployment experience in particular prompts you to use a folder name such as /clusters/<clustername> for the root path.

既定のストレージとして Data Lake Storage Gen1 を使うには、サービス プリンシパルに次のパスへのアクセスを許可する必要があります。To be able to use Data Lake Storage Gen1 as default storage, you must grant the service principal access to the following paths:

  • Data Lake Storage Gen1 アカウントのルート。The Data Lake Storage Gen1 account root. 例: adl://mydatalakestore/。For example: adl://mydatalakestore/.
  • すべてのクラスター フォルダー用のフォルダー。The folder for all cluster folders. 例: adl://mydatalakestore/clusters。For example: adl://mydatalakestore/clusters.
  • クラスター用のフォルダー。The folder for the cluster. 例: adl://mydatalakestore/clusters/cluster1storage。For example: adl://mydatalakestore/clusters/cluster1storage.

サービス プリンシパルの作成とアクセスの許可の詳細については、「Data Lake Storage のアクセスを構成する」を参照してください。For more information for creating service principal and grant access, see Configure Data Lake Storage access.

クラスターの作成で使用するために Azure Key Vault から証明書を抽出するExtracting a certificate from Azure Keyvault for use in cluster creation

新しいクラスターの既定のストレージとして Azure Data Lake Storage Gen1 を設定する際に、サービス プリンシパルの証明書が Azure Key Vault に格納されている場合は、証明書を正しい形式に変換するためにいくつか追加の手順が必要になります。If you want to setup Azure Data Lake Storage Gen1 as your default storage for a new cluster and the certificate for your service principal is stored in Azure Key Vault, there are a few additional steps required to convert the certificate to the correct format. この変換の実行方法を、次のコード スニペットで示します。The following code snippets show how to perform the conversion.

最初に、Key Vault から証明書をダウンロードし、SecretValueText を抽出します。First, download the certificate from Key Vault and extract the SecretValueText.

$certPassword = Read-Host "Enter Certificate Password"
$cert = (Get-AzureKeyVaultSecret -VaultName 'MY-KEY-VAULT' -Name 'MY-SECRET-NAME')
$certValue = [System.Convert]::FromBase64String($cert.SecretValueText)

次に、SecretValueText を証明書に変換します。Next, convert the SecretValueText to a certificate.

$certObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList $certValue,$null,"Exportable, PersistKeySet"
$certBytes = $certObject.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $certPassword.SecretValueText);
$identityCertificate = [System.Convert]::ToBase64String($certBytes)

すると、次のスニペットに示すように、$identityCertificate を使用して新しいクラスターをデプロイできるようになります。Then you can use the $identityCertificate to deploy a new cluster as in the following snippet:

New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile $pathToArmTemplate `
    -identityCertificate $identityCertificate `
    -identityCertificatePassword $certPassword.SecretValueText `
    -clusterName  $clusterName `
    -clusterLoginPassword $SSHpassword `
    -sshPassword $SSHpassword `
    -servicePrincipalApplicationId $application.ApplicationId

追加のストレージとして Data Lake Storage Gen1 を使用するUse Data Lake Storage Gen1 as additional storage

Data Lake Storage Gen1 を、クラスターの追加のストレージとして使用することもできます。You can use Data Lake Storage Gen1 as additional storage for the cluster as well. この場合、クラスターの既定のストレージとしては、Azure Storage Blob アカウントまたは Data Lake Storage アカウントを使うことができます。In such cases, the cluster default storage can either be an Azure Storage Blob or a Data Lake Storage account. 追加のストレージとしての Data Lake Storage に格納されているデータに対して HDInsight ジョブを実行する場合は、ファイルへの完全修飾パスを使う必要があります。If you are running HDInsight jobs against the data stored in Data Lake Storage as additional storage, you must use the fully-qualified path to the files. 例:For example:

adl://mydatalakestore.azuredatalakestore.net/<file_path>

URL に cluster_root_path がないことに注意してください。Note that there's no cluster_root_path in the URL now. これは、Data Lake Storage が既定のストレージでないためです。必要な操作は、ファイルへのパスを指定することだけです。That's because Data Lake Storage is not a default storage in this case so all you need to do is provide the path to the files.

追加のストレージとして Data Lake Storage Gen1 を使うには、ファイルが保存されているパスへのアクセスをサービス プリンシパルに許可することだけが必要です。To be able to use a Data Lake Storage Gen1 as additional storage, you only need to grant the service principal access to the paths where your files are stored. 例:For example:

adl://mydatalakestore.azuredatalakestore.net/<file_path>

サービス プリンシパルの作成とアクセスの許可の詳細については、「Data Lake Storage のアクセスを構成する」を参照してください。For more information for creating service principal and grant access, see Configure Data Lake Storage access.

複数の Data Lake Storage アカウントを使用するUse more than one Data Lake Storage accounts

Data Lake Storage アカウントを追加ストレージとして使い、複数の Data Lake Storage アカウントを追加するには、1 つ以上の Data Lake Storage アカウント内のデータに HDInsight クラスターのアクセス許可を付与します。Adding a Data Lake Storage account as additional and adding more than one Data Lake Storage accounts are accomplished by giving the HDInsight cluster permission on data in one ore more Data Lake Storage accounts. 「Data Lake Storage のアクセスを構成する」を参照してください。See Configure Data Lake Storage access.

Data Lake Storage のアクセスを構成するConfigure Data Lake Storage access

HDInsight クラスターから Data Lake Storage へのアクセスを構成するには、Azure Active Directory (Azure AD) のサービス プリンシパルが必要です。To configure Data Lake Storage access from your HDInsight cluster, you must have an Azure Active directory (Azure AD) service principal. サービス プリンシパルを作成できるのは、Azure AD 管理者だけです。Only an Azure AD administrator can create a service principal. サービス プリンシパルは証明書で作成する必要があります。The service principal must be created with a certificate. 詳細については、「クイック スタート: HDInsight のクラスターを設定する」および「自己署名証明書を使用したサービス プリンシパルの作成」を参照してください。For more information, see Quickstart: Set up clusters in HDInsight, and Create service principal with self-signed-certificate.

注意

Azure Data Lake Storage Gen1 を HDInsight クラスターの追加のストレージとして使用する場合は、この記事で説明されているように、クラスターを作成するときにそうすることを強くお勧めします。If you are going to use Azure Data Lake Storage Gen1 as additional storage for HDInsight cluster, we strongly recommend that you do this while you create the cluster as described in this article. Azure Data Lake Storage Gen1 を既存の HDInsight クラスターに追加のストレージとして追加することは、サポートされていないシナリオです。Adding Azure Data Lake Storage Gen1 as additional storage to an existing HDInsight cluster is not a supported scenario.

クラスターからファイルにアクセスするAccess files from the cluster

複数の方法で、HDInsight クラスターから Data Lake Storage のファイルにアクセスできます。There are several ways you can access the files in Data Lake Storage from an HDInsight cluster.

  • 完全修飾名の使用Using the fully qualified name. この方法により、アクセスするファイルへの完全パスを指定します。With this approach, you provide the full path to the file that you want to access.

      adl://mydatalakestore.azuredatalakestore.net/<cluster_root_path>/<file_path>
    
  • 短縮されたパスの使用Using the shortened path format. この方法により、クラスター ルートへのパスを adl:/// に置き換えます。With this approach, you replace the path up to the cluster root with adl:///. 上記の例では adl://mydatalakestore.azuredatalakestore.net/<cluster_root_path>/adl:/// に置き換えることができます。So, in the example above, you can replace adl://mydatalakestore.azuredatalakestore.net/<cluster_root_path>/ with adl:///.

      adl:///<file path>
    
  • 相対パスの使用Using the relative path. この方法により、アクセスするファイルへの相対パスのみを指定します。With this approach, you only provide the relative path to the file that you want to access. たとえば、そのファイルへの完全パスが次のとおりだとします。For example, if the complete path to the file is:

      adl://mydatalakestore.azuredatalakestore.net/<cluster_root_path>/example/data/sample.log
    

    この sample.log ファイルには、次の相対パスを使用してアクセスできます。You can access the same sample.log file by using this relative path instead.

      /example/data/sample.log
    

Data Lake Storage Gen1 にアクセスできる HDInsight クラスターを作成するCreate HDInsight clusters with access to Data Lake Storage Gen1

Data Lake Storage Gen1 にアクセスできる HDInsight クラスターを作成する方法の詳しい手順については、以下のリンクを参照してください。Use the following links for detailed instructions on how to create HDInsight clusters with access to Data Lake Storage Gen1.

HDInsight 証明書を更新し、Data Lake Storage Gen1 にアクセスするRefresh the HDInsight certificate for Data Lake Storage Gen1 access

次の PowerShell コード サンプルは、ローカル ファイルまたは Azure Key Vault の証明書を読み取り、Azure Data Lake Storage Gen1 にアクセスできるように新しい証明書で HDInsight クラスターを更新します。The following example PowerShell code reads a certificate from a local file or Azure Key Vault, and updates your HDInsight cluster with the new certificate to access Azure Data Lake Storage Gen1. 独自の HDInsight クラスター名、リソース グループ名、サブスクリプション ID、アプリ ID、証明書のローカル パスを指定します。Provide your own HDInsight cluster name, resource group name, subscription ID, app ID, local path to the certificate. 入力を求められたら、パスワードを入力します。Type in the password when prompted.

$clusterName = '<clustername>'
$resourceGroupName = '<resourcegroupname>'
$subscriptionId = '01234567-8a6c-43bc-83d3-6b318c6c7305'
$appId = '01234567-e100-4118-8ba6-c25834f4e938'
$addNewCertKeyCredential = $true
$certFilePath = 'C:\localfolder\adls.pfx'
$KeyVaultName = "my-key-vault-name"
$KeyVaultSecretName = "my-key-vault-secret-name"
$certPassword = Read-Host "Enter Certificate Password"
# certSource
# 0 - create self signed cert
# 1 - read cert from file path
# 2 - read cert from key vault
$certSource = 0

Login-AzAccount
Select-AzSubscription -SubscriptionId $subscriptionId

if($certSource -eq 0)
{
    Write-Host "Generating new SelfSigned certificate"

    $cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject "CN=hdinsightAdlsCert" -KeySpec KeyExchange
    $certBytes = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $certPassword);
    $certString = [System.Convert]::ToBase64String($certBytes)
}
elseif($certSource -eq 1)
{

    Write-Host "Reading the cert file from path $certFilePath"

    $cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2($certFilePath, $certPassword)
    $certString = [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes($certFilePath))
}
elseif($certSource -eq 2)
{

    Write-Host "Reading the cert file from Azure Key Vault $KeyVaultName"

    $cert = (Get-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName)
    $certValue = [System.Convert]::FromBase64String($cert.SecretValueText)
    $certObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList $certValue, $null,"Exportable, PersistKeySet"

    $certBytes = $certObject.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $certPassword.SecretValueText);

    $certString =[System.Convert]::ToBase64String($certBytes)
}

if($addNewCertKeyCredential)
{
    Write-Host "Creating new KeyCredential for the app"
    $keyValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
    New-AzADAppCredential -ApplicationId $appId -CertValue $keyValue -EndDate $cert.NotAfter -StartDate $cert.NotBefore
    Write-Host "Waiting for 7 minutes for the permissions to get propagated"
    Start-Sleep -s 420 #7 minutes
}

Write-Host "Updating the certificate on HDInsight cluster..."

Invoke-AzResourceAction `
    -ResourceGroupName $resourceGroupName `
    -ResourceType 'Microsoft.HDInsight/clusters' `
    -ResourceName $clusterName `
    -ApiVersion '2015-03-01-preview' `
    -Action 'updateclusteridentitycertificate' `
    -Parameters @{ ApplicationId = $appId; Certificate = $certString; CertificatePassword = $certPassword.ToString() } `
    -Force

次の手順Next steps

この記事では、HDInsight で HDFS と互換性のある Azure Data Lake Storage Gen1 を使う方法について説明しました。In this article, you learned how to use HDFS-compatible Azure Data Lake Storage Gen1 with HDInsight. これにより、収集したデータを長期にわたって格納できるスケーラブルなソリューションを構築できます。さらに HDInsight を使用すると、格納されている構造化データと非構造化データから有益な情報を得ることができます。This allows you to build scalable, long-term, archiving data acquisition solutions and use HDInsight to unlock the information inside the stored structured and unstructured data.

詳細については、次を参照してください。For more information, see: