Drivrutinen för Azure Blob Filesystem (ABFS): En dedikerad Azure Storage-drivrutin för Hadoop
En av de primära åtkomstmetoderna för data i Azure Data Lake Storage är via Hadoop FileSystem. Data Lake Storage ger användare av Azure Blob Storage åtkomst till en ny drivrutin, Drivrutinen för Azure Blob File System eller ABFS
. ABFS är en del av Apache Hadoop och ingår i många av de kommersiella distributionerna av Hadoop. Med ABFS-drivrutinen kan många program och ramverk komma åt data i Azure Blob Storage utan någon kod som uttryckligen refererar till Data Lake Storage.
Tidigare funktion: Blobdrivrutinen för Windows Azure Storage
Windows Azure Storage Blob-drivrutinen eller WASB-drivrutinen tillhandahöll det ursprungliga stödet för Azure Blob Storage. Den här drivrutinen utförde den komplexa uppgiften att mappa filsystemssemantik (som krävs av Hadoop FileSystem-gränssnittet) till den som används i gränssnittet för objektlagringsformatet som exponeras av Azure Blob Storage. Den här drivrutinen fortsätter att stödja den här modellen och ger hög prestandaåtkomst till data som lagras i blobbar, men innehåller en betydande mängd kod som utför den här mappningen, vilket gör det svårt att underhålla. Dessutom kräver vissa åtgärder som FileSystem.rename() och FileSystem.delete() när de tillämpas på kataloger att drivrutinen utför ett stort antal åtgärder (på grund av att objektlager saknar stöd för kataloger) vilket ofta leder till sämre prestanda. ABFS-föraren utformades för att övervinna de inneboende bristerna i WASB.
Drivrutinen för Azure Blob File System
Rest-gränssnittet för Azure Data Lake Storage är utformat för att stödja filsystemssemantik via Azure Blob Storage. Eftersom Hadoop-filsystemet också är utformat för att stödja samma semantik finns det inget krav på en komplex mappning i drivrutinen. Azure Blob File System-drivrutinen (eller ABFS) är alltså bara en klient-shim för REST-API:et.
Det finns dock vissa funktioner som drivrutinen fortfarande måste utföra:
URI-schema för referensdata
I enlighet med andra filsystemimplementeringar i Hadoop definierar ABFS-drivrutinen sitt eget URI-schema så att resurser (kataloger och filer) kan åtgärdas tydligt. URI-schemat dokumenteras i Använda Azure Data Lake Storage-URI:n. URI:ns struktur är: abfs[s]://file_system@account_name.dfs.core.windows.net/<path>/<path>/<file_name>
Med det här URI-formatet kan standardverktyg och ramverk för Hadoop användas för att referera till dessa resurser:
hdfs dfs -mkdir -p abfs://fileanalysis@myanalytics.dfs.core.windows.net/tutorials/flightdelays/data
hdfs dfs -put flight_delays.csv abfs://fileanalysis@myanalytics.dfs.core.windows.net/tutorials/flightdelays/data/
Internt översätter ABFS-drivrutinen de resurser som anges i URI:n till filer och kataloger och anropar REST-API:et för Azure Data Lake Storage med dessa referenser.
Autentisering
ABFS-drivrutinen stöder två former av autentisering så att Hadoop-programmet kan komma åt resurser som finns i ett Data Lake Storage-kompatibelt konto på ett säkert sätt. Fullständig information om tillgängliga autentiseringsscheman finns i säkerhetsguiden för Azure Storage. Dessa är:
Delad nyckel: Detta ger användarna åtkomst till ALLA resurser i kontot. Nyckeln krypteras och lagras i Hadoop-konfigurationen.
Microsoft Entra ID OAuth Bearer Token: Microsoft Entra-ägartoken hämtas och uppdateras av drivrutinen med antingen slutanvändarens identitet eller ett konfigurerat tjänsthuvudnamn. Med den här autentiseringsmodellen auktoriseras all åtkomst per anrop med hjälp av den identitet som är associerad med den angivna token och utvärderas mot den tilldelade POSIX-åtkomstkontrollistan (ACL).
Kommentar
Azure Data Lake Storage stöder endast Azure AD v1.0-slutpunkter.
Konfiguration
All konfiguration för ABFS-drivrutinen lagras i konfigurationsfilen core-site.xml
. På Hadoop-distributioner med Ambari kan konfigurationen också hanteras med hjälp av webbportalen eller Ambari REST API.
Information om alla konfigurationsposter som stöds anges i den officiella Hadoop-dokumentationen.
Hadoop-dokumentation
ABFS-drivrutinen är fullständigt dokumenterad i den officiella Hadoop-dokumentationen