Azure Data Lake Storage Gen2 是基于 Azure Blob 存储构建的专用于大数据分析的云存储服务。 Data Lake Storage Gen2 结合了 Azure Blob 存储和 Azure Data Lake Storage Gen1 的功能。 生成的服务提供 Azure Data Lake Storage Gen1 中的功能,包括:文件系统语义、目录级和文件级安全性以及适应性。 以及 Azure Blob 存储中的低成本分层存储、高可用性和灾难恢复功能。
警告
无论是否使用 HDInsight 群集,都按分钟按比例计费。 使用完群集后,请务必将其删除。 了解如何 删除 HDInsight 群集。
Data Lake Storage Gen2 可用性
Data Lake Storage Gen2 作为几乎所有 Azure HDInsight 群集类型的存储选项提供,作为默认存储帐户和附加存储帐户。 但是,HBase 只能有一个具有 Data Lake Storage Gen2 的帐户。
注释
选择 Data Lake Storage Gen2 作为 主存储类型后,不能选择 Data Lake Storage Gen1 作为附加存储。
使用 Data Lake Storage Gen2 创建 HDInsight 群集
使用以下链接获取有关如何创建可访问 Data Lake Storage Gen2 的 HDInsight 群集的详细说明。
- 使用门户
- 使用 Azure CLI
- 目前不支持使用 Azure Data Lake Storage Gen2 创建 HDInsight 群集。
HDInsight 中 Data Lake Storage Gen2 的访问控制
Data Lake Storage Gen2 支持哪些类型的权限?
Data Lake Storage Gen2 使用访问控制模型,该模型支持 Azure 基于角色的访问控制(Azure RBAC)和类似于 POSIX 的访问控制列表(ACL)。 Data Lake Storage Gen1 仅支持访问控制列表,用于控制对数据的访问。
Azure RBAC 使用角色分配来有效地将一组权限应用于 Azure 资源的用户、组和服务主体。 通常,这些 Azure 资源受限于顶级资源(例如 Azure Blob 存储帐户)。 对于 Azure Blob 存储以及 Data Lake Storage Gen2,此机制已扩展到文件系统资源。
有关使用 Azure RBAC 的文件权限的详细信息,请参阅 Azure 基于角色的访问控制(Azure RBAC)。
有关使用 ACL 的文件权限的详细信息,请参阅 文件和目录上的访问控制列表。
如何控制对 Data Lake Storage Gen2 中数据的访问?
HDInsight 群集访问 Data Lake Storage Gen2 中的文件的能力通过托管标识进行控制。 托管标识是在 Microsoft Entra 中注册的标识,其凭据由 Azure 管理。 使用托管标识,无需在 Microsoft Entra ID 中注册服务主体。 或者维护证书等凭据。
Azure 服务有两种类型的托管标识:系统分配标识和用户分配标识。 HDInsight 使用用户分配的托管标识访问 Data Lake Storage Gen2。 A user-assigned managed identity
创建为独立的 Azure 资源。 通过创建过程,Azure 会在正在使用的订阅信任的 Microsoft Entra 租户中创建标识。 创建标识后,可将标识分配给一个或多个 Azure 服务实例。
用户分配标识的生命周期独立于分配给该标识的 Azure 服务实例的生命周期进行管理。 有关托管标识的详细信息,请参阅 什么是 Azure 资源的托管标识?。
如何设置 Microsoft Entra 用户的权限,以使用 Hive 或其他服务查询 Data Lake Storage Gen2 中的数据?
若要为用户设置查询数据的权限,请使用 Microsoft Entra 安全组作为 ACL 中分配的主体。 不要直接向单个用户或服务主体分配文件访问权限。 使用 Microsoft Entra 安全组来控制权限流,可以添加或删除用户或服务主体,而无需将 ACL 重新应用到整个目录结构。 只需在相应的Microsoft Entra 安全组中添加或删除用户。 ACL 不会继承,因此重新应用 ACL 需要更新每个文件和子目录中的 ACL。
从群集访问文件
可通过多种方式从 HDInsight 群集访问 Data Lake Storage Gen2 中的文件。
使用完全限定的名称。 使用此方法,可以提供要访问的文件的完整路径。
abfs://<containername>@<accountname>.dfs.core.chinacloudapi.cn/<file.path>/
使用缩短的路径格式。 使用此方法,请将群集根目录的路径替换为:
abfs:///<file.path>/
使用相对路径。 使用此方法,只能提供要访问的文件的相对路径。
/<file.path>/
数据访问示例
示例基于与群集头节点的 ssh 连接 。 这些示例使用所有三个 URI 方案。 替换 CONTAINERNAME
并 STORAGEACCOUNT
替换为相关值
几个 hdfs 命令
在本地存储上创建文件。
touch testFile.txt
在群集存储上创建目录。
hdfs dfs -mkdir abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.chinacloudapi.cn/sampledata1/ hdfs dfs -mkdir abfs:///sampledata2/ hdfs dfs -mkdir /sampledata3/
将数据从本地存储复制到群集存储。
hdfs dfs -copyFromLocal testFile.txt abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.chinacloudapi.cn/sampledata1/ hdfs dfs -copyFromLocal testFile.txt abfs:///sampledata2/ hdfs dfs -copyFromLocal testFile.txt /sampledata3/
列出群集存储上的目录内容。
hdfs dfs -ls abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.chinacloudapi.cn/sampledata1/ hdfs dfs -ls abfs:///sampledata2/ hdfs dfs -ls /sampledata3/
创建 Hive 表
为了说明目的,将显示三个文件位置。 对于实际执行,请仅使用其中 LOCATION
一个条目。
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.chinacloudapi.cn/example/data/';
LOCATION 'abfs:///example/data/';
LOCATION '/example/data/';