Cloud Service
Azure Data Lake Storage Gen2
大規模分析に最適化したデータレイク基盤。Blob Storage に階層型名前空間を足し、本物のディレクトリと POSIX 風 ACL で分析を高速化。AWS の S3 でデータレイクを組む構成に相当。
- 1.Blob Storage に階層型名前空間を加えた分析向けデータレイクストレージ。
- 2.本物のディレクトリ操作と POSIX 風 ACL で大規模分析を効率化する。
- 3.Synapse や Databricks、Fabric から直接読み書きする分析基盤の置き場。
解決する課題
ペタバイト級の生データを一か所に集約し、複数の分析エンジンから高速かつ安全に読み書きしたい場面で使います。汎用のオブジェクトストレージはフラットな名前空間のため、ディレクトリの一覧やリネームが重く、ファイル単位の細かなアクセス制御も難しくなりがちです。Azure Data Lake Storage Gen2(以下 ADLS Gen2)は Blob Storage を土台に分析向けの機能を加え、これらを解消します。
- 生データから加工済みデータまでを単一のストレージに集約し、分析パイプラインの置き場にする
- 本物のディレクトリを持つため、フォルダ単位の一覧・リネーム・削除が単一操作で速い
- POSIX 風 ACL でディレクトリ/ファイル単位の細かいアクセス制御ができる
- Synapse、Databricks、HDInsight、Microsoft Fabric など主要な分析エンジンから直接読み書きできる
主要概念と用語
- 階層型名前空間(HNS / Hierarchical Namespace): ストレージアカウントで有効化する機能。ファイルとディレクトリを本物の階層構造として扱えるようにする。ADLS Gen2 の核心
- ファイルシステム(コンテナ): ADLS Gen2 のデータを入れる最上位の入れ物。Blob Storage のコンテナと同じものを分析文脈でこう呼ぶ
- ディレクトリ: HNS により実体を持つフォルダ。一覧やリネームがメタデータ操作として完結する
- POSIX 風 ACL: 所有者・グループ・その他のパーミッションに加え、ユーザーやグループ単位のアクセス制御リストを付与する仕組み。RBAC と組み合わせて使う
- DFS エンドポイント: 階層対応の API を提供するエンドポイント。
account.dfs.core.windows.netの形式で、従来の Blob エンドポイントと併存する - マルチプロトコルアクセス: 同じデータを Blob API と Data Lake API の双方から扱える性質。既存の Blob 向けツールやライフサイクル機能をそのまま活かせる
- ABFS ドライバー: Hadoop / Spark から ADLS Gen2 へアクセスするためのドライバー。
abfss://スキームでパスを指定する
仕様・制限・クォータ
- 階層型名前空間はストレージアカウント作成時に有効化するのが基本。後からの有効化や移行には手順と注意が伴い、有効化後にフラット名前空間へ戻すことはできない
- 容量・耐久性・冗長性オプション(LRS / ZRS / GRS / GZRS など)は基盤の Blob Storage に準じる
- アクセスは DFS エンドポイント(階層対応)と Blob エンドポイントの両方から可能。利用する API やツールによって使い分ける
- ACL はディレクトリとファイルに付与でき、親から子へ引き継ぐ既定 ACL も設定できる。1 つの項目に設定できる ACL エントリ数には上限がある
- HNS 有効時は SFTP や NFS 3.0 によるアクセスも構成可能(別途有効化が必要)
内部の仕組み
ADLS Gen2 は独立した製品ではなく、Blob Storage に階層型名前空間を重ねた構成です。HNS を有効にすると、data/2026/sales.parquet のようなパスは「区切り文字を含む単なるキー」ではなく、ディレクトリとファイルからなる実体のある木構造として管理されます。
この違いが分析ワークロードで効きます。フラット名前空間では「あるフォルダ配下のリネーム」はキーを 1 つずつ書き換える操作の集まりになりますが、HNS ではディレクトリのメタデータ更新だけで完結するため、巨大なフォルダのリネームや削除が単一のアトミックな操作になります。分析ジョブが中間結果を一時ディレクトリに書き、最後に本番ディレクトリへ差し替える、といったパターンが安全かつ高速になります。
アクセス制御は RBAC と POSIX 風 ACL の二層で評価されます。まずストレージアカウントやコンテナに対する RBAC ロールが確認され、続いて対象のディレクトリ/ファイルの ACL が評価されます。RBAC は粗い粒度で広く、ACL はパス単位で細かく、という役割分担です。
階層型名前空間は有効化した後にフラット名前空間へ戻すことができません。HNS の有無は性能特性・ACL の可否・一部機能の対応に影響するため、データレイク用途なら作成時に有効化し、汎用のオブジェクト保管中心なら通常の Blob Storage を選ぶ、という判断を最初に行います。
設計パターン / ベストプラクティス
- メダリオン構成: 生データ(ブロンズ)→ クレンジング済み(シルバー)→ 集計・分析用(ゴールド)をディレクトリ階層で分け、加工段階ごとにアクセス権を分離する
- パーティション設計:
year/month/dayなどの階層でディレクトリを切り、分析エンジンが不要なパスを読み飛ばせる(プルーニング)ようにする - 列指向フォーマット: Parquet や Delta / Iceberg などの形式で保存し、スキャン量と保存コストを抑える。小さなファイルの乱立は避け、適度なサイズに集約する
- アクセス制御の設計: 個々のユーザーではなく Entra ID のセキュリティグループに ACL を付与し、メンバー変更で運用する。新規ファイルに権限を伝播させたい階層には既定 ACLを設定する
- ネットワーク分離: 分析クラスターとストレージをプライベートエンドポイントで接続し、パブリック経路を遮断する
運用・監視
- Azure Monitor の Metrics で容量・トランザクション・レイテンシ・可用性を監視する
- 診断設定で読み取り/書き込み/削除のリソースログを Log Analytics などへ送り、誰がどのパスへアクセスしたかを監査する
- ライフサイクル管理ポリシーで、一定期間アクセスのないデータを Hot から Cool・Cold・Archive へ自動的に移行・削除し、保存コストを抑える
- AzCopy で大量データの移行・同期を高速に行う。オンプレや他クラウドからの初期ロードに使う
- 「403 / AuthorizationFailure」は RBAC ロール・ACL のいずれかが不足しているケースが多い。ADLS Gen2 では RBAC と ACL の二層を両方確認する
アクセス拒否が出たら、まずコンテナ/アカウントの RBAC ロール割り当てを確認し、次に対象パスの ACL を確認します。二層のどちらが原因かを切り分けると解決が速くなります。広い権限は RBAC、パス単位の細かい権限は ACL、という役割分担を意識します。
コスト
課金は基盤の Blob Storage と同じく、「保存量」「トランザクション数」「取り出し」「データ転送」に対して発生します。HNS 有効時はディレクトリ操作などでメタデータ寄りの操作が増える点に留意し、アクセス頻度に応じてアクセス層を使い分けます。具体的な単価や階層の最小保持期間は変動するため、最新の公式情報で確認してください。
| コスト要素 | 主な発生源 | 抑え方 |
|---|---|---|
| 保存量 | 保管しているデータ容量 | ライフサイクルで低頻度層へ自動移行 |
| トランザクション | 読み書きやディレクトリ操作の回数 | 小ファイルを集約しアクセス回数を削減 |
| 取り出し | 低頻度・アーカイブ層からの読み出し | アクセス頻度に合った層を選ぶ |
| データ転送 | リージョン外への下り転送 | 分析基盤を同一リージョンに配置 |
セキュリティ
- アクセス制御は Entra ID + RBAC を基本に、パス単位の細かい制御を POSIX 風 ACL で補う二層構成にする
- アプリやサービスからはマネージド IDで接続し、アカウントキーの直書きを避ける。一時的な委譲には有効期限の短いユーザー委任 SASを使う
- 保存時暗号化は既定で常時有効(Microsoft マネージドキー)。要件に応じて **Key Vault のカスタマーマネージドキー(CMK)**を使う。転送時は TLS を強制する
- プライベートエンドポイントでストレージをプライベート IP 化し、パブリックインターネットからの到達を遮断する
アカウントキーを分析ジョブやノートブックに直書きするのは NG です。鍵が漏れるとアカウント全体を掌握されます。接続はマネージド ID、権限はセキュリティグループへの RBAC と ACL で設計し、ストレージはプライベートエンドポイントの内側に置きます。
関連サービス・比較
データレイク用途では、通常の Azure Blob Storage と比較してどちらを選ぶかが最初の判断になります。HNS の有無が両者を分ける最大の違いです。
| 観点 | ADLS Gen2 | Blob Storage(HNS 無効) |
|---|---|---|
| 名前空間 | 階層型(本物のディレクトリ) | フラット(区切り文字で擬似的に表現) |
| 主な用途 | 大規模分析・データレイク | 汎用オブジェクト保管・配信 |
| ディレクトリ操作 | リネーム・削除が単一操作で速い | キー単位の操作で重くなりやすい |
| アクセス制御 | RBAC に加え POSIX 風 ACL | 主に RBAC と SAS |
| 分析エンジン連携 | ABFS で Spark などから直接 | 可能だが分析最適化は限定的 |
| AWS の相当構成 | S3 でデータレイクを組む構成 | S3 の標準オブジェクト利用 |
ハンズオン / CLI例
# リソースグループを作成
az group create --name demo-rg --location japaneast
# 階層型名前空間を有効化したストレージアカウントを作成(ADLS Gen2)
az storage account create \
--name mydatalake2026 \
--resource-group demo-rg \
--location japaneast \
--sku Standard_GRS \
--kind StorageV2 \
--hierarchical-namespace true \
--min-tls-version TLS1_2 \
--allow-blob-public-access false
# ファイルシステム(コンテナ)を作成(Entra ID 認証を使用)
az storage fs create \
--name analytics \
--account-name mydatalake2026 \
--auth-mode login
# ディレクトリを作成
az storage fs directory create \
--name raw/2026 \
--file-system analytics \
--account-name mydatalake2026 \
--auth-mode login
# 階層型名前空間が有効か確認
az storage account show \
--name mydatalake2026 \
--resource-group demo-rg \
--query "isHnsEnabled" -o tsv
Azure Service
Azure Data Lake Storage Gen2を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ストレージ
比較で見る軸
クラウド: Azure / カテゴリ: ストレージ / 難易度: intermediate
導入後に効く点
本物のディレクトリ操作と POSIX 風 ACL で大規模分析を効率化する。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Azure
- カテゴリ
- ストレージ
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- cost / performance / security
判断チェックリスト
- 自社の用途が「ストレージ / cost」に近いか確認する。
- 強みである「Blob Storage に階層型名前空間を加えた分析向けデータレイクストレージ。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。