이 문서에서는 계층 구조 네임스페이스 기능을 사용하도록 설정된 계정에 대한 Azure Data Lake Storage 알려진 문제 및 제한 사항에 대해 설명합니다. 이 정보를 사용하여 데이터 워크플로를 관리하고 다양한 API 및 통합을 사용할 때 발생할 수 있는 문제를 방지할 수 있습니다.
참고
이 문서에 설명된 기능 중 일부는 NFS(네트워크 파일 시스템) 3.0 지원을 사용하도록 설정된 계정에서 지원되지 않을 수 있습니다. 다양한 기능을 사용하도록 설정한 경우 기능 지원의 영향을 표시하는 표를 보려면 Azure Storage 계정의 Blob Storage 기능 지원을 참조하세요.
기능, 서비스 및 플랫폼 지원
대부분의 Blob Storage 기능, Azure 서비스 통합 및 오픈 소스 플랫폼은 계층 구조 네임스페이스가 있는 계정에서 지원됩니다. 전체 목록은 다음을 참조하세요.
- Azure Data Lake Storage 사용할 수 있는 Blob Storage 기능
- Azure Data Lake Storage를 지원하는 Azure 서비스
- Azure Data Lake Storage 지원하는 오픈 소스 플랫폼
Blob Storage API
Data Lake Storage API, NFS 3.0 및 Blob API는 동일한 데이터에서 작동할 수 있습니다.
이 섹션에서는 Blob API, NFS 3.0 및 Data Lake Storage API를 사용하여 동일한 데이터에서 작동할 때의 문제와 제한 사항에 대해 설명합니다.
Blob API, NFS 3.0 및 Data Lake Storage API를 사용하여 한 파일의 동일한 인스턴스에 작성할 수는 없습니다. Data Lake Storage API 또는 NFS 3.0을 사용하여 파일에 쓰는 경우 해당 파일의 블록은 Get Block List Blob API 호출에 표시되지 않습니다. 오직 덮어쓰기를 사용할 때만 허용됩니다. API를 사용하거나 zero-truncate 옵션이 포함된 NFS 3.0을 사용하여 파일 또는 blob을 덮어쓸 수 있습니다(즉, 쓰기 전에 파일을 0바이트로 잘라내는 POSIX 스타일 작업).
Path - Create 작업과 같은 Data Lake Storage 작업으로 생성된 blob은 PutBlock 또는 PutBlockList 작업을 사용하여 덮어쓸 수 없습니다. 그러나 PutBlob 작업을 사용하여 이러한 Blob을 덮어쓸 수 있지만, 이는 PutBlob에서 사용하는 해당 api-version에 의해 적용되는 최대 허용 Blob 크기의 제한을 받습니다.
구분 기호를 지정하지 않고 Blob 나열 작업을 사용하면 결과에 디렉터리와 Blob이 모두 포함됩니다. 구분 기호를 사용하려면 슬래시(
/)만 사용합니다. 이것이 유일하게 지원되는 구분 기호입니다.Blob API 삭제를 사용하여 디렉터리를 삭제하는 경우 디렉터리가 비어 있는 경우에만 삭제됩니다. 이 조건은 Blob API를 사용하여 디렉터리를 재귀적으로 삭제할 수 없다는 것을 의미합니다.
다음과 같은 Blob REST API는 지원되지 않습니다.
비관리형 VM 디스크는 계층 구조 네임스페이스가 있는 계정에서 지원되지 않습니다. 스토리지 계정에서 계층 구조 네임스페이스를 활성화하려면, 계층 구조 네임스페이스 기능을 활성화하지 않은 스토리지 계정에 비관리형 VM 디스크를 배치합니다.
Azure Data Lake Storage ACL(액세스 제어 목록)을 재귀적으로 설정하기 위한 지원
ACL 변경 내용을 상위 디렉터리에서 하위 항목으로 재귀적으로 적용하는 기능을 일반적으로 사용할 수 있습니다. 이 기능의 현재 릴리스에서는 Azure Storage Explorer, PowerShell, Azure CLI 및 .NET, Java, Python 및 Node.js SDK를 사용하여 ACL 변경 내용을 적용할 수 있습니다. Azure Portal에서는 아직 지원되지 않습니다.
ACL(액세스 제어 목록) 및 익명 읽기 액세스
익명 읽기 액세스 권한이 컨테이너에 부여된 경우 ACL은 해당 컨테이너 또는 해당 컨테이너의 파일에 영향을 주지 않습니다. 이 제한은 읽기 요청에만 영향을 줍니다. 쓰기 요청은 여전히 ACL을 적용합니다. Blob 데이터에 대한 모든 요청에 대한 권한 부여가 필요합니다.
Azure Data Lake Storage의 프라이빗 엔드포인트
프라이빗 엔드포인트를 사용하여 Azure Data Lake Storage 액세스하는 경우(계층 구조 네임스페이스를 사용하도록 설정된 스토리지 계정) Blob 및 dfs 하위 리소스 둘 다에 대해 만들어야 합니다. Data Lake Storage(dfs) 엔드포인트를 대상으로 하는 작업은 Blob 엔드포인트로 리디렉션될 수 있으며 일부 작업(예: ACL 관리, 디렉터리 만들기 및 디렉터리 삭제)에는 DFS 프라이빗 엔드포인트가 필요합니다. 두 하위 리소스에 대한 프라이빗 엔드포인트를 만들면 모든 작업이 성공적으로 완료됩니다. 자세한 내용은 Azure Storage에 프라이빗 엔드포인트 사용을 참조하세요.
Azure Data Lake Storage 포함 AzCopy
계층 구조 네임스페이스를 사용하도록 설정된 계정으로 AzCopy 사용하는 경우 AzCopy v10만 필요한 Data Lake Storage API를 지원합니다. 최신 버전의 AzCopy(AzCopy v10)만 사용하세요. AzCopy v8.1과 같은 이전 버전은 지원되지 않습니다.
Azure Data Lake Storage를 사용하는 Azure Storage Explorer
계층 구조 네임스페이스를 사용하는 스토리지 계정에서 Azure Storage Explorer 사용하는 경우 버전 1.6.0 이상만 사용합니다. 이전 버전은 파일 및 디렉터리를 관리하는 데 필요한 계층 구조 네임스페이스 API를 지원하지 않습니다.
Azure Portal의 스토리지 브라우저
Azure Portal에 표시되는 스토리지 브라우저에서는 경로를 지정하여 파일 또는 폴더에 액세스할 수 없습니다. 대신 폴더를 탐색하여 파일에 연결해야 합니다. 따라서 ACL이 사용자에게 파일에 대한 읽기 권한을 부여하지만 파일로 이어지는 모든 폴더에 대한 읽기 액세스 권한을 부여하지 않는 경우 해당 사용자는 스토리지 브라우저에서 파일을 볼 수 없습니다.
제3자 애플리케이션
REST API를 사용하여 작동하는 타사 애플리케이션은 Data Lake Storage 함께 사용하는 경우 계속 작동합니다. Blob API를 호출하는 애플리케이션이 작동할 가능성이 높습니다.
WASB(Windows Azure Storage Blob) 드라이버
현재 Blob API와만 작동하도록 설계된 WASB 드라이버는 몇 가지 일반적인 시나리오에서 문제가 발생합니다. 계층 구조 네임스페이스가 활성화된 스토리지 계정에 대한 클라이언트인 경우에는 특히 그렇습니다. Data Lake Storage 다중 프로토콜 액세스는 이러한 문제를 완화하지 않습니다.
WASB 드라이버를 계층적 네임스페이스가 활성화된 스토리지 계정에 대한 클라이언트로 사용하는 것은 지원되지 않습니다. 대신 Hadoop 환경에서 ABFS(Azure Blob 파일 시스템) 드라이버를 사용합니다. Hadoop branch-3보다 이전 버전의 온-프레미스 Hadoop 환경에서 마이그레이션하려는 경우, 조직에 적합한 향후 진행 경로를 결정하는 데 도움을 받으려면 Azure 지원 티켓을 여세요.
Azure Data Lake Storage의 Blob에 대한 일시 삭제
계층 구조 네임스페이스가 있는 스토리지 계정에서 일시 삭제된 파일 또는 디렉터리에 대한 부모 디렉터리 이름을 바꾸면 Azure 포털에서 일시 삭제된 항목을 올바르게 표시하지 않을 수 있습니다. 이러한 경우 PowerShell 또는 Azure CLI 사용하여 일시 삭제된 항목을 나열하고 복원합니다.
Azure Data Lake Storage 이벤트 구독
계층 구조 네임스페이스가 있는 스토리지 계정에서 계정에 이벤트 구독이 있는 경우 보조 엔드포인트(지역 중복 스토리지 계정의 읽기 전용 복제본)에서 읽기 작업을 수행하면 오류가 발생합니다. 이 문제를 해결하려면 이벤트 구독을 제거합니다. 비 계층 구조 네임스페이스 사용 계정에 Data Lake Storage 엔드포인트(abfss://URI)를 사용하면 이벤트가 생성되지 않지만 blob 엔드포인트(wasb:// URI)는 이벤트를 생성합니다.
팁
보조 엔드포인트에 대한 읽기 액세스는 RA-GRS(읽기 액세스 지역 중복 스토리지) 또는 RA-GZRS(읽기 액세스 지역 영역 중복 스토리지)를 사용하도록 설정한 경우에만 사용할 수 있습니다.