我需要以编程方式将对Azure数据湖的引用添加到现有群集中。我知道我们可以通过脚本操作使用blob存储来做到这一点,但是我发现没有记录的方法可以使用ADL做到这一点。
我已经详细研究了用于添加blob存储(https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh)的脚本,并了解了其对core-site.xml的操作。但是我不知道如何用ADL做类似的事情。特别是,我正在查看core-site.xml文件,并看到fs.azure.datalake.token.provider.script引用的是与Blob存储令牌提供程序相同的解密脚本。但是,我在任何地方都看不到数据湖令牌的加密值。
答案 0 :(得分:0)
我不确定是否直接支持此功能,但是您可以参考以下几篇文章。如果没有相关文档,并且唯一的方法是奇怪的解决方法,我将等到它作为完整功能发布(如果有的话)。我确定此功能请求已被多次提出!
在该文章中提到,
如果要使用Data Lake Storage Gen1作为附加存储 对于HDInsight群集,强烈建议您在 您按照本文所述创建群集。添加数据湖 将Gen1存储作为现有HDInsight群集的附加存储是 一个复杂的过程并且容易出错。
不确定此cmdlet是否可用于添加到现有群集中,
答案 1 :(得分:0)
您可以使用本指南:Add additional storage accounts to HDInsight。它对我来说效果很好(我遵循PowerShell中的说明)。
请注意,尽管新添加的存储帐户将永远不会出现在Azure的群集的“存储帐户”刀片中。
答案 2 :(得分:0)
对于ADLv1/v2
,没有上面发布的adding storage account to HDInsight类似的指南。
但是,好消息是所提供的bash脚本可以重复使用。 Bash脚本执行bunch of steps,而您只需要最后两个。
将缺少的自定义属性添加到core-site.xml
下的updateAmbariConfigs
文件中。
以下是将ADLv2
存储用作集群的附加存储存储所需的自定义属性:
fs.azure.account.auth.type.#yourADLv2storagename#.dfs.core.windows.net=OAuth
fs.azure.account.oauth.provider.type.#yourADLv2storagename#.dfs.core.windows.net=org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
fs.azure.account.oauth2.client.endpoint.#yourADLv2storagename#.dfs.core.windows.net=https://login.microsoftonline.com/#yourtenantID#/oauth2/token
fs.azure.account.oauth2.client.id.#yourADLv2storagename#.dfs.core.windows.net=#yourApplicationRegistrationIDUsedForADLaccess#
fs.azure.account.oauth2.client.secret.#yourADLv2storagename#.dfs.core.windows.net=#clientSecretForAppRegistrationAbove#
然后,您可以将脚本存储在存储帐户中可公开访问的容器中,然后通过GUI或任何其他首选方式提交脚本。
答案 3 :(得分:0)
如果主存储帐户是ADLS Gen2,则只能访问其他ADLS Gen2存储。通常,您可以使用具有存储Blob数据所有者的用户托管身份来设置主存储。如果您随后转到另一个启用了hns的存储帐户,并将“存储Blob数据贡献者”的角色权限添加到同一用户管理的身份,则群集将能够访问该存储
hdfs dfs -ls abfs://<container>@<storageaccount>.dfs.core.windows.net