Azure Blob Store 설정¶
Driverless AI를 사용하면 Driverless AI 애플리케이션 내에서 Azure Blob Store 데이터 소스의 탐색이 가능합니다.
Note: Docker 설치 버전에 따라, Driverless AI Docker 이미지를 시작할 때는 docker run --runtime=nvidia
(Docker 19.03 이후) 또는 nvidia-docker
(Docker 19.03 이전) 명령을 사용하십시오. 사용 중인 Docker 버전을 확인하려면 docker version
을 사용하십시오.
Azure Blob Store 커넥터를 사용하여 지원되는 데이터 소스¶
아래 데이터 소스는 Azure Blob Store 커넥터와 함께 사용할 수 있습니다.
Blob Storage
HDFS 커넥터를 사용할 때 Azure Blob Store 커넥터와 함께 다음 데이터 소스를 사용할 수 있습니다.
구성 속성에 관한 설명¶
다음 구성 특성은 Azure Blob Storage 사용과 연관되어 있습니다.
azure_blob_account_name
: Microsoft Azure Storage의 계정 이름입니다. 이것은 계정 생성 시, 만들어진 dns 접두사이어야 합니다(예: 《mystorage》).azure_blob_account_key
: 계정 이름에 매핑되는 계정 키를 지정하십시오.azure_connection_string
: 새로운 연결 문자열을 선택적으로 지정하십시오. 해당 옵션을 사용하면 호스트, 포트 및/또는 계정 이름에 대한 오버라이드의 포함이 가능합니다. 예를 들면,azure_connection_string = "DefaultEndpointsProtocol=http;AccountName=<account_name>;AccountKey=<account_key>;BlobEndpoint=http://<host>:<port>/<account_name>;"
azure_blob_init_path
:는 Azure Blob store 브라우저의 UI에 표시되는 시작 Azure Blob store 경로를 지정합니다.enabled_file_systems
: 활성화할 파일 시스템. 데이터 커넥터를 제대로 작동시키려면 이 시스템을 구성해야 합니다.
다음 추가 구성 특성을 통해 HDFS 커넥터를 Azure Data Lake Gen 1(Azure Data Lake Gen 2를 선택적으로 사용)에 연결할 수 있습니다.
hdfs_config_path
: HDFS 구성 폴더 경로의 위치입니다. 이 폴더에는 여러 구성 파일이 포함될 수 있습니다.hdfs_app_classpath
: HDFS 클래스패스hdfs_app_supported_schemes
: 지원되는 스키마 목록은 커넥터에 대한 유효한 입력의 확인을 위한 초기 검사로써 사용됩니다.
예제 1: Azure Blob Store 데이터 커넥터 활성화¶
이 예시에서는 Driverless AI Docker 이미지 시작 시, 환경 변수를 지정하여 Azure Blob Store 데이터 커넥터를 사용하도록 설정합니다. 이로써 사용자는 계정 이름(예: https://mystorage.blob.core.windows.net
)을 사용하여 Azure Storage 계정에 저장된 데이터의 참조가 가능해집니다.
nvidia-docker run \
--pid=host \
--init \
--rm \
--shm-size=256m \
-e DRIVERLESS_AI_ENABLED_FILE_SYSTEMS="file,azrbs" \
-e DRIVERLESS_AI_AZURE_BLOB_ACCOUNT_NAME="mystorage" \
-e DRIVERLESS_AI_AZURE_BLOB_ACCOUNT_KEY="<access_key>" \
-p 12345:12345 \
-v /tmp/dtmp/:/tmp \
-v /tmp/dlog/:/log \
-v /tmp/dlicense/:/license \
-v /tmp/ddata/:/data \
-u $(id -u):$(id -g) \
h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
이 예제에서는 config.toml 파일에서 Azure Blob Store 옵션을 구성하는 방법과 Docker에서 Driverless AI의 시작 시 해당 파일을 지정하는 방법을 보여줍니다.
Driverless AI config.toml file 파일을 구성하십시오. 다음 구성 옵션을 설정하십시오:
enabled_file_systems = "file, upload, azrbs"
azure_blob_account_name = "mystorage"
azure_blob_account_key = "<account_key>"
config.toml 파일을 Docker 컨테이너에 마운트하십시오.
nvidia-docker run \ --pid=host \ --init \ --rm \ --shm-size=256m \ --add-host name.node:172.16.2.186 \ -e DRIVERLESS_AI_CONFIG_FILE=/path/in/docker/config.toml \ -p 12345:12345 \ -v /local/path/to/config.toml:/path/in/docker/config.toml \ -v /etc/passwd:/etc/passwd:ro \ -v /etc/group:/etc/group:ro \ -v /tmp/dtmp/:/tmp \ -v /tmp/dlog/:/log \ -v /tmp/dlicense/:/license \ -v /tmp/ddata/:/data \ -u $(id -u):$(id -g) \ h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
이 예시는 Native 설치에서 Driverless AI 시작 시, config.toml 파일에서 Azure Blob Store 데이터 커넥터를 사용하도록 설정하는 방법에 관해 설명합니다. 이로써 사용자는 계정 이름(예: https://mystorage.blob.core.windows.net
)을 사용하여 Azure Storage 계정에 저장된 데이터를 참조할 수 있습니다.
Driverless AI config.toml 파일을 내보내거나 ~/.bashrc에 추가합니다. 아래 예를 참조하십시오.
# DEB and RPM export DRIVERLESS_AI_CONFIG_FILE="/etc/dai/config.toml" # TAR SH export DRIVERLESS_AI_CONFIG_FILE="/path/to/your/unpacked/dai/directory/config.toml"
config.toml 파일에서 아래 구성 옵션을 지정하십시오.
# File System Support # upload : standard upload feature # file : local file system/server file system # hdfs : Hadoop file system, remember to configure the HDFS config folder path and keytab below # dtap : Blue Data Tap file system, remember to configure the DTap section below # s3 : Amazon S3, optionally configure secret and access key below # gcs : Google Cloud Storage, remember to configure gcs_path_to_service_account_json below # gbq : Google Big Query, remember to configure gcs_path_to_service_account_json below # minio : Minio Cloud Storage, remember to configure secret and access key below # snow : Snowflake Data Warehouse, remember to configure Snowflake credentials below (account name, username, password) # kdb : KDB+ Time Series Database, remember to configure KDB credentials below (hostname and port, optionally: username, password, classpath, and jvm_args) # azrbs : Azure Blob Storage, remember to configure Azure credentials below (account name, account key) # jdbc: JDBC Connector, remember to configure JDBC below. (jdbc_app_configs) # hive: Hive Connector, remember to configure Hive below. (hive_app_configs) # recipe_url: load custom recipe from URL # recipe_file: load custom recipe from local file system enabled_file_systems = "file, azrbs" # Azure Blob Store Connector credentials azure_blob_account_name = "mystorage" azure_blob_account_key = "<account_key>"
완료되면 변경 사항을 저장하고 Driverless AI를 중지/재시작하십시오.
예제 3: HDFS 커넥터를 사용하여 Azure Data Lake Gen 1에 연결¶
이 예시에서 보는 것처럼 HDFS 커넥터를 Azure Data Lake Gen1에 연결할 수 있습니다. 이로써 사용자는 adl uri를 사용하여 Azure Data Lake에 저장된 데이터를 참조할 수 있습니다(예: adl://myadl.azuredatalakestore.net
).
서비스 간 인증을 위한 Azure AD 웹 애플리케이션 생성: https://docs.microsoft.com/ko-KR/azure/data-lake-store/data-lake-store-service-to-service-authenticate-using-active-directory
웹 애플리케이션의 정보를 Hadoop
core-site.xml
구성 파일에 추가하십시오.
<configuration> <property> <name>fs.adl.oauth2.access.token.provider.type</name> <value>ClientCredential</value> </property> <property> <name>fs.adl.oauth2.refresh.url</name> <value>Token endpoint created in step 1.</value> </property> <property> <name>fs.adl.oauth2.client.id</name> <value>Client ID created in step 1</value> </property> <property> <name>fs.adl.oauth2.credential</name> <value>Client Secret created in step 1</value> </property> <property> <name>fs.defaultFS</name> <value>ADL URIt</value> </property> </configuration>
Hadoop 클래스패스를 기록하고
azure-datalake-store.jar
파일을 추가하십시오. 해당 파일은$HADOOP_HOME/share/hadoop/tools/lib/*
의 모든 Hadoop 버전에서 찾을 수 있습니다.
echo "$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*"
Driverless AI config.toml file 파일을 구성하십시오. 다음 구성 옵션을 설정하십시오:
enabled_file_systems = "upload, file, hdfs, azrbs, recipe_file, recipe_url" hdfs_config_path = "/path/to/hadoop/conf" hdfs_app_classpath = "/hadoop/classpath/" hdfs_app_supported_schemes = "['adl://']"
config.toml 파일을 Docker 컨테이너에 마운트하십시오.
nvidia-docker run \ --pid=host \ --init \ --rm \ --shm-size=256m \ --add-host name.node:172.16.2.186 \ -e DRIVERLESS_AI_CONFIG_FILE=/path/in/docker/config.toml \ -p 12345:12345 \ -v /local/path/to/config.toml:/path/in/docker/config.toml \ -v /etc/passwd:/etc/passwd:ro \ -v /etc/group:/etc/group:ro \ -v /tmp/dtmp/:/tmp \ -v /tmp/dlog/:/log \ -v /tmp/dlicense/:/license \ -v /tmp/ddata/:/data \ -u $(id -u):$(id -g) \ h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
서비스 간 인증을 위한 Azure AD 웹 애플리케이션 생성. https://docs.microsoft.com/ko-KR/azure/data-lake-store/data-lake-store-service-to-service-authenticate-using-active-directory
웹 애플리케이션의 정보를 hadoop
core-site.xml
구성 파일에 추가하십시오.
<configuration> <property> <name>fs.adl.oauth2.access.token.provider.type</name> <value>ClientCredential</value> </property> <property> <name>fs.adl.oauth2.refresh.url</name> <value>Token endpoint created in step 1.</value> </property> <property> <name>fs.adl.oauth2.client.id</name> <value>Client ID created in step 1</value> </property> <property> <name>fs.adl.oauth2.credential</name> <value>Client Secret created in step 1</value> </property> <property> <name>fs.defaultFS</name> <value>ADL URIt</value> </property> </configuration>
hadoop 클래스패스를 기록하고
azure-datalake-store.jar
파일을 추가하십시오. 해당 파일은$HADOOP_HOME/share/hadoop/tools/lib/*
의 모든 Hadoop 버전에서 찾을 수 있습니다
echo "$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*"
Driverless AI config.toml file 파일을 구성하십시오. 다음 구성 옵션을 설정하십시오:
enabled_file_systems = "upload, file, hdfs, azrbs, recipe_file, recipe_url" hdfs_config_path = "/path/to/hadoop/conf" hdfs_app_classpath = "/hadoop/classpath/" hdfs_app_supported_schemes = "['adl://']"
완료되면 변경 사항을 저장하고 Driverless AI를 중지/재시작하십시오.
예제 4: HDFS 커넥터를 사용하여 Azure Data Lake Gen 2에 연결¶
이 예시에서 보는 것처럼 HDFS 커넥터를 Azure Data Lake Gen2에 연결할 수 있습니다. 이로써 사용자는 Azure Blob 파일 시스템 드라이버를 사용하여 Azure Data Lake에 저장된 데이터를 참조할 수 있습니다(예: abfs[s]://file_system@account_name.dfs.core.windows.net/<path>/<path>/<file_name>
).
Azure Service Principal: https://docs.microsoft.com/ko-KR/azure/active-directory/develop/howto-create-service-principal-portal
Blob에 액세스하기 위해 1단계에서 생성한 Service Principal에 권한을 부여하십시오. https://docs.microsoft.com/ko-KR/azure/storage/common/storage-auth-aad
웹 애플리케이션의 정보를 Hadoop
core-site.xml
구성 파일에 추가하십시오.
<configuration> <property> <name>fs.azure.account.auth.type</name> <value>OAuth</value> </property> <property> <name>fs.azure.account.oauth.provider.type</name> <value>org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider</value> </property> <property> <name>fs.azure.account.oauth2.client.endpoint</name> <value>Token endpoint created in step 1.</value> </property> <property> <name>fs.azure.account.oauth2.client.id</name> <value>Client ID created in step 1</value> </property> <property> <name>fs.azure.account.oauth2.client.secret</name> <value>Client Secret created in step 1</value> </property> </configuration>
Hadoop 클래스패스를 기록하고 필요한 jar 파일을 추가하십시오. 해당 파일은 모든 Hadoop 버전 3.2 이상에서
$HADOOP_HOME/share/hadoop/tools/lib/*
에서 찾을 수 있습니다.
echo "$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*"Note: ABFS는 Hadoop 버전 3.2 이상에서만 지원됩니다.
Driverless AI config.toml file 파일을 구성하십시오. 다음 구성 옵션을 설정하십시오:
enabled_file_systems = "upload, file, hdfs, azrbs, recipe_file, recipe_url" hdfs_config_path = "/path/to/hadoop/conf" hdfs_app_classpath = "/hadoop/classpath/" hdfs_app_supported_schemes = "['abfs://']"
config.toml 파일을 Docker 컨테이너에 마운트하십시오.
nvidia-docker run \ --pid=host \ --init \ --rm \ --shm-size=256m \ --add-host name.node:172.16.2.186 \ -e DRIVERLESS_AI_CONFIG_FILE=/path/in/docker/config.toml \ -p 12345:12345 \ -v /local/path/to/config.toml:/path/in/docker/config.toml \ -v /etc/passwd:/etc/passwd:ro \ -v /etc/group:/etc/group:ro \ -v /tmp/dtmp/:/tmp \ -v /tmp/dlog/:/log \ -v /tmp/dlicense/:/license \ -v /tmp/ddata/:/data \ -u $(id -u):$(id -g) \ h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
Azure Service Principal.https://docs.microsoft.com/ko-KR/azure/active-directory/develop/howto-create-service-principal-portal
Blob에 액세스하기 위해 1단계에서 생성한 Service Principal에 권한을 부여하십시오. https://docs.microsoft.com/ko-KR/azure/storage/common/storage-auth-aad
웹 애플리케이션의 정보를 hadoop
core-site.xml
구성 파일에 추가하십시오.
<configuration> <property> <name>fs.azure.account.auth.type</name> <value>OAuth</value> </property> <property> <name>fs.azure.account.oauth.provider.type</name> <value>org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider</value> </property> <property> <name>fs.azure.account.oauth2.client.endpoint</name> <value>Token endpoint created in step 1.</value> </property> <property> <name>fs.azure.account.oauth2.client.id</name> <value>Client ID created in step 1</value> </property> <property> <name>fs.azure.account.oauth2.client.secret</name> <value>Client Secret created in step 1</value> </property> </configuration>
Hadoop 클래스패스를 기록하고 필요한 jar 파일을 추가하십시오. 해당 파일은 모든 hadoop 버전 3.2 이상에서
$HADOOP_HOME/share/hadoop/tools/lib/*
에서 찾을 수 있습니다.
echo "$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*"Note: ABFS는 hadoop 버전 3.2 이상에서만 지원됩니다
Driverless AI config.toml file 파일을 구성하십시오. 다음 구성 옵션을 설정하십시오:
enabled_file_systems = "upload, file, hdfs, azrbs, recipe_file, recipe_url" hdfs_config_path = "/path/to/hadoop/conf" hdfs_app_classpath = "/hadoop/classpath/" hdfs_app_supported_schemes = "['abfs://']"
완료되면 변경 사항을 저장하고 Driverless AI를 중지/재시작하십시오.
자주 하는 질문¶
Can I connect to my storage account using Private Endpoints?
예. Driverless AI는 허용된 VNET에 Driverless AI가 위치한 경우 비공개 엔드포인트를 사용할 수 있습니다.
Does Driverless AI support secure transfer?
가능합니다. Azure Blob Store 커넥터는 HTTPS를 통해 모든 연결을 생성합니다.
Does Driverless AI support hierarchical namespaces?
예.
Can I use Azure Managed Identities (MSI) to access the DataLake?
예. Driverless AI가 관리 ID를 가지고 있는 Azure VM에서 실행 중인 경우. HDFS 커넥터가 MSI를 사용하여 인증하게 하려면 core-site.xml에 추가하십시오.
Gen1의 경우:
<property> <name>fs.adl.oauth2.access.token.provider.type</name> <value>MSI</value> </property>Gen2의 경우:
<property> <name>fs.azure.account.auth.type</name> <value>OAuth</value> </property> <property> <name>fs.azure.account.oauth.provider.type</name> <value>org.apache.hadoop.fs.azurebfs.oauth2.MsiTokenProvider</value> </property>