Använda Azure Data Lake Storage Gen2 med Azure HDInsight-kluster

Azure Data Lake Storage Gen2 är en molnlagringstjänst för analys av stordata som bygger på Azure Blob Storage. Data Lake Storage Gen2 kombinerar funktionerna i Azure Blob Storage och Azure Data Lake Storage Gen1. Den resulterande tjänsten erbjuder funktioner från Azure Data Lake Storage Gen1, inklusive: filsystemsemantik, säkerhet på katalog- och filnivå samt anpassningsbarhet. Tillsammans med funktioner för låg kostnad, nivåindelad lagring, hög tillgänglighet och haveriberedskap från Azure Blob Storage.

En fullständig jämförelse av alternativ för att skapa kluster med Data Lake Storage Gen2 finns i Jämför lagringsalternativ för användning med Azure HDInsight kluster.

Varning

Faktureringen för HDInsight-kluster är prorated per minut, oavsett om du använder dem eller inte. Se till att ta bort klustret när du har använt det. Se hur du tar bort ett HDInsight-kluster.

Tillgänglighet för Data Lake Storage Gen2

Data Lake Storage Gen2 är tillgängligt som ett lagringsalternativ för nästan alla Azure HDInsight-klustertyper som både standardkonto och ytterligare ett lagringskonto. HBase kan dock bara ha ett konto med Data Lake Storage Gen2.

Anteckning

När du har valt Data Lake Storage Gen2 som primär lagringstyp kandu inte välja en Data Lake Storage Gen1 som ytterligare lagring.

Skapa HDInsight-kluster med Data Lake Storage Gen2

Använd följande länkar för detaljerade anvisningar om hur du skapar HDInsight-kluster med åtkomst till Data Lake Storage Gen2.

Åtkomstkontroll för Data Lake Storage Gen2 i HDInsight

Vilka typer av behörigheter stöder Data Lake Storage Gen2?

Data Lake Storage Gen2 använder en åtkomstkontrollmodell som stöder både rollbaserad åtkomstkontroll i Azure (Azure RBAC) och POSIX-liknande åtkomstkontrollistor (ACL:er). Data Lake Storage Gen1 stöder endast åtkomstkontrolllistor för att kontrollera åtkomst till data.

Azure RBAC använder rolltilldelningar för att effektivt tillämpa uppsättningar av behörigheter för användare, grupper och tjänstens huvudnamn för Azure-resurser. Vanligtvis är dessa Azure-resurser begränsade till resurser på den översta nivån (till exempel Azure Blob Storage-konton). För Azure Blob Storage och även Data Lake Storage Gen2 har den här mekanismen utökats till filsystemresursen.

Mer information om filbehörigheter med Azure RBAC finns i Rollbaserad åtkomstkontroll i Azure (Azure RBAC).

Mer information om filbehörigheter med ACL:er finns i Åtkomstkontrollistor för filer och kataloger.

Hur gör jag för att styra åtkomsten till mina data i Data Lake Storage Gen2?

HDInsight-klustrets möjlighet att komma åt filer i Data Lake Storage Gen2 styrs via hanterade identiteter. En hanterad identitet är en identitet som registrerats i Azure Active Directory (Azure AD) vars autentiseringsuppgifter hanteras av Azure. Med hanterade identiteter behöver du inte registrera tjänstens huvudnamn i Azure AD. Eller behåll autentiseringsuppgifter, till exempel certifikat.

Azure-tjänster har två typer av hanterade identiteter: system-tilldelade och användar-tilldelade. HDInsight använder användar tilldelade hanterade identiteter för att få åtkomst till Data Lake Storage Gen2. En user-assigned managed identity skapas som en fristående Azure-resurs. När den skapas skapar Azure en identitet i den Azure AD-klientorganisation som är betrodd av den prenumeration som används. När identiteten har skapats kan den tilldelas till en eller flera tjänstinstanser i Azure.

Livscykeln för en användartilldelad identitet hanteras separat från livscykeln för de Azure-tjänstinstanser som den är tilldelad till. Mer information om hanterade identiteter finns i Vad är hanterade identiteter för Azure-resurser?.

Hur gör jag för att ange behörigheter för Azure AD-användare att fråga efter data i Data Lake Storage Gen2 med hjälp av Hive eller andra tjänster?

Om du vill ange behörigheter för användare att fråga efter data använder du Azure AD-säkerhetsgrupper som tilldelade huvudnamn i ACL:er. Tilldela inte behörighet för filåtkomst direkt till enskilda användare eller tjänstens huvudnamn. Med Azure AD-säkerhetsgrupper för att styra flödet av behörigheter kan du lägga till och ta bort användare eller tjänstens huvudnamn utan att tillämpa ACL:er på nytt i en hel katalogstruktur. Du behöver bara lägga till eller ta bort användarna från lämplig Azure AD-säkerhetsgrupp. ACL:er ärvs inte, så att tillämpa ACL:er igen kräver att ACL:en uppdateras på varje fil och underkatalog.

Åtkomst till filer från klustret

Det finns flera sätt att komma åt filerna i Data Lake Storage Gen2 från ett HDInsight-kluster.

  • Via det fullständiga namnet. Med den här metoden kan du ange den fullständiga sökvägen till filen som du vill öppna.

    abfs://<containername>@<accountname>.dfs.core.windows.net/<file.path>/
    
  • Via det förkortade sökvägsformatet. Med den här metoden ersätter du sökvägen upp till klusterroten med:

    abfs:///<file.path>/
    
  • Med den relativa sökvägen. Med den här metoden anger du bara den relativa sökvägen till den fil som du vill öppna.

    /<file.path>/
    

Exempel på dataåtkomst

Exemplen baseras på en SSH-anslutning till klustrets huvudnod. I exemplen används alla tre URI-scheman. Ersätt CONTAINERNAME och med relevanta STORAGEACCOUNT värden

Några hdfs-kommandon

  1. Skapa en fil på lokal lagring.

    touch testFile.txt
    
  2. Skapa kataloger i klusterlagring.

    hdfs dfs -mkdir abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/sampledata1/
    hdfs dfs -mkdir abfs:///sampledata2/
    hdfs dfs -mkdir /sampledata3/
    
  3. Kopiera data från lokal lagring till klusterlagring.

    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. Lista kataloginnehåll på klusterlagring.

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

Skapa en Hive-tabell

Tre filplatser visas i illustrerande syfte. Använd bara en av posterna för den LOCATION faktiska körningen.

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/';

Nästa steg