Azure Data Lake Storage #
什么是 Data Lake Storage? #
Azure Data Lake Storage 是基于 Azure Blob 存储构建的企业级大数据分析解决方案。
text
┌─────────────────────────────────────────────────────────────┐
│ Data Lake Storage 概览 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 特点 │
│ ├── 海量存储:PB 级数据 │
│ ├── 层级结构:类似文件系统 │
│ ├── 高性能:优化分析工作负载 │
│ ├── 安全:细粒度访问控制 │
│ └── 兼容 Hadoop:HDFS 兼容 │
│ │
│ 与 Blob 存储对比 │
│ ├── 层级命名空间 │
│ ├── 更好的性能 │
│ ├── 原子目录操作 │
│ └── POSIX 权限 │
│ │
│ 适用场景 │
│ ├── 大数据分析 │
│ ├── 数据湖 │
│ ├── 机器学习 │
│ └── 实时分析 │
│ │
└─────────────────────────────────────────────────────────────┘
启用层级命名空间 #
创建 Data Lake Storage 账户 #
bash
# 创建启用层级命名空间的存储账户
az storage account create \
--name mydatalakeaccount \
--resource-group myResourceGroup \
--location eastus \
--sku Standard_LRS \
--kind StorageV2 \
--hierarchical-namespace true
# 查看配置
az storage account show \
--name mydatalakeaccount \
--query isHnsEnabled
文件系统操作 #
创建文件系统 #
bash
# 创建文件系统(容器)
az storage fs create \
--name myfilesystem \
--account-name mydatalakeaccount
# 列出文件系统
az storage fs list \
--account-name mydatalakeaccount \
--output table
目录和文件操作 #
bash
# 创建目录
az storage fs directory create \
--account-name mydatalakeaccount \
--file-system myfilesystem \
--path raw/logs/
# 上传文件
az storage fs file upload \
--account-name mydatalakeaccount \
--file-system myfilesystem \
--path raw/data.csv \
--source ./data.csv
# 列出目录内容
az storage fs file list \
--account-name mydatalakeaccount \
--file-system myfilesystem \
--path raw/
# 下载文件
az storage fs file download \
--account-name mydatalakeaccount \
--file-system myfilesystem \
--path raw/data.csv \
--destination ./downloaded.csv
访问控制 #
ACL 权限 #
text
┌─────────────────────────────────────────────────────────────┐
│ ACL 权限 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 权限类型 │
│ ├── Read (R): 读取内容 │
│ ├── Write (W): 写入内容 │
│ ├── Execute (X): 遍历目录 │
│ └── 格式: rwx, r-x, --x 等 │
│ │
│ ACL 类型 │
│ ├── 访问 ACL: 文件/目录权限 │
│ └── 默认 ACL: 新项目的默认权限 │
│ │
│ 权限继承 │
│ ├── 子目录继承父目录 ACL │
│ └── 默认 ACL 用于继承 │
│ │
└─────────────────────────────────────────────────────────────┘
设置 ACL #
bash
# 设置目录 ACL
az storage fs access set \
--account-name mydatalakeaccount \
--file-system myfilesystem \
--path raw/ \
--acl "user::rwx,group::r-x,other::---"
# 设置默认 ACL
az storage fs access set \
--account-name mydatalakeaccount \
--file-system myfilesystem \
--path raw/ \
--default-acl "user::rwx,group::r-x,other::---"
# 查看 ACL
az storage fs access show \
--account-name mydatalakeaccount \
--file-system myfilesystem \
--path raw/
大数据集成 #
与分析服务集成 #
text
┌─────────────────────────────────────────────────────────────┐
│ 分析服务集成 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Azure Synapse Analytics │
│ ├── 数据仓库 │
│ ├── Spark 池 │
│ └── 数据管道 │
│ │
│ Azure Databricks │
│ ├── Spark 分析 │
│ ├── 机器学习 │
│ └── 流处理 │
│ │
│ Azure HDInsight │
│ ├── Hadoop │
│ ├── Spark │
│ └── Hive │
│ │
│ Azure Data Factory │
│ ├── 数据移动 │
│ ├── 数据转换 │
│ └── 编排 │
│ │
└─────────────────────────────────────────────────────────────┘
使用 Azure Synapse #
sql
-- 创建外部数据源
CREATE EXTERNAL DATA SOURCE myDataLake
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://myfilesystem@mydatalakeaccount.dfs.core.windows.net'
);
-- 创建外部表
CREATE EXTERNAL TABLE dbo.Logs (
LogDate DATE,
Message NVARCHAR(4000),
Level NVARCHAR(50)
)
WITH (
LOCATION = '/raw/logs/',
DATA_SOURCE = myDataLake,
FILE_FORMAT = myFileFormat
);
-- 查询数据
SELECT * FROM dbo.Logs WHERE Level = 'ERROR';
最佳实践 #
数据组织 #
text
┌─────────────────────────────────────────────────────────────┐
│ 数据组织建议 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 目录结构示例: │
│ │
│ /raw/ 原始数据 │
│ ├── /logs/ 日志数据 │
│ ├── /events/ 事件数据 │
│ └── /transactions/ 交易数据 │
│ │
│ /processed/ 处理后数据 │
│ ├── /cleaned/ 清洗后数据 │
│ └── /aggregated/ 聚合数据 │
│ │
│ /curated/ 精选数据 │
│ └── /reports/ 报表数据 │
│ │
│ /archive/ 归档数据 │
│ │
└─────────────────────────────────────────────────────────────┘
性能优化 #
text
┌─────────────────────────────────────────────────────────────┐
│ 性能优化建议 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 使用合适的文件格式 │
│ ├── Parquet: 列式存储,分析优化 │
│ └── Delta Lake: ACID 事务 │
│ │
│ 2. 分区数据 │
│ └── 按日期/区域等分区 │
│ │
│ 3. 文件大小优化 │
│ └── 使用 256MB-1GB 文件 │
│ │
│ 4. 使用缓存 │
│ └── 启用分析缓存 │
│ │
└─────────────────────────────────────────────────────────────┘
下一步 #
现在你已经了解了 Data Lake Storage,接下来学习 数据库服务 掌握 Azure 数据库解决方案!
最后更新:2026-03-29