Utiliser Azure Data Lake Storage Gen2 avec des clusters Azure HDInsightUse Azure Data Lake Storage Gen2 with Azure HDInsight clusters

Azure Data Lake Storage Gen2 est un service de stockage cloud dédié à l’analytique de Big Data et intégré au Stockage Blob Azure.Azure Data Lake Storage Gen2 is a cloud storage service dedicated to big data analytics, built on Azure Blob storage. Data Lake Storage Gen2 réunit les capacités du Stockage Blob Azure et d’Azure Data Lake Storage Gen1.Data Lake Storage Gen2 combines the capabilities of Azure Blob storage and Azure Data Lake Storage Gen1. Le service qui en résulte offre des fonctionnalités d’Azure Data Lake Storage Gen1.The resulting service offers features from Azure Data Lake Storage Gen1. Ces fonctionnalités incluent : la sémantique du système de fichiers, la sécurité au niveau des répertoires et des fichiers, ainsi que l’adaptabilité.These features include: file system semantics, directory-level and file-level security, and adaptability. En ce qui concerne les fonctionnalités à faible coût du stockage Blob Azure, elles comprennent le stockage hiérarchisé, la haute disponibilité et la récupération d’urgence.Along with the low-cost, tiered storage, high availability, and disaster-recovery capabilities from Azure Blob storage.

Disponibilité de Data Lake Storage Gen2Data Lake Storage Gen2 availability

Data Lake Storage Gen2 est disponible comme option de stockage pour presque tous les types de clusters Azure HDInsight en tant que compte par défaut et compte de stockage supplémentaire.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, en revanche, ne peut avoir qu’un seul compte Data Lake Storage Gen2.HBase, however, can have only one Data Lake Storage Gen2 account.

Pour une comparaison complète des options de création de cluster à l'aide de Data Lake Storage Gen2, consultez Comparer les options de stockage à utiliser avec les clusters 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.

Notes

Après avoir sélectionné Data Lake Storage Gen2 comme type de stockage principal, vous ne pouvez pas sélectionner un compte Data Lake Storage Gen1 comme stockage supplémentaire.After you select Data Lake Storage Gen2 as your primary storage type, you cannot select a Data Lake Storage Gen1 account as additional storage.

Créer un cluster avec Data Lake Storage Gen2 par le biais du portail AzureCreate a cluster with Data Lake Storage Gen2 through the Azure portal

Si vous souhaitez créer un cluster HDInsight qui utilise Data Lake Storage Gen2 comme stockage, effectuez les étapes suivantes pour configurer un compte 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.

Créer une identité managée attribuée par l’utilisateurCreate a user-assigned managed identity

Créez une identité managée affectée à l’utilisateur, si vous n’en avez pas encore.Create a user-assigned managed identity, if you don’t already have one.

  1. Connectez-vous au portail Azure.Sign in to the Azure portal.
  2. Dans le coin supérieur gauche, cliquez sur Créer une ressource.In the upper-left click Create a resource.
  3. Dans la zone de recherche, tapez user assigned (utilisateur affecté) , puis cliquez sur Identité managée affectée par l'utilisateur.In the search box, type user assigned and click User Assigned Managed Identity.
  4. Cliquez sur Créer.Click Create.
  5. Entrez un nom pour votre identité managée, sélectionnez l'abonnement, le groupe de ressources et l'emplacement correspondants.Enter a name for your managed identity, select the correct subscription, resource group, and location.
  6. Cliquez sur Créer.Click Create.

Pour plus d’informations sur le fonctionnement des identités managées dans Azure HDInsight, consultez Identités managées dans Azure HDInsight.For more information on how managed identities work in Azure HDInsight, see Managed identities in Azure HDInsight.

Créer une identité managée attribuée par l’utilisateur

Créer un compte Data Lake Storage Gen2Create a Data Lake Storage Gen2 account

Créez un compte de stockage Azure Data Lake Storage Gen2.Create an Azure Data Lake Storage Gen2 storage account.

  1. Connectez-vous au portail Azure.Sign in to the Azure portal.
  2. Dans le coin supérieur gauche, cliquez sur Créer une ressource.In the upper-left click Create a resource.
  3. Dans la zone de recherche, tapez storage (stockage) , puis cliquez sur Compte de stockage.In the search box, type storage and click Storage account.
  4. Cliquez sur Créer.Click Create.
  5. Sur l'écran Créer un compte de stockage :On the Create storage account screen:
    1. Sélectionnez l’abonnement et le groupe de ressources correspondants.Select the correct subscription and resource group.
    2. Entrez un nom pour votre compte Data Lake Storage Gen2.Enter a name for your Data Lake Storage Gen2 account.
    3. Cliquez sur l’onglet Avancé.Click on the Advanced tab.
    4. Cliquez sur Activé en regard de Espace de noms hiérarchique sous Data Lake Storage Gen2.Click Enabled next to Hierarchical namespace under Data Lake Storage Gen2.
    5. Cliquez sur Vérifier + créer.Click Review + create.
    6. Cliquez sur CréerClick Create

Pour plus d'informations sur les autres options lors de la création d'un compte de stockage, voir Démarrage rapide : Créer un compte de stockage 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.

Capture d’écran montrant la création du compte de stockage dans le portail Azure

Définir les autorisations de l’identité managée sur le compte Data Lake Storage Gen2Set up permissions for the managed identity on the Data Lake Storage Gen2 account

Affectez l’identité managée au rôle Propriétaire des données Blob du stockage sur le compte de stockage.Assign the managed identity to the Storage Blob Data Owner role on the storage account.

  1. Dans le portail Azure, accédez à votre compte de stockage.In the Azure portal, go to your storage account.

  2. Sélectionnez votre compte de stockage, puis sélectionnez Contrôle d’accès (IAM) pour afficher les paramètres de contrôle d’accès du compte.Select your storage account, then select Access control (IAM) to display the access control settings for the account. Sélectionnez l’onglet Attributions de rôles pour afficher la liste des attributions de rôles.Select the Role assignments tab to see the list of role assignments.

    Capture d’écran montrant les paramètres de contrôle d’accès du stockage

  3. Sélectionnez le bouton + Ajouter une attribution de rôle pour ajouter un nouveau rôle.Select the + Add role assignment button to add a new role.

  4. Dans la fenêtre Ajouter une attribution de rôle, sélectionnez le rôle Propriétaire des données Blob du stockage.In the Add role assignment window, select the Storage Blob Data Owner role. Ensuite, sélectionnez l’abonnement qui contient le compte de stockage et l’identité managée.Then, select the subscription that has the managed identity and storage account. Ensuite, recherchez l’identité managée affectée par l’utilisateur que vous avez créée.Next, search to locate the user-assigned managed identity that you created previously. Pour finir, sélectionnez l’identité managée pour qu’elle soit listée sous Membres sélectionnés.Finally, select the managed identity, and it will be listed under Selected members.

    Capture d’écran montrant comment attribuer un rôle RBAC

  5. Sélectionnez Enregistrer.Select Save. L’identité affectée par l’utilisateur que vous avez sélectionnée est maintenant listée sous le rôle sélectionné.The user-assigned identity that you selected is now listed under the selected role.

  6. Une fois cette configuration initiale terminée, vous pouvez créer un cluster par le biais du portail.After this initial setup is complete, you can create a cluster through the portal. Le cluster doit être dans la même région Azure que le compte de stockage.The cluster must be in the same Azure region as the storage account. Sous l’onglet Stockage du menu de création du cluster, sélectionnez les options suivantes :In the Storage tab of the cluster creation menu, select the following options:

    • Comme Type de stockage principal, sélectionnez Azure Data Lake Storage Gen2.For Primary storage type, select Azure Data Lake Storage Gen2.

    • Sous Compte de stockage principal, recherchez et sélectionnez le compte de stockage Data Lake Storage Gen2 nouvellement créé.Under Primary Storage account, search for and select the newly created Data Lake Storage Gen2 storage account.

    • Sous Identité, sélectionnez l’identité managée affectée par l’utilisateur nouvellement créée.Under Identity, select the newly created user-assigned managed identity.

      Paramètres de stockage pour l’utilisation de Data Lake Storage Gen2 avec Azure HDInsight

    Notes

    • Pour ajouter un compte Azure Data Lake Storage Gen2 secondaire, au niveau du compte de stockage, attribuez simplement l’identité managée créée précédemment au nouveau compte de stockage Azure Data Lake Storage Gen2 que vous voulez ajouter.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 want to add. Sachez que l’ajout d’un compte Azure Data Lake Storage Gen2 secondaire via le panneau « Comptes de stockage supplémentaires » de HDInsight n’est pas pris en charge.Please be advised that adding a secondary Data Lake Storage Gen2 account via the "Additional storage accounts" blade on HDInsight isn't supported.
    • Vous pouvez activer RA-GRS ou RA-ZRS sur le compte de stockage Azure utilisé par HDInsight.You can enable RA-GRS or RA-ZRS on the Azure storage account that HDInsight uses. La création d’un cluster sur le point de terminaison secondaire RA-GRS ou RA-ZRS n’est toutefois pas prise en charge.However, creating a cluster against the RA-GRS or RA-ZRS secondary endpoint isn't supported.

Créer un cluster avec Data Lake Storage Gen2 par le biais d’Azure CLICreate a cluster with Data Lake Storage Gen2 through the Azure CLI

Vous pouvez télécharger un exemple de fichier de modèle et télécharger un exemple de fichier de paramètres.You can download a sample template file and download a sample parameters file. Avant d’utiliser le modèle et l’extrait de code Azure CLI ci-dessous, remplacez les espaces réservés suivants par leurs valeurs correctes :Before using the template and the Azure CLI code snippet below, replace the following placeholders with their correct values:

Espace réservéPlaceholder DescriptionDescription
<SUBSCRIPTION_ID> L’ID de votre abonnement AzureThe ID of your Azure subscription
<RESOURCEGROUPNAME> Le groupe de ressources dans lequel vous souhaitez créer le cluster et le compte de stockage.The resource group where you want the new cluster and storage account created.
<MANAGEDIDENTITYNAME> Le nom de l’identité managée qui recevra les autorisations sur votre compte Azure Data Lake Storage Gen2.The name of the managed identity that will be given permissions on your Azure Data Lake Storage Gen2 account.
<STORAGEACCOUNTNAME> Nouveau compte Azure Data Lake Storage Gen2 qui sera créé.The new Azure Data Lake Storage Gen2 account that will be created.
<CLUSTERNAME> Nom de votre cluster HDInsightThe name of your HDInsight cluster.
<PASSWORD> Le mot de passe que vous avez choisi pour vous connecter au cluster à l’aide de SSH et du tableau de bord Ambari.Your chosen password for signing in to the cluster using SSH and the Ambari dashboard.

L’extrait de code ci-dessous effectue les étapes initiales suivantes :The code snippet below does the following initial steps:

  1. Il établit la connexion à votre compte Azure.Logs in to your Azure account.
  2. Il définit l’abonnement actif où les opérations de création seront effectuées.Sets the active subscription where the create operations will be done.
  3. Il crée un groupe de ressources pour les nouvelles activités de déploiement.Creates a new resource group for the new deployment activities.
  4. Il crée une identité managée attribuée par l’utilisateur.Creates a user-assigned managed identity.
  5. Il ajoute une extension à Azure CLI pour utiliser les fonctionnalités de Data Lake Storage Gen2.Adds an extension to the Azure CLI to use features for Data Lake Storage Gen2.
  6. Il crée un compte Data Lake Storage Gen2 à l’aide de --hierarchical-namespace truel’indicateur.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

Ensuite, connectez-vous au portail.Next, sign in to the portal. Ajoutez la nouvelle identité managée affectée par l’utilisateur au rôle Contributeur aux données Blob du stockage sur le compte de stockage.Add the new user-assigned managed identity to the Storage Blob Data Contributor role on the storage account. Cette étape est décrite à l’étape 3 sous Utilisation du Portail Azure.This step is described in step 3 under Using the Azure portal.

Une fois que vous avez défini le rôle de l’identité managée affectée par l’utilisateur, déployez le modèle en utilisant l’extrait de code suivant.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

Créer un cluster avec Data Lake Storage Gen2 par le biais d’Azure PowerShellCreate a cluster with Data Lake Storage Gen2 through Azure PowerShell

L’utilisation de PowerShell pour créer un cluster HDInsight avec Azure Data Lake Storage Gen2 n’est actuellement pas prise en charge.Using PowerShell to create an HDInsight cluster with Azure Data Lake Storage Gen2 isn't currently supported.

Contrôle d’accès à Data Lake Storage Gen2 dans HDInsightAccess control for Data Lake Storage Gen2 in HDInsight

Quels sont les types d’autorisation pris en charge par Data Lake Storage Gen2 ?What kinds of permissions does Data Lake Storage Gen2 support?

Data Lake Storage Gen2 utilise un modèle de contrôle d’accès qui prend en charge le contrôle d’accès en fonction du rôle (RBAC) ainsi que les listes de contrôle d’accès (ACL) POSIX.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 prend en charge les listes de contrôle d’accès uniquement pour contrôler l’accès aux données.Data Lake Storage Gen1 supports access control lists only for controlling access to data.

RBAC utilise des attributions de rôles pour appliquer efficacement des ensembles d’autorisations aux utilisateurs, groupes et principaux de service des ressources Azure.RBAC uses role assignments to effectively apply sets of permissions to users, groups, and service principals for Azure resources. En règle générale, ces ressources Azure sont limitées aux ressources de niveau supérieur (par exemple les comptes Stockage Azure).Typically, those Azure resources are constrained to top-level resources (for example, Azure Storage accounts). Pour le stockage Azure, et aussi Data Lake Storage Gen2, ce mécanisme a été étendu à la ressource du système de fichiers.For Azure Storage, and also Data Lake Storage Gen2, this mechanism has been extended to the file system resource.

Pour plus d’informations sur les autorisations de fichiers avec RBAC, consultez Contrôle d’accès en fonction du rôle Azure (RBAC).For more information about file permissions with RBAC, see Azure role-based access control (RBAC).

Pour plus d’informations sur les autorisations de fichiers avec des listes ACL, consultez Listes de contrôle d’accès sur les fichiers et répertoires.For more information about file permissions with ACLs, see Access control lists on files and directories.

Comment contrôler l’accès à mes données dans Data Lake Storage Gen2 ?How do I control access to my data in Data Lake Storage Gen2?

La capacité de votre cluster HDInsight à accéder aux fichiers dans Data Lake Storage Gen2 est contrôlée par le biais d’identités managées.Your HDInsight cluster's ability to access files in Data Lake Storage Gen2 is controlled through managed identities. Une identité managée est une identité inscrite dans Azure Active Directory (Azure AD) dont les informations d’identification sont gérées par Azure.A managed identity is an identity registered in Azure Active Directory (Azure AD) whose credentials are managed by Azure. Grâce aux identités managées, il n’est pas nécessaire d’inscrire des principaux de service dans Azure AD,With managed identities, you don't need to register service principals in Azure AD. ni de gérer des informations d’identification, par exemple des certificats.Or maintain credentials such as certificates.

Les services Azure utilisent deux types d’identités managées : celles affectées par le système et celles affectées par l’utilisateur.Azure services have two types of managed identities: system-assigned and user-assigned. HDInsight utilise des identités managées affectées par l’utilisateur pour accéder à Data Lake Storage Gen2.HDInsight uses user-assigned managed identities to access Data Lake Storage Gen2. Une user-assigned managed identity est créée en tant que ressource Azure autonome.A user-assigned managed identity is created as a standalone Azure resource. Via un processus de création, Azure crée une identité dans le locataire Azure AD approuvé par l’abonnement en cours d’utilisation.Through a create process, Azure creates an identity in the Azure AD tenant that's trusted by the subscription in use. Une fois l’identité créée, elle peut être affectée à une ou plusieurs instances de service Azure.After the identity is created, the identity can be assigned to one or more Azure service instances.

Le cycle de vie d’une identité attribuée par l’utilisateur est géré séparément du cycle de vie des instances de service Azure auxquelles elle est affectée.The lifecycle of a user-assigned identity is managed separately from the lifecycle of the Azure service instances to which it's assigned. Pour en savoir plus sur les identités managées, consultez la section Que sont les identités managées pour les ressources Azure ?.For more information about managed identities, see What are managed identities for Azure resources?.

Comment définir des autorisations pour que les utilisateurs Azure AD puissent interroger des données dans Data Lake Storage Gen2 avec Hive ou d’autres services ?How do I set permissions for Azure AD users to query data in Data Lake Storage Gen2 by using Hive or other services?

Pour définir des autorisations pour que les utilisateurs puissent interroger des données, utilisez les groupes de sécurité Azure AD comme principal affecté dans les listes de contrôle d’accès.To set permissions for users to query data, use Azure AD security groups as the assigned principal in ACLs. N’attribuez pas directement des autorisations d’accès aux fichiers à des utilisateurs ou principaux de service individuels.Don't directly assign file-access permissions to individual users or service principals. Grâce aux groupes de sécurité Azure AD qui contrôlent le flux d’autorisations, vous pouvez ajouter et supprimer des utilisateurs ou des principaux de service sans réappliquer des ACL à une structure de répertoires entière.With 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. Il vous suffit d’ajouter ou de supprimer les utilisateurs du groupe de sécurité Azure AD approprié.You only have to add or remove the users from the appropriate Azure AD security group. Les listes de contrôle d’accès ne sont pas héritées. Par conséquent, pour les réappliquer, vous devez les mettre à jour dans chaque fichier et sous-répertoire.ACLs aren't inherited, so reapplying ACLs requires updating the ACL on every file and subdirectory.

Accès aux fichiers à partir du clusterAccess files from the cluster

Il existe plusieurs méthodes pour accéder aux fichiers dans Data Lake Storage Gen2 à partir d’un cluster HDInsight.There are several ways you can access the files in Data Lake Storage Gen2 from an HDInsight cluster.

  • Utilisation du nom complet.Using the fully qualified name. Avec cette approche, vous fournissez le chemin d’accès complet au fichier auquel vous souhaitez accéder.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>/
    
  • Utilisation du format de chemin d’accès raccourci.Using the shortened path format. Avec cette approche, vous remplacez le chemin d’accès à la racine du cluster par :With this approach, you replace the path up to the cluster root with:

    abfs:///<file.path>/
    
  • Utilisation du chemin d’accès relatif.Using the relative path. Avec cette approche, vous fournissez uniquement le chemin d’accès relatif au fichier auquel vous souhaitez accéder.With this approach, you only provide the relative path to the file that you want to access.

    /<file.path>/
    

Exemples d’accès aux donnéesData access examples

Les exemples sont basés sur une connexion ssh au nœud principal du cluster.Examples are based on an ssh connection to the head node of the cluster. Les exemples utilisent les trois schémas d’URI.The examples use all three URI schemes. Remplacez CONTAINERNAME et STORAGEACCOUNT par les valeurs correspondantesReplace CONTAINERNAME and STORAGEACCOUNT with the relevant values

Quelques commandes hdfsA few hdfs commands

  1. Créez un fichier sur le stockage local.Create a file on local storage.

    touch testFile.txt
    
  2. Créez des répertoires sur le stockage en cluster.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. Copiez les données du stockage local vers le stockage en cluster.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. Affichez le contenu du répertoire sur le stockage en cluster.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/
    

Création d’une table HiveCreating a Hive table

Trois emplacements de fichiers sont indiqués à titre d’illustration.Three file locations are shown for illustrative purposes. Pour l’exécution réelle, n’utilisez qu’une seule des entrées LOCATION.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/';

Étapes suivantesNext steps