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 커넥터와 함께 사용할 수 있습니다.

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

예제 2: Azure 파일 공유를 로컬 파일 시스템에 마운트

로컬 파일 시스템을 사용하여 지원되는 데이터 소스

  • Azure 파일(파일 Storage)

Azure 파일 공유 마운트

Azure 파일 공유는 Driverless AI의 로컬 파일 시스템에 마운트할 수 있습니다. Azure 파일 공유를 마운트하려며 https://docs.microsoft.com/ko-KR/azure/storage/files/storage-how-to-use-files-linux 에 설명된 단계를 따르십시오.

예제 3: HDFS 커넥터를 사용하여 Azure Data Lake Gen 1에 연결

이 예시에서 보는 것처럼 HDFS 커넥터를 Azure Data Lake Gen1에 연결할 수 있습니다. 이로써 사용자는 adl uri를 사용하여 Azure Data Lake에 저장된 데이터를 참조할 수 있습니다(예: adl://myadl.azuredatalakestore.net).

  1. 서비스 간 인증을 위한 Azure AD 웹 애플리케이션 생성: https://docs.microsoft.com/ko-KR/azure/data-lake-store/data-lake-store-service-to-service-authenticate-using-active-directory

  2. 웹 애플리케이션의 정보를 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>
  1. Hadoop 클래스패스를 기록하고 azure-datalake-store.jar 파일을 추가하십시오. 해당 파일은 $HADOOP_HOME/share/hadoop/tools/lib/* 의 모든 Hadoop 버전에서 찾을 수 있습니다.

echo "$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*"
  1. 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://']"
  1. 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

예제 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>).

  1. Azure Service Principal: https://docs.microsoft.com/ko-KR/azure/active-directory/develop/howto-create-service-principal-portal

  2. Blob에 액세스하기 위해 1단계에서 생성한 Service Principal에 권한을 부여하십시오. https://docs.microsoft.com/ko-KR/azure/storage/common/storage-auth-aad

  3. 웹 애플리케이션의 정보를 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>
  1. 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 이상에서만 지원됩니다.

  1. 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://']"
  1. 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

자주 하는 질문

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>