可以将 hadoop-azure 配置为对 azure blob 使用活动目录(租户、appId、appSecret)身份验证吗
Posted
技术标签:
【中文标题】可以将 hadoop-azure 配置为对 azure blob 使用活动目录(租户、appId、appSecret)身份验证吗【英文标题】:Can hadoop-azure be configured to use active directory (tenant, appId, appSecret) auth for azure blob 【发布时间】:2021-11-30 09:22:09 【问题描述】:我正在使用 Hadoop-azure lib 从 azure blob 存储读取文件。从文档中,我手动添加了 Hadoop 配置以使用共享访问签名 (sas) 或共享密钥身份验证。而可以通过 Active Directory(租户 ID/客户端 ID/客户端密码)进行身份验证。我找到了为 Azure-Data-Lake-Storage-gen2 配置它的下一种方法,而我仍然很好奇我能否以某种方式将它用于 azure blob (wasb/wasbs blobs)
hadoopConfig.set("fs.azure.account.auth.type", "OAuth");
hadoopConfig.set("fs.azure.account.oauth.provider.type.<storageName>.blob.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider");
hadoopConfig.set("fs.azure.account.oauth2.client.id.<storageName>.blob.core.windows.net", clientId);
hadoopConfig.set("fs.azure.account.oauth2.client.secret.<storageName>.blob.core.windows.net", clientSecret);
hadoopConfig.set("fs.azure.account.oauth2.client.endpoint.<storageName>.blob.core.windows.net", "https://login.microsoftonline.com/" + tenantId
+"/oauth2/token");
^ 不适用于 AZURE BLOB(异常仍然要求我提供共享密钥)
Hadoop-azure 中有 org.apache.hadoop.fs.azurebfs.oauth2.AzureADAuthenticator
类,但我不知道如何将它连接到配置。
我的主要代码:
public void readFile(String blobURI)
InputFile file = HadoopInputFile.fromPath(new org.apache.hadoop.fs.Path(blobURI), hadoopConfig);
reader = AvroParquetReader.<GenericRecord> builder(file).build();
【问题讨论】:
【参考方案1】:Hadoop中的ABFS(azure blob文件系统)支持读取和写入存储在一个Azure Blob Storage帐户中的数据,还支持配置多个Azure Blob Storage帐户
ABFS 驱动程序的所有配置都存储在core-site.xml
配置文件中
配置 Hadoop 以访问 ADLS 就是设置 Azure Data Lake 文件系统。编辑您的 core-site.xml,其中包含集群范围的配置。 core-site.xml
位于%HADOOP_HOME%\etc\hadoop
需要像这样设置配置
<configuration> <property>
<name>dfs.adls.oauth2.access.token.provider.type</name>
<value>ClientCredential</value>
</property>
<property>
<name>dfs.adls.oauth2.refresh.url</name>
<value>YOUR TOKEN ENDPOINT</value>
</property> <property>
<name>dfs.adls.oauth2.client.id</name>
<value>YOUR CLIENT ID</value>
</property> <property>
<name>dfs.adls.oauth2.credential</name>
<value>YOUR CLIENT SECRET</value>
</property> <property>
<name>fs.adl.impl</name>
<value>org.apache.hadoop.fs.adl.AdlFileSystem</value>
</property> <property>
<name>fs.AbstractFileSystem.adl.impl</name>
<value>org.apache.hadoop.fs.adl.Adl</value>
</property> </configuration>
更多详情请参考document1和document2
【讨论】:
以上是关于可以将 hadoop-azure 配置为对 azure blob 使用活动目录(租户、appId、appSecret)身份验证吗的主要内容,如果未能解决你的问题,请参考以下文章
将 iOS 应用设置为对 App Store 上的选定用户可见