Azure Data Lake 概念和定义
下面是对 Azure Data Lake 的核心概念与关键定义的系统梳理,便于入门与架构设计参考。
一、什么是数据湖
- 数据湖(Data Lake):面向大规模原始数据存储与分析的架构理念,支持结构化、半结构化、非结构化数据,强调“先存后用、Schema-on-read”(读取时应用模式),与传统数据仓库“Schema-on-write”相对。
二、Azure Data Lake 是什么
- Azure Data Lake 通常指以 Azure Data Lake Storage(ADLS)为核心的湖存储与分析生态。它与 Azure 的计算与集成服务(如 Databricks、Synapse、Data Factory 等)组合,构建数据湖/湖仓(Lakehouse)平台。
- 现网标准是 ADLS Gen2(Gen1 已退役/不再推荐)。
三、Azure Data Lake Storage Gen2(ADLS Gen2)
- 基于 Blob Storage,启用分层命名空间(Hierarchical Namespace,HNS),为对象存储提供“文件系统式”的目录/文件语义(如快速重命名、目录级 ACL)。
- 命名与层级:
- 存储账户(Storage account)
- 文件系统(File system,相当于 Blob 的容器 Container)
- 目录(Directory)
- 文件(File)
- 访问与协议:
- DFS 端点:https://.dfs.core.windows.net
- Blob 端点:https://.blob.core.windows.net
- 常见 URI/驱动:abfss://(安全的 ABFS 驱动,供 Spark/Hadoop 等使用)
- 与 Blob 的关系:ADLS Gen2 是开启 HNS 的 Blob Storage 超集;既能用 Blob API,也能用 DFS API。
四、安全与治理
- 身份与权限:
- Azure AD 统一身份
- 两层控制:Azure RBAC(账户/文件系统级)+ POSIX ACL(目录/文件级,含默认 ACL)
- 网络与加密:
- 虚拟网络集成、专用终结点(Private Endpoint)、存储防火墙
- 静态加密(SSE,平台或客户管理密钥 CMK/双重加密)、传输加密(TLS)
- 数据保护:
- 版本控制、软删除、不可变策略(WORM)、变更馈送(Change Feed)、清单(Inventory)
- 数据治理:
- Microsoft Purview(数据目录、血缘、分类与合规)
五、性能与文件布局要点
- 分区与路径设计:常按日期/区域/业务键分区(例如 dt=YYYY/MM/DD/),提升裁剪与查询性能。
- 文件大小:优选中大文件(如 128–1024 MB),避免“海量小文件”导致元数据与列式引擎低效。
- 元数据与操作:
- HNS 提供目录/文件的原子重命名与高效列目录
- 批量并发写读需控制文件数与任务并行度,避免热目录/热点前缀
- 常见格式与压缩:优先列式 Parquet(含压缩),配合分区裁剪与谓词下推。
六、冗余、成本与生命周期
- 冗余选项:LRS(单区)、ZRS(同区域多可用区)、GRS/GZRS(跨区域复制,带只读副本 RA- 前缀)。
- 存取层级:Hot/Cool/Archive;通过生命周期管理策略自动分层与过期。
- 成本构成:容量、事务(操作次数)、带宽(跨区域/互联网出口),以及上层引擎的计算费用(如 Synapse Serverless 按扫描数据量计费)。
七、数据格式与湖仓生态
- 常用开源表格式/事务层:
- Delta Lake(广泛用于 Databricks 与开源 Spark),支持 ACID、时光回溯、MERGE/UPSERT、Z-Order 等
- 其他:Apache Hudi、Apache Iceberg
- 数据文件格式:Parquet、ORC、Avro、JSON、CSV 等。生产环境优先用列式格式(Parquet/ORC)提高压缩与查询效率。
八、计算与服务集成
- Azure Databricks(Spark):读写 abfss://,配合 Delta Lake 构建湖仓。
- Azure Synapse Analytics:
- Serverless SQL 直接查询 ADLS 上的 Parquet/CSV
- Spark 池用于数据工程与机器学习
- Azure Data Factory / Synapse Pipelines:批处理与ETL/ELT编排、数据复制。
- 实时/流式:Event Hubs、IoT Hub、Stream Analytics 将数据落地至 ADLS。
- 其他:Azure Machine Learning、Power BI(可直接连 Parquet/Delta 或经语义层)。
九、典型分层与目录规范(示例)
- 区域/分层:
- 原始层 Raw(或 Bronze):落地真实源数据,尽量不变更
- 规范层 Curated(或 Silver):清洗、统一模式与质量控制
- 汇总层 Serving/Gold:面向报表/分析的聚合与宽表
- 命名与分区建议:////dt=YYYY/MM/DD/part=… 统一命名、避免空格与大小写混用。
十、数据湖、数据仓库与湖仓
- 数据湖:低成本海量存储、Schema-on-read、灵活性高。
- 数据仓库:结构化强模式、稳定高性能 SQL 分析、治理与一致性强。
- 湖仓(Lakehouse):在数据湖上引入表格式与事务层(如 Delta),兼顾湖的开放性与仓的管理性/性能。
十一、关键术语速览
- ADLS Gen2:启用分层命名空间的 Blob 存储
- HNS(Hierarchical Namespace):目录/文件语义与 ACL
- File system(= Container):存放目录与文件的顶层命名空间
- ACL(访问控制列表):目录/文件级权限;可设默认 ACL 继承
- RBAC:基于角色的访问控制(账户/文件系统级)
- abfss://:安全的 ADLS 访问协议(Spark/Hadoop)
- Parquet/Delta:列式文件格式与事务表格式
- Bronze/Silver/Gold:湖分层/分区的工程约定
十二、最佳实践简要
- 优先 ADLS Gen2 + Parquet/Delta;设计良好的分区与路径命名。
- 控制小文件,采用批量合并/优化(如 Delta OPTIMIZE)。
- 严格区分 RBAC 与 ACL 的职责范围;为目录设默认 ACL。
- 使用私有连接与客户管理密钥(如需合规);开启版本控制/软删除。
- 用 Purview 做目录与血缘;以 Data Factory/Databricks/Synapse 实现可观测的管道编排。
如需,我可以根据你的行业与数据量级,给出更具体的目录结构、分区策略、文件大小目标和服务选型建议。