不支持或不支持以下操作:
Azure Data Lake Storage访问路径语法为:
adl:// <帐户名称> .azuredatalakestore.net /
有关使用存储的详细信息,请参阅使用Azure门户使用Azure Data Lake Store入门。
根据OAuth2规范,使用Azure Data Lake Storage要求OAuth2承载令牌作为HTTPS标头的一部分存在。必须从Azure Active Directory服务中为有权访问Azure Data Lake Storage帐户的那些有效用户获取有效的OAuth2承载令牌。
Azure Active Directory(Azure AD)是Microsoft的基于多租户云的目录和身份管理服务。请参阅什么是ActiveDirectory。
以下各节描述core-site.xml中的OAuth2配置。
可以使用刷新令牌(与用户相关联)或客户端证书(与服务主体类似)来配置证书。
将以下属性添加到集群的core-site.xml中
<属性> <name> fs.adl.oauth2.access.token.provider.type </ name> <value> RefreshToken </ value> </ property>
应用程序必须从与客户端ID关联的Azure Active Directory服务中设置客户端ID和OAuth2刷新令牌。请参阅Java Active Directory库。
不要共享客户端ID和刷新令牌,必须对其保密。
<属性> <name> fs.adl.oauth2.client.id </ name> <value> </ value> </ property> <属性> <name> fs.adl.oauth2.refresh.token </ name> <value> </ value> </ property>
将以下属性添加到您的core-site.xml
<属性> <name> fs.adl.oauth2.access.token.provider.type </ name> <value> ClientCredential </ value> </ property> <属性> <name> fs.adl.oauth2.refresh.url </ name> <value> STEP 7以上的令牌端点</ value> </ property> <属性> <name> fs.adl.oauth2.client.id </ name> <value>高于STEP 7的客户端ID </ value> </ property> <属性> <name> fs.adl.oauth2.credential </ name> <value> STEP 7以上版本的密码</ value> </ property>
注意:此auth方法适用于运行交互式工具,但不适用于提交给集群的作业。
若要使用基于用户的登录,Azure ActiveDirectory提供使用设备代码的登录流。
若要使用设备代码流,用户必须首先在Azure门户中创建本机应用程序注册,并提供该应用程序的客户端ID作为配置。步骤如下:
将以下属性添加到您的core-site.xml
<属性> <name> fs.adl.oauth2.devicecode.clientappid </ name> <value>第5步中的APP ID </ value> </ property>
通常不希望将DeviceCode添加为默认令牌提供程序类型。但是可以在使用本地命令时使用:
hadoop fs -Dfs.adl.oauth2.access.token.provider.type = DeviceCode -ls ...
运行此命令将打印一个URL和设备代码,可用于从任何浏览器(即使在ssh会话之外的其他计算机上)登录。登录完成后,命令将继续。
在许多Hadoop集群中,core-site.xml文件是世界可读的。为了保护这些凭据,建议您使用凭据提供程序框架来安全地存储和访问它们。
所有ADLS凭据属性都可以由凭据提供程序保护。有关凭证提供者API的更多信息,请参阅凭证提供者API。
hadoop凭证创建fs.adl.oauth2.client.id-值123 -provider localjceks://file/home/foo/adls.jceks hadoop凭证创建fs.adl.oauth2.refresh.token-值123 -provider localjceks://file/home/foo/adls.jceks
<属性> <name> fs.adl.oauth2.access.token.provider.type </ name> <value> RefreshToken </ value> </ property> <属性> <name> hadoop.security.credential.provider.path </ name> <value> localjceks://file/home/foo/adls.jceks </ value> <description>用于询问受保护凭据的路径。</ description> </ property>
hadoop distcp [-D fs.adl.oauth2.access.token.provider.type = RefreshToken -D hadoop.security.credential.provider.path = localjceks://file/home/user/adls.jceks] hdfs:// <NameNode主机名>:9001 / user / foo / srcDir adl:// <帐户名称> .azuredatalakestore.net / tgtDir /
注意:您可以选择将提供程序路径属性添加到distcp命令行,而不是将作业特定的配置添加到通用core-site.xml。上面的方括号说明了此功能。
在core-site.xml中配置凭据之后,任何Hadoop组件都可以使用以下格式的URL来引用该Azure Data Lake Storage帐户中的文件:
adl:// <帐户名称> .azuredatalakestore.net / <路径>
方案adl标识由Azure Data Lake Storage支持的Hadoop兼容文件系统上的URL。 adl将加密的HTTPS访问用于与Azure Data Lake Storage API的所有交互。
例如,以下FileSystem Shell命令演示了对名为youraccount的存储帐户的访问。
hadoop fs -mkdir adl://yourcontainer.azuredatalakestore.net/testDir hadoop fs -put testFile adl://yourcontainer.azuredatalakestore.net/testDir/testFile hadoop fs -cat adl://yourcontainer.azuredatalakestore.net/testDir/testFile 测试文件内容
的Hadoop的天青-datalake模块提供支撑,用于配置用户/组的信息是如何在表示getFileStatus() ,listStatus() ,和getAclStatus()调用..
将以下属性添加到core-site.xml
<属性> <name> adl.feature.ownerandgroup.enableupn </ name> <value> true </ value> <说明> 当为true时:FileStatus / AclStatus响应中的用户和组为 根据Azure AD配置文件以用户友好名称表示。 当为false时(默认):FileStatus / AclStatus中的用户和组 响应由来自Azure AD的唯一标识符表示 配置文件(对象ID为GUID)。 为了优化性能,建议使用默认值。 </ description> </ property>
可以使用不同的ADL客户端配置访问不同的ADL帐户。这也允许使用不同的登录详细信息。
例如,配置可以具有使用公共帐户adl:// <some-public-account> .azuredatalakestore.net /的基本配置,以及使用特定私有帐户adl://myprivateaccount.azuredatalakestore的帐户特定配置。。净/
<属性> <name> fs.adl.oauth2.client.id </ name> <value> CLIENTID </ value> </ property> <属性> <name> fs.adl.oauth2.credential </ name> <value> CREDENTIAL </ value> </ property> <属性> <name> fs.adl.account.myprivateaccount.oauth2.client.id </ name> <value> CLIENTID1 </ value> </ property> <属性> <name> fs.adl.account.myprivateaccount.oauth2.credential </ name> <value> CREDENTIAL1 </ value> </ property>
的Hadoop的天青模块包括全套的单元测试。通过运行mvn test,大多数测试无需额外配置即可运行。这包括针对模拟存储的测试,该模拟存储是Azure Data Lake Storage的内存模拟。
可以针对Azure Data Lake Storage运行一系列测试。要运行这些测试,请使用上面各节中提到的Adl帐户信息和以下属性创建src / test / resources / auth-keys.xml。
<属性> <name> fs.adl.test.contract.enable </ name> <value> true </ value> </ property> <属性> <name> test.fs.adl.name </ name> <value> adl://yourcontainer.azuredatalakestore.net </ value> </ property>