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