Azure Blob Storage
Azure Blob Storage
Azure Blob Storage는 다양한 사용 사례를 위한 클라우드 저장소를 제공하는 Microsoft 관리 서비스예요. Flink에서 스트리밍 상태 백엔드와 함께 데이터 읽기·쓰기에 Azure Blob Storage를 사용할 수 있어요.
출처: 문서
본문
Flink는 wasb:// 또는 abfs://를 사용한 Azure Blob Storage 접근을 지원해요. Azure는 wasb://가 하위 호환성으로 동작하지만 ADLS Gen2 저장소 계정 접근에 abfs://를 권장해요. abfs://는 ADLS Gen2 저장소 계정 접근에만 사용할 수 있어요.
다음 형식으로 경로를 지정하면 Azure Blob Storage 객체를 일반 파일처럼 사용할 수 있어요.
// WASB unencrypted access
wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>
// WASB SSL encrypted access
wasbs://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>
// ABFS unecrypted access
abfs://<your-container>@$<your-azure-account>.dfs.core.windows.net/<object-path>
// ABFS SSL encrypted access
abfss://<your-container>@$<your-azure-account>.dfs.core.windows.net/<object-path>
Flink 작업에서 Azure Blob Storage를 사용하는 방법은 다음과 같아요.
// Read from Azure Blob storage
FileSource<String> fileSource = FileSource.forRecordStreamFormat(
new TextLineInputFormat(),
new Path("wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>")
).build();
env.fromSource(
fileSource,
WatermarkStrategy.noWatermarks(),
"azure-blob-storage-input"
);
// Write to Azure Blob storage
stream.sinkTo(
FileSink.forRowFormat(
new Path("wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>"),
new SimpleStringEncoder<>()
).build()
);
// Use Azure Blob Storage as checkpoint storage
Configuration config = new Configuration();
config.set(CheckpointingOptions.CHECKPOINT_STORAGE, "filesystem");
config.set(CheckpointingOptions.CHECKPOINTS_DIRECTORY, "wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>");
env.configure(config);
셰이딩된 Hadoop Azure Blob Storage 파일 시스템 (Shaded Hadoop Azure Blob Storage file system)
flink-azure-fs-hadoop을 사용하려면 Flink를 시작하기 전에 해당 JAR 파일을 opt 디렉터리에서 Flink 배포의 plugins 디렉터리로 복사해요:
mkdir ./plugins/azure-fs-hadoop
cp ./opt/flink-azure-fs-hadoop-2.3.0.jar ./plugins/azure-fs-hadoop/
flink-azure-fs-hadoop은 wasb://와 wasbs://(SSL 암호화 접근) 스킴의 URI에 대한 기본 FileSystem 래퍼를 등록해요.
자격 증명 구성 (Credentials Configuration)
WASB
Hadoop의 WASB Azure Filesystem은 Hadoop Azure Blob Storage 문서에 설명된 대로 Hadoop 구성을 통한 자격 증명 구성을 지원해요. 편의를 위해 Flink는 fs.azure 키 접두사를 가진 모든 Flink 구성을 파일 시스템의 Hadoop 구성으로 전달해요. 따라서 Flink 구성 파일에서 azure blob storage 키를 다음과 같이 구성할 수 있어요:
fs.azure.account.key.<account_name>.blob.core.windows.net: <azure_storage_key>
또는 Flink 구성 파일에서 다음 구성 키를 설정해 파일 시스템이 AZURE_STORAGE_KEY 환경 변수에서 Azure Blob Storage 키를 읽도록 구성할 수 있어요.
fs.azure.account.keyprovider.<account_name>.blob.core.windows.net: org.apache.flink.fs.azurefs.EnvironmentVariableKeyProvider
ABFS
Hadoop의 ABFS Azure Filesystem은 여러 인증 구성 방법을 지원해요. Hadoop ABFS 문서를 참고해 구성해요. Azure는 abfs로 ADLS Gen2 저장소 계정에 접근할 때 Azure managed identity를 사용할 것을 권장해요. Azure managed identities 문서를 참고해요. Managed Identities를 지원하는 서비스 목록은 이 페이지를 참고해요. 이 Azure 서비스에 배포된 Flink 클러스터는 Managed Identities를 활용할 수 있어요.
저장소 키로 ABFS 접근 (권장하지 않음, Accessing ABFS using storage Keys (Discouraged))
Azure blob storage 키는 Flink 구성 파일에서 다음과 같이 구성할 수 있어요:
fs.azure.account.key.<account_name>.dfs.core.windows.net: <azure_storage_key>