OneLake는 Fabric의 오픈 레이크 스토리지 계층으로, Azure Storage와 호환되는 접근 권한을 갖추고 있습니다. Fabric 데이터를 ADLS Gen2/DFS 액세스의 경우 onelake.dfs.fabric.microsoft.com을 통해, Blob API 액세스의 경우 onelake.blob.fabric.microsoft.com을 통해 노출합니다. 이 문서에서는 Azure Machine Learning이 AML 데이터 저장소, 일괄 처리 엔드포인트의 입력 및 출력, 그리고 노트북 또는 스크립트에서의 직접 abfss:// 액세스를 통해 이러한 인터페이스를 사용하는 방법을 설명합니다.
Azure Machine Learning OneLake와 세 가지 기본 통합 지점을 제공합니다.
-
데이터 저장소 - Fabric Lakehouse
Files위치를 Azure Machine Learning 데이터 저장소로 등록하고 작업 및 데이터 자산에서 참조합니다. Azure Machine Learning Fabric Lakehouse 테이블에 대한 직접 링크를 지원하지만 해당 패턴에는 ADLS Gen2에 대한 복사본이 포함되며 이 문서에서는 다루지 않습니다. - 배치 엔드포인트 - OneLake에 저장된 입력 및 출력을 사용하여 배치 배포를 호출합니다(현재는 등록된 데이터 저장소 또는 바로 가기 기반 Blob/ADLS 데이터 저장소를 통해 지원).
- OneLake APIs / 직접 ABFSS 액세스 - Azure Machine Learning 런타임 환경에서 실행되는 노트북 및 스크립트에서 OneLake의 데이터를 직접 읽고 쓸 수 있습니다.
| Azure Machine Learning 통합 지점 | OneLake 표면 | Azure Machine Learning 화면 | 데이터가 ADLS Gen2에 복사되어 있나요? | Azure Machine Learning 사용할 기본 URI |
|---|---|---|---|---|
| OneLake 데이터 저장소 | 레이크 하우스 /Files 섹션. |
CLI/SDK(YAML) | No | azureml://datastores/<name>/paths/<path> |
| OneLake Lakehouse 테이블(UI 연결) | 레이크 하우스 /Tables 섹션. |
Azure Machine Learning 스튜디오(UI) | 예 - Fabric 파이프라인을 통해 ADLS Gen2에 복사한 다음 등록됨 | azureml://datastores/<adls_ds>/paths/<path> |
| 일괄 처리 엔드포인트 입력/출력 | Lakehouse /Files (ADLS 바로 가기를 통해). |
CLI / SDK / REST | 선택 사항 |
azureml://datastores/<name>/paths/<path> 또는 abfss://... |
| OneLake API / ABFSS 직접 연결 |
/Files 및 /Tables |
Azure Machine Learning 컴퓨팅에서의 노트북/스크립트 | No | abfss://<workspace>@onelake.dfs.fabric.microsoft.com/<lakehouse>.Lakehouse/Files/... |
메모
azureml://는 스토리지 프로토콜이 아닌 Azure Machine Learning 특정 URI 체계입니다. Azure Machine Learning 컨트롤 플레인 및 데이터 런타임은 명명된 데이터 저장소에 등록된 연결 메타데이터 및 자격 증명을 사용하여 기본 스토리지 위치(Blob, ADLS Gen2, OneLake 등)를 확인하는 데 사용합니다.
Azure Machine Learning 데이터 저장소로서의 OneLake
데이터 저장소는 외부 스토리지 위치(OneLake, Azure Blob, ADLS Gen2, Azure Files)에 대한 Azure Machine Learning 작업 영역 범위 추상화입니다. 데이터 자체를 프로비전하거나 복사하지 않고 기존 스토리지 리소스, 엔드포인트, 컨테이너/파일 시스템/항목, 자격 증명 또는 ID 구성에 대한 연결 메타데이터를 저장합니다. Azure Machine Learning 내의 다양한 환경은 안정적인 URI(azureml://datastores/<name>/paths/<path>)를 사용하여 데이터 저장소를 참조할 수 있습니다.
메모
Azure Machine Learning 스튜디오 현재 OneLake를 UI의 데이터 저장소 형식으로 나열하지 않지만 CLI 및 SDK는 YAML 정의를 통해 OneLake 데이터 저장소 만들기 및 관리를 지원합니다.
Microsoft Fabric에 필요한 연결 메타데이터
Fabric의 레이크하우스 항목 속성 페이지에서 다음을 캡처하세요:
-
엔드포인트 - OneLake의 경우 사용하려는 프로토콜을 사용
onelake.dfs.fabric.microsoft.com하거나onelake.blob.fabric.microsoft.com사용합니다. - 워크스페이스 GUID
- 항목 GUID (레이크하우스 GUID)
Azure Machine Learning 데이터 저장소 만들기
onelake-datastore.yml:
$schema: https://azuremlschemas.azureedge.net/latest/oneLakeDatastore.schema.json
name: <name_of_datastore>
type: onelake
description: Datastore pointing to a Microsoft Fabric lakehouse.
onelake_workspace_name: <workspace_guid>
endpoint: onelake.dfs.fabric.microsoft.com
artifact:
type: lakehouse
name: <item_guid>/Files # Include /Files in the name to point at the lakehouse Files layer; omit it to point at the root of the item.
Azure CLI 사용하여 대상 Azure Machine Learning 작업 영역에 데이터 저장소를 만듭니다.
<name_of_AML_workspace> 및 <name_of_datastore> 자리 표시자를 적절한 값으로 바꾸세요.
az ml datastore create --file ./onelake-datastore.yml \
--resource-group rg-amlonelake \
--workspace-name <name_of_AML_workspace>
Azure Machine Learning 작업에서 데이터 저장소 사용
Azure Machine Learning 데이터 저장소가 등록되면 다양한 환경을 통해 해당 azureml:// URI를 사용할 수 있습니다. 이 샘플에서는 Azure Machine Learning 작업에서 OneLake 데이터 저장소를 참조하는 방법을 보여 줍니다. 다음 URI는 데이터 자산 정의에서 작업Input/Output으로 유효하며, 현재 OneLake를 입력 또는 출력에 대한 데이터 저장소 형식으로 지원하지 않는 일괄 처리 엔드포인트를 제외한 모든 Azure Machine Learning 데이터 저장소 경로를 수락합니다.
다음 작업 샘플은 동일한 OneLake 데이터 저장소 내의 한 위치에서 다른 위치로 파일을 복사합니다. 지원되는 다양한 스토리지 대상(Blob, ADLS Gen2, OneLake)을 동일한 작업에서 입력 및 출력으로 사용할 수 있습니다.
type: command
command: cp ${{inputs.input_data}} ${{outputs.output_data}}
compute: azureml:<replace_with_aml_compute_target>
environment: azureml://registries/azureml/environments/sklearn-1.1/versions/4
inputs:
input_data:
mode: ro_mount
path: azureml://datastores/<name_of_datastore>/paths/<folder-path>/<file-name> # Do not include /Files in the <file-name> portion of the path. Reason being that the datastore is already pointed at the /Files layer of the lakehouse via the artifact name in the datastore definition.
type: uri_file
outputs:
output_data:
mode: rw_mount
path: azureml://datastores/<name_of_datastore>/paths/<folder-path>/<file-name> # Do not include /Files in the <file-name> portion of the path. Reason being that the datastore is already pointed at the /Files layer of the lakehouse via the artifact name in the datastore definition.
type: uri_file
# optional: if you want to create a data asset from the output,
# then uncomment `name` (`name` can be set without setting `version`, and in this way, we will set `version` automatically for you)
# name: <name_of_data_asset> # use `name` and `version` to create a data asset from the output
# version: <version_of_data_asset>
OneLake 데이터 저장소를 직접 참조할 수 있는 Azure Machine Learning 환경
| # | Azure Machine Learning 화면/인터페이스 | Direction | OneLake 주소 지정 | Source |
|---|---|---|---|---|
| 1 |
Azure Machine Learning 작업 - Input / Output (CLI v2, SDK v2 command, pipeline, sweep) |
R / W | azureml://datastores/<onelake_ds>/paths/... |
작업에서 데이터 접근하기 |
| 2 | OneLake 데이터 저장소 경로에 등록된 데이터 자산(uri_file, uri_folder) |
R (자산은 읽기 전용으로 참조됩니다) |
azureml://datastores/<onelake_ds>/paths/... 버전 관리가 적용된 |
데이터 자산 만들기 |
| 3 | Azure Machine Learning 컴퓨팅의 노트북/스크립트에서 azureml-fsspec를 통한 Azure Machine Learning 데이터 런타임 |
R / W |
azureml://datastores/<onelake_ds>/paths/...
fsspec.open(...) 또는 AzureMachineLearningFileSystem에서 열림 |
대화형 개발 중 OneLake에서 데이터에 액세스 |
일괄 처리 엔드포인트가 있는 OneLake
Azure Machine Learning을 사용하면 기계 학습 모델 및 파이프라인을 사용한 장기 실행되는 비동기 추론을 위해 Fabric을 사용하여 모델 배포 배치 엔드포인트에 액세스할 수 있습니다.
이 패턴에서 아키텍처 목표는 입력 기능 데이터와 Fabric 및 Azure Machine Learning 두 플랫폼에서 액세스할 수 있는 출력 예측의 단일 물리적 복사본을 유지하는 것입니다. ADLS의 파일은 두 개의 유효한 주소를 가지고 있습니다 - azureml://datastores/... Azure Machine Learning 배치 엔드포인트가 입출력으로 받아들이는 URI와 Fabric 노트북, 파이프라인, SQL 분석 엔드포인트가 쿼리할 수 있는 레이크하우스 경로(ADLS 단축어를 통해 활성화됨)입니다. 이 패턴에는 복제도 없고, 예약 동기화도 없으며, 또 다른 단일 진실 공급원도 없습니다. 레이크하우스 뷰와 Azure Machine Learning 보기는 동일한 스토리지 계정의 프로젝션입니다.
일괄 처리 엔드포인트는 두 개의 OneLake 표시 폴더 사이에 있습니다.
-
입력 - Fabric 데이터 엔지니어링에서 준비한 선별된
/Files위치(원시 랜딩, 점수화된 요청, 일일 파티션) Azure Machine Learning은 바로 가기가 가리키는 것과 동일한 스토리지를 가리키는 ADLS Gen2 데이터 저장소를 통해 이를 읽습니다. -
출력 - 배치 작업이 동일한 ADLS Gen2 계정에 기록한 예측
/Files위치로, 바로 가기를 통해 레이크하우스에 표시되며 Fabric notebook, 데이터 흐름 또는 Delta 테이블 로드 단계에서 즉시 사용할 수 있습니다.
이 패턴은 ADLS Gen2에 이미 데이터가 있는 시나리오에 적합합니다. 예를 들어, 분석 또는 ML 워크로드에 데이터를 공급하는 기존 데이터 레이크. OneLake 바로 가기는 해당 데이터를 OneLake로 마이그레이션하거나 복제하는 대신 Fabric 레이크하우스 내의 기존 ADLS 위치를 표시하지만 동일한 계정은 데이터 저장소로 등록된 상태로 유지됩니다.
Azure Machine Learning 노트북 및 스크립트에서 OneLake SDK 또는 API에 액세스
코드가 Azure Machine Learning 컴퓨팅 리소스(컴퓨팅 인스턴스, 컴퓨팅 클러스터 또는 서버리스 컴퓨팅)에서 실행되면 abfss:// 경로나 OneLake 데이터 저장소 경로를 통해 OneLake에서 직접 읽고 쓸 수 있습니다. OneLake SDK 및 API는 유연한 통합 지점 역할을 하며, 노트북 기반 탐색, 사용자 지정 학습 스크립트, 그리고 Azure Machine Learning 컴퓨팅을 통해 /Files 및 /Tables 모두에 대한 액세스가 필요한 구성 요소에 사용할 수 있습니다.
OneLake는 abfss:// OneLake의 파일에 URI를 사용하며 ID 또는 서비스 주체 기반 인증에 유효한 작업 입력 경로로 사용할 수 있습니다.
abfss://<workspace_guid>@<endpoint>/<item_guid>/Files/<path>
성능 및 확장성 - Azure Machine Learning 적합한 판독기 선택
fsspec(그리고 이것이 감싸는 OneLake adlfs 백엔드)는 Python 수준의 파일 시스템 추상화 계층입니다. Notebook에는 편리하지만 자체적으로 병렬 데이터 엔진이 아닙니다. 동시성은 단일 Python 프로세스로 제한됩니다. 따라서 성능은 그 위에서 동작하는 리더와 엔진에 따라 달라집니다. Azure Machine Learning 데이터 런타임 문서에서는 학습 데이터의 경우 클라이언트 측에서 Python으로 데이터를 다운로드하는 방식보다 Azure Machine Learning 데이터 런타임을 사용하는 것을 명시적으로 권장하며, 그 이유로 "클라이언트 코드가 Python을 사용해 스토리지에서 데이터를 다운로드할 때 GIL(Global Interpreter Lock) 문제로 인해 스토리지 처리량 제약이 관찰된다"라고 설명합니다.
OneLake에서 대규모 데이터 처리를 위해 Azure Machine Learning Spark 사용
OneLake는 분석 레이크로 설계되었으며 abfss:// , 엔드포인트는 Spark에서 사용하는 병렬 분할 읽기 패턴을 위해 빌드됩니다. TB 규모의 ETL, 피처 엔지니어링 또는 분산 학습 데이터 준비에는 fsspec보다 Azure Machine Learning Spark를 사용하는 것이 좋으며, 이상적으로는 다중 노드 클러스터에서 사용하는 것이 좋습니다:
Azure Machine Learning의 서버리스 Spark 또는 연결된 Synapse Spark 풀 - Azure Machine Learning 내에서 Spark 작업/노트북을 실행하고
abfss://를 통해 OneLake를 직접 읽습니다. Azure Machine Learning Apache Spark를 참조하세요.Fabric Spark - Fabric 내에서 실행되는 Spark 노트북/작업은 동일한 레이크하우스에 기본적으로 직접 액세스할 수 있으며, OneLake 데이터 저장소를 통해 정제된 출력을 Azure Machine Learning으로 전달할 수 있습니다.
다음 예제에서는 Azure Machine Learning 컴퓨팅의 Spark 세션에서 lakehouse Delta 테이블을 읽는 방법을 보여 줍니다.
df = (
spark.read.format("delta")
.load(
"abfss://<workspace_guid>@onelake.dfs.fabric.microsoft.com/"
"<item_guid>/Tables/<table-name>"
)
)
OneLake 및 Azure Machine Learning mltable
현재 mltable를 통해 OneLake 기반 데이터를 읽을 때 파일을 스트리밍하면 실패합니다. 관찰된 오류로는 ScriptExecution.StreamAccess.NotFound 및 Invalid argument (os error 22)이 포함됩니다. Azure Machine Learning 컴퓨팅은 동일한 데이터 저장소 및 ID에 대한 Azure Storage 데이터 레이크 SDK를 통해 azureml-fsspecpyarrowOneLake를 확인하고 읽을 수 있습니다.
ML 테이블 대신 다음 대안 중 하나를 고려합니다.
- OneLake 읽기의 경우
uri_file/uri_folder데이터 자산을 우선 사용하고,azureml-fsspec+ pyarrow / pandas / polars / DuckDB(단일 노드) 또는abfss://의 Spark(분산)로 로드하는 것이 좋습니다. Microsoft Learnmltable문서 자체에서도 간단한 Parquet 폴더 또는 CSV 파일의 경우uri_file/uri_folder가 권장되는 선택이라고 명시하고 있습니다. -
mltable시맨틱이 실제로 필요한 경우(가장 일반적으로 를 요구하는type: mltable으로 사용되는 경우) 먼저 데이터를 ADLS Gen2 계정에 스테이징한 다음, 해당 위치를 기준으로mltable를 빌드합니다.mltable는 현재 ADLS Gen2에서 신뢰할 수 있습니다. - OneLake 바로 가기 패턴(배치 엔드포인트의 일부로 설명한)은 ML Table에 자연스럽게 잘 맞습니다. 동일한 물리적 파일이 ADLS Gen2(
mltable가 작동하는 위치)에 존재하면서, 복사 없이 바로 가기를 통해 Fabric 레이크하우스에도 표시되므로 Fabric 도구에서 이를 볼 수 있습니다.
mltable는 uri_file / uri_folder에서 기본적으로 제공하지 않는 여러 기능을 함께 제공합니다. 다음 표에는 OneLake를 직접 읽는 경우 가장 가까운 대응 항목이 나와 있습니다.
mltable 기능 |
대안 |
|---|---|
데이터와 함께 파일로 유지되는 MLTable(구분 기호, 인코딩, 헤더, 파티션 크기, 열 형식) |
Python(pyarrow.parquet.ParquetDataset, pandas.read_csv(...), polars.scan_parquet(...), duckdb.read_parquet(...))에서 읽기 설정을 고정해 두고 해당 로더 모듈을 소스 제어하에 유지합니다. |
기본 제공 변환 읽기 시(filter, drop_columns, convert_column_types, take_random_sample) |
선택한 엔진 polars / duckdb에서 상응하는 기능을 적용하세요 - lazy frame은 비슷한 방식으로 필터와 프로젝션을 푸시다운하며, abfss://의 Spark도 대규모 환경에서 동일하게 작동합니다 |
| 다중 원본 경로 컴퍼지션 - 여러 파일, 폴더, glob 패턴 및 스토리지 계정에 걸쳐 있는 하나의 테이블 |
fs.glob(...), azureml-fsspec 또는 Spark의 pyarrow.dataset.dataset(paths)에서 spark.read.parquet(*paths)을(를) 사용하여 경로 목록을 하나의 논리적 데이터 세트로 읽습니다. |
eval_mount
/
eval_download 모드Azure Machine Learning 작업에서(MLTable 파일에서 작업 제출 시 경로를 확인하고, 참조된 항목만 마운트) |
업스트림에서 선별된 하위 집합을 미리 생성하고(Fabric Notebook 또는 Azure Machine Learning 전처리 작업이 전용 /Files/curated/... 폴더에 기록), 이를 uri_folder로 지정합니다 |
읽기 레시피의 버전 관리 (데이터뿐만 아니라) mltable 유형의 데이터 자산을 통해 |
Git에 있는 모델 코드와 함께 로더 스크립트를 버전 관리하거나, 학습 스크립트 옆에 체크인된 작은 로더 모듈과 uri_folder 데이터 자산을 함께 사용합니다. |
**AutoML 입력—AutoML에는 type: mltable이(가) 필요합니다 (AutoML 학습 설정) |
데이터를 ADLS Gen2에 스테이징한 후(레이크하우스의 바로 가기를 사용하면 물리적 복사본 하나만 유지됨) 거기에서 mltable를 빌드합니다. |
OneLake에서 사용자 지정 학습 및 점수 매기기의 경우 선택한 엔진(uri_file / uri_folderpyarrow / 단일 노드 또는 Azure Machine Learning 분산된 Spark)을 사용합니다.polars / duckdb 이러한 옵션은 mltable와 동일한 기능을 제공하며, 처리량은 비슷하거나 더 우수합니다.
AutoML의 경우 OneLake를 통한 지원이 가능해질 때까지 mltable ADLS Gen2를 통해 라우팅합니다. OneLake 바로 가기를 사용하여 데이터 중복을 방지하고 다른 사용 사례에 대해 Fabric 데이터를 계속 사용할 수 있습니다.
Considerations
아이덴티티 모델. OneLake는 SaaS ID 모델을 사용하므로 구독 ID를 노출하지 않습니다. 스토리지 계정의 Azure RBAC(Azure 역할 기반 액세스 제어) 대신, 액세스는 대상 레이크하우스의 Fabric 워크스페이스 역할(관리자, 멤버, 기여자, 뷰어)에 의해 제어됩니다. OneLake 데이터 저장소는 데이터 저장소 만들기에 설명된 두 가지 자격 증명 모드를 지원합니다. 데이터 저장소를 설정하고 Fabric Lakehouse에 액세스하려면 Fabric 작업 영역 기여자 역할과 Azure Machine Learning 작업 영역 관리자 역할이 있는 사용자가 필요합니다.
데이터의 단일 복사본입니다. OneLake 데이터 저장소 및 직접 ABFSS 액세스는 OneLake의 "단일 복사본" 원칙을 유지합니다. 일괄 처리 엔드포인트의 바로 가기 패턴은 이 원칙을 논리적으로 유지하지만 기본 물리적 저장소로 ADLS Gen2 계정이 필요합니다.
동일 지역 배치 리전 간 아웃바운드 트래픽을 방지하려면 Azure Machine Learning 작업 영역, 컴퓨팅, Fabric 용량 또는 OneLake 리전을 같은 리전에 배치하세요.