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

Azure Data Lake Storage Gen2 は、ビッグ データ分析専用のクラウド ストレージ サービスで、Azure Blob Storage 上に構築されています。Azure Data Lake Storage Gen2 is a cloud storage service dedicated to big data analytics, built on Azure Blob storage. Data Lake Storage Gen2 は Azure Blob Storage と Azure Data Lake Storage Gen1 の機能を結合したものです。Data Lake Storage Gen2 combines the capabilities of Azure Blob storage and Azure Data Lake Storage Gen1. その結果、Azure Data Lake Storage Gen1 に由来するファイル システム セマンティクス、ディレクトリ レベルとファイル レベルのセキュリティ、スケーラビリティなどの機能と、Azure Blob Storage に由来する低コストの階層型記憶域、高可用性、ディザスター リカバリー機能とがこのサービスで提供されます。The resulting service offers features from Azure Data Lake Storage Gen1, such as file system semantics, directory-level and file-level security, and scalability, along with the low-cost, tiered storage, high availability, and disaster-recovery capabilities from Azure Blob storage.

Data Lake Storage Gen2 の可用性Data Lake Storage Gen2 availability

Data Lake Storage Gen2 は、ほぼすべての Azure HDInsight クラスターの種類のストレージ オプションとして、既定のストレージ アカウントと追加のストレージ アカウントの両方で使用できます。Data Lake Storage Gen2 is available as a storage option for almost all Azure HDInsight cluster types as both a default and an additional storage account. ただし、HBase が持てる Data Lake Storage Gen2 アカウントは 1 つのみです。HBase, however, can have only one Data Lake Storage Gen2 account.

Data Lake Storage Gen2 を使用したクラスター作成オプションの詳細な比較については、「Azure HDInsight クラスターで使用するストレージ オプションを比較する」を参照してください。For a full comparison of cluster creation options using Data Lake Storage Gen2, see Compare storage options for use with Azure HDInsight clusters.

注意

Data Lake Storage Gen2 をプライマリ ストレージの種類として選択すると、追加のストレージとして Data Lake Storage Gen1 アカウントを選択できなくなります。After you select Data Lake Storage Gen2 as your primary storage type, you cannot select a Data Lake Storage Gen1 account as additional storage.

Data Lake Storage Gen2 を使用して Azure portal からクラスターを作成するCreate a cluster with Data Lake Storage Gen2 through the Azure portal

ストレージに Data Lake Storage Gen2 を使用する HDInsight クラスターを作成するには、次の手順に従って Data Lake Storage Gen2 アカウントを作成します。To create an HDInsight cluster that uses Data Lake Storage Gen2 for storage, follow these steps to configure a Data Lake Storage Gen2 account.

ユーザー割り当てマネージド ID を作成するCreate a user-assigned managed identity

ユーザー割り当てマネージド ID をまだお持ちでない場合には、作成します。Create a user-assigned managed identity, if you don’t already have one.

  1. Azure portal にサインインするSign in to the Azure portal.
  2. 左上の [リソースの作成] をクリックします。In the upper-left click Create a resource.
  3. 検索ボックスに「ユーザー割り当て」と入力し [ユーザー割り当てマネージド ID] をクリックします。In the search box, type user assigned and click User Assigned Managed Identity.
  4. Create をクリックしてください。Click Create.
  5. ご自身のマネージド ID 名を入力し、適切なサブスクリプション、リソース グループ、および場所を選択します。Enter a name for your managed identity, select the correct subscription, resource group, and location.
  6. Create をクリックしてください。Click Create.

Azure HDInsight でマネージド ID がどのように機能するかに関する詳細は、「Azure HDInsight のマネージド ID」を参照してください。For more information on how managed identities work in Azure HDInsight, see Managed identities in Azure HDInsight.

ユーザー割り当てマネージド ID を作成する

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

Azure Data Lake Storage Gen2 ストレージ アカウントを作成します。Create an Azure Data Lake Storage Gen2 storage account.

  1. Azure portal にサインインするSign in to the Azure portal.
  2. 左上の [リソースの作成] をクリックします。In the upper-left click Create a resource.
  3. 検索ボックスに「ストレージ」と入力し、 [ストレージ アカウント] をクリックします。In the search box, type storage and click Storage account.
  4. Create をクリックしてください。Click Create.
  5. [ストレージ アカウントの作成] 画面で次を実行します。On the Create storage account screen:
    1. 正しいサブスクリプションとリソース グループを選択します。Select the correct subscription and resource group.
    2. ご自分の Data Lake Storage Gen2 アカウントの名前を入力します。Enter a name for your Data Lake Storage Gen2 account. ストレージ アカウントの命名規則の詳細については、「Azure リソースの名前付け規則」を参照してください。For more information on storage account naming conventions see Naming conventions for Azure resources.
    3. [詳細] タブをクリックします。Click on the Advanced tab.
    4. [Data Lake Storage Gen2] の下の [階層構造の名前空間] の横の [有効] をクリックします。Click Enabled next to Hierarchical namespace under Data Lake Storage Gen2.
    5. [Review + create](レビュー + 作成) をクリックします。Click Review + create.
    6. [作成]Click Create

ストレージ アカウントを作成する場合のその他のオプションについては、「Azure Data Lake Storage Gen2 ストレージ アカウントを作成する」を参照してください。For more information on other options during storage account creation, see Quickstart: Create an Azure Data Lake Storage Gen2 storage account.

Azure portal でのストレージ アカウントの作成を示したスクリーンショット

Data Lake Storage Gen2 アカウントにマネージド ID のアクセス許可を設定するSet up permissions for the managed identity on the Data Lake Storage Gen2 account

ストレージ アカウントの [ストレージ BLOB データ所有者] ロールにマネージド ID を割り当てます。Assign the managed identity to the Storage Blob Data Owner role on the storage account.

  1. Azure portal で、ストレージ アカウントに移動します。In the Azure portal, go to your storage account.

  2. ストレージ アカウントを選択し、 [アクセス制御 (IAM)] を選択して、そのアカウントのアクセス制御設定を表示します。Select your storage account, then select Access control (IAM) to display the access control settings for the account. [ロールの割り当て] タブを選択して、ロールの割り当ての一覧を表示します。Select the Role assignments tab to see the list of role assignments.

    ストレージのアクセス制御設定を示すスクリーンショット

  3. [+ ロールの割り当ての追加] ボタンを選択して新しいロールを追加します。Select the + Add role assignment button to add a new role.

  4. [ロールの割り当ての追加] ウィンドウで、 [ストレージ BLOB データ所有者] ロールを選択します。In the Add role assignment window, select the Storage Blob Data Owner role. 次に、マネージド ID とストレージ アカウントを持つサブスクリプションを選択します。Then, select the subscription that has the managed identity and storage account. 次に、以前作成したユーザー割り当てマネージド ID を検索して見つけます。Next, search to locate the user-assigned managed identity that you created previously. 最後に、マネージド ID を選択すると、その ID が [選択したメンバー] の下に一覧表示されます。Finally, select the managed identity, and it will be listed under Selected members.

    RBAC ロールの割り当て方法を示すスクリーンショット

  5. [保存] を選択します。Select Save. 選択したユーザー割り当て ID が、選択されたロールの下に表示されるようになります。The user-assigned identity that you selected is now listed under the selected role.

  6. この初期セットアップを完了すると、ポータルを通じてクラスターを作成できます。After this initial setup is complete, you can create a cluster through the portal. クラスターは、ストレージ アカウントと同じ Azure リージョンに存在する必要があります。The cluster must be in the same Azure region as the storage account. クラスターの作成メニューの [ストレージ] セクションで、次のオプションを選択します。In the Storage section of the cluster creation menu, select the following options:

    • [プライマリ ストレージの種類] で、 [Azure Data Lake Storage Gen2] を選択します。For Primary storage type, select Azure Data Lake Storage Gen2.

    • [ストレージ アカウントの選択] から、新しく作成した Data Lake Storage Gen2 ストレージ アカウントを探して選択します。Under Select a Storage account, search for and select the newly created Data Lake Storage Gen2 storage account.

      Azure HDInsight で Data Lake Storage Gen2 を使用するためのストレージ設定

    • [ID] から、正しいサブスクリプションと新しく作成されたユーザー割り当てマネージド ID を選択します。Under Identity, select the correct subscription and the newly created user-assigned managed identity.

      HDInsight で Data Lake Storage Gen2 を使用するための ID 設定

注意

セカンダリ Data Lake Storage Gen2 アカウントを追加するには、ストレージ アカウント レベルで、追加する新しい Data Lake Storage Gen2 ストレージ アカウントに以前に作成したマネージド ID を割り当てます。セカンダリ Data Lake Storage Gen2 アカウントを HDInsight 上の「追加のストレージ アカウント」 ブレードを使用して追加することはサポートされませんのでご注意ください。To add a secondary Data Lake Storage Gen2 account, at the storage account level, simply assign the managed identity created earlier to the new Data Lake Storage Gen2 storage account that you wish to add.Please be advised that adding a secondary Data Lake Storage Gen2 account via the "Additional storage accounts" blade on HDInsight is not supported.

Data Lake Storage Gen2 を使用して Azure CLI からクラスターを作成するCreate a cluster with Data Lake Storage Gen2 through the Azure CLI

サンプルのテンプレート ファイルをダウンロードして、サンプルのパラメーター ファイルをダウンロードできます。You can download a sample template file and download a sample parameters file. このテンプレートと以下の Azure CLI のコード スニペットを使用する前に、次のプレース ホルダーを正しい値に置き換えます。Before using the template and the Azure CLI code snippet below, replace the following placeholders with their correct values:

プレースホルダーPlaceholder [説明]Description
<SUBSCRIPTION_ID> Azure サブスクリプションの ID ですThe ID of your Azure subscription
<RESOURCEGROUPNAME> 新しいクラスターとストレージ アカウントを作成するリソース グループです。The resource group where you want the new cluster and storage account created.
<MANAGEDIDENTITYNAME> Azure Data Lake Storage Gen2 アカウントに対するアクセス許可を付与するマネージド ID の名前です。The name of the managed identity that will be given permissions on your Azure Data Lake Storage Gen2 account.
<STORAGEACCOUNTNAME> 作成される新しい Azure Data Lake Storage Gen2 アカウントです。The new Azure Data Lake Storage Gen2 account that will be created.
<CLUSTERNAME> HDInsight クラスターの名前です。The name of your HDInsight cluster.
<PASSWORD> SSH と Ambari ダッシュ ボードを使用してクラスターにサインインするために選択したパスワードです。Your chosen password for signing in to the cluster using SSH as well as the Ambari dashboard.

以下のコード スニペットでは、次の初期手順が実行されます。The code snippet below does the following initial steps:

  1. Azure アカウントにログインします。Logs in to your Azure account.
  2. 作成操作が実行されるアクティブなサブスクリプションを設定します。Sets the active subscription where the create operations will be done.
  3. 新しいデプロイ アクティビティ用の新しいリソース グループを作成します。Creates a new resource group for the new deployment activities.
  4. ユーザー割り当てマネージド ID を作成します。Creates a user-assigned managed identity.
  5. Data Lake Storage Gen2 の機能を使用するために、Azure CLI に拡張機能を追加します。Adds an extension to the Azure CLI to use features for Data Lake Storage Gen2.
  6. --hierarchical-namespace true フラグを使用して、新しい Data Lake Storage Gen2 アカウントを作成します。Creates a new Data Lake Storage Gen2 account by using the --hierarchical-namespace true flag.
az login
az account set --subscription <SUBSCRIPTION_ID>

# Create resource group
az group create --name <RESOURCEGROUPNAME> --location eastus

# Create managed identity
az identity create -g <RESOURCEGROUPNAME> -n <MANAGEDIDENTITYNAME>

az extension add --name storage-preview

az storage account create --name <STORAGEACCOUNTNAME> \
    --resource-group <RESOURCEGROUPNAME> \
    --location eastus --sku Standard_LRS \
    --kind StorageV2 --hierarchical-namespace true

次に、ポータルにサインインします。Next, sign in to the portal. Azure Portal の使用に関するページの手順 3 の説明に従って、ストレージ アカウントの [ストレージ BLOB データ共同作成者] ロールに新しいユーザー割り当てマネージド ID を追加します。Add the new user-assigned managed identity to the Storage Blob Data Contributor role on the storage account, as described in step 3 under Using the Azure portal.

ユーザー割り当てマネージド ID のロールを割り当てたら、次のコード スニペットを使用してテンプレートをデプロイします。After you've assigned the role for the user-assigned managed identity, deploy the template by using the following code snippet.

az group deployment create --name HDInsightADLSGen2Deployment \
    --resource-group <RESOURCEGROUPNAME> \
    --template-file hdinsight-adls-gen2-template.json \
    --parameters parameters.json

Data Lake Storage Gen2 を使用して Azure PowerShell からクラスターを作成するCreate a cluster with Data Lake Storage Gen2 through Azure PowerShell

PowerShell を使用して、Azure Data Lake Storage Gen2 を使用する HDInsight クラスターを作成することは現在サポートされていません。Using PowerShell to create an HDInsight cluster with Azure Data Lake Storage Gen2 is not currently supported.

HDInsight での Data Lake Storage Gen2 のアクセス制御Access control for Data Lake Storage Gen2 in HDInsight

Data Lake Storage Gen2 をサポートするアクセス許可の種類What kinds of permissions does Data Lake Storage Gen2 support?

Data Lake Storage Gen2 では、ロール ベースのアクセス制御 (RBAC) と POSIX のようなアクセス制御リスト (ACL) の両方をサポートするアクセス制御モデルを使用します。Data Lake Storage Gen2 uses an access control model that supports both role-based access control (RBAC) and POSIX-like access control lists (ACLs). Data Lake Storage Gen1 では、データへのアクセス制御の場合のみアクセス制御リストがサポートされていました。Data Lake Storage Gen1 supports access control lists only for controlling access to data.

RBAC では、ロールの割り当てを使用して、Azure リソースのユーザー、グループ、サービス プリンシパルにアクセス許可のセットを効果的に適用します。RBAC uses role assignments to effectively apply sets of permissions to users, groups, and service principals for Azure resources. 通常、これらの Azure リソースは、最上位のリソース (例: Azure のストレージ アカウント) に制約されます。Typically, those Azure resources are constrained to top-level resources (for example, Azure storage accounts). Azure Storage および Data Lake Storage Gen2 の場合、このメカニズムがファイル システムのリソースにまで拡張されています。For Azure Storage, and also Data Lake Storage Gen2, this mechanism has been extended to the file system resource.

RBAC を使用したファイルのアクセス許可の詳細については、「Azure のロールベースのアクセス制御 (RBAC)」を参照してください。For more information about file permissions with RBAC, see Azure role-based access control (RBAC).

ACL を使用したファイルのアクセス許可の詳細については、「ファイルとディレクトリのアクセス制御リスト」を参照してください。For more information about file permissions with ACLs, see Access control lists on files and directories.

Data Lake Storage Gen2 で自分のデータへのアクセスを制御する方法How do I control access to my data in Data Lake Storage Gen2?

Data Lake Storage Gen2 で HDInsight クラスターがファイルにアクセスする機能は、マネージド ID によって制御されます。Your HDInsight cluster's ability to access files in Data Lake Storage Gen2 is controlled through managed identities. マネージド ID とは、資格情報が Azure によって管理されている Azure Active Directory (Azure AD) に登録されている ID です。A managed identity is an identity registered in Azure Active Directory (Azure AD) whose credentials are managed by Azure. マネージド ID を使用すると、Azure AD にサービス プリンシパルを登録したり、証明書などの資格情報を保持したりする必要はありません。With managed identities, you don't need to register service principals in Azure AD or maintain credentials such as certificates.

Azure サービスには、システム割り当てとユーザー割り当ての 2 種類のマネージド ID があります。Azure services have two types of managed identities: system-assigned and user-assigned. HDInsight は、ユーザー割り当てマネージド ID を使用して Data Lake Storage Gen2 にアクセスします。HDInsight uses user-assigned managed identities to access Data Lake Storage Gen2. ユーザー割り当てマネージド ID は、スタンドアロン Azure リソースとして作成されます。A user-assigned managed identity is created as a standalone Azure resource. 作成プロセスで、使用されているサブスクリプションによって信頼されている Azure AD テナントに、Azure が ID を作成します。Through a create process, Azure creates an identity in the Azure AD tenant that's trusted by the subscription in use. 作成された ID は、1 つまたは複数の Azure サービス インスタンスに割り当てることができます。After the identity is created, the identity can be assigned to one or more Azure service instances.

ユーザー割り当て ID のライフサイクルは、その ID が割り当てられている Azure サービス インスタンスのライフサイクルとは個別に管理されます。The lifecycle of a user-assigned identity is managed separately from the lifecycle of the Azure service instances to which it's assigned. マネージド ID の詳細については、「Azure リソースのマネージド ID のしくみ」を参照してください。For more information about managed identities, see How do the managed identities for Azure resources work?.

Hive またはその他のサービスを使用して Data Lake Storage Gen2 でデータをクエリするためのアクセス許可を Azure AD ユーザーに設定する方法How do I set permissions for Azure AD users to query data in Data Lake Storage Gen2 by using Hive or other services?

データをクエリするためのアクセス許可をユーザーに設定するには、ACL で割り当て済みのプリンシパルとして Azure AD セキュリティ グループを使用します。To set permissions for users to query data, use Azure AD security groups as the assigned principal in ACLs. 個々のユーザーまたはサービス プリンシパルにファイルのアクセス許可を直接割り当てないでください。Don't directly assign file-access permissions to individual users or service principals. Azure AD セキュリティ グループを使用してアクセス許可のフローを制御すると、ACL をディレクトリ構造全体に再適用することなく、ユーザーまたはサービス プリンシパルを追加および削除できます。When you use Azure AD security groups to control the flow of permissions, you can add and remove users or service principals without reapplying ACLs to an entire directory structure. 適切な Azure AD セキュリティ グループからユーザーまたはサービス プリンシパルを追加または削除するだけです。You only have to add or remove the users from the appropriate Azure AD security group. ACL は継承されないため、ACL を再適用するには、すべてのファイルとサブディレクトリで ACL を更新する必要があります。ACLs aren't inherited, so reapplying ACLs requires updating the ACL on every file and subdirectory.

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

複数の方法で、HDInsight クラスターから Data Lake Storage Gen2 のファイルにアクセスできます。There are several ways you can access the files in Data Lake Storage Gen2 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.

    abfs://<containername>@<accountname>.dfs.core.windows.net/<file.path>/
    
  • 短縮されたパスの使用Using the shortened path format. この方法により、クラスター ルートへのパスを次に置き換えます。With this approach, you replace the path up to the cluster root with:

    abfs:///<file.path>/
    
  • 相対パスの使用Using the relative path. この方法により、アクセスするファイルへの相対パスのみを指定します。With this approach, you only provide the relative path to the file that you want to access.

    /<file.path>/
    

データ アクセスの例Data access examples

例は、クラスターのヘッド ノードへの ssh 接続に基づいています。Examples are based on an ssh connection to the head node of the cluster. この例では、3 つの URI スキームがすべて使用されています。The examples use all three URI schemes. CONTAINERNAMESTORAGEACCOUNT を関連する値に置き換えます。Replace CONTAINERNAME and STORAGEACCOUNT with the relevant values

いくつかの hdfs コマンドA few hdfs commands

  1. ローカル ストレージで単純なファイルを作成します。Create a simple file on local storage.

    touch testFile.txt
    
  2. クラスター ストレージにディレクトリを作成します。Create directories on cluster storage.

    hdfs dfs -mkdir abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/sampledata1/
    hdfs dfs -mkdir abfs:///sampledata2/
    hdfs dfs -mkdir /sampledata3/
    
  3. ローカル ストレージからクラスター ストレージにデータをコピーします。Copy data from local storage to cluster storage.

    hdfs dfs -copyFromLocal testFile.txt  abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/sampledata1/
    hdfs dfs -copyFromLocal testFile.txt  abfs:///sampledata2/
    hdfs dfs -copyFromLocal testFile.txt  /sampledata3/
    
  4. クラスター ストレージのディレクトリの内容を一覧表示します。List directory contents on cluster storage.

    hdfs dfs -ls abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/sampledata1/
    hdfs dfs -ls abfs:///sampledata2/
    hdfs dfs -ls /sampledata3/
    

Hive テーブルの作成Creating a Hive table

3 つのファイルの場所は説明目的で提示されています。Three file locations are shown for illustrative purposes. 実際の実行では、LOCATION エントリを 1 つだけ使用します。For actual execution, use only one of the LOCATION entries.

DROP TABLE myTable;
CREATE EXTERNAL TABLE myTable (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE
LOCATION 'abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/example/data/';
LOCATION 'abfs:///example/data/';
LOCATION '/example/data/';

次のステップNext steps