Azure Blob Store 设置

Driverless AI 可供您在 Driverless AI 应用程序内探索 Azure Blob Store 数据源。

请注意:根据您所安装的 Docker 版本,在启动 Driverless AI Docker 映像时,使用 docker run --runtime=nvidia (>= Docker 19.03) 或 nvidia-docker (< Docker 19.03) 命令。使用 docker version 检查所使用的 Docker 版本。

使用 Azure Blob Store 连接器的受支持数据源

以下数据源可与 Azure Blob Store 连接器一起使用。

以下数据源可与 Azure Blob Store 连接器一起使用,同时还可使用 HDFS 连接器。

配置属性说明

以下配置属性专用于启用 Azure Blob 存储。

  • azure_blob_account_name: Microsoft Azure 存储帐户名称。这应该是创建帐户时创建的 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 classpath。

  • hdfs_app_supported_schemes: 受支持的模式列表用于初始检查,以确保将为连接器提供有效输入。

示例 1:启用 Azure Blob Store 数据连接器

此示例在启动 Driverless AI Docker 映像时,通过指定环境变量来启用 Azure Blob Store 数据连接器。这让用户能使用帐户名称引用 Azure 存储帐户中储存的数据,例如:https://mystorage.blob.core.windows.net.

 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 文件(文件存储)

挂载 Azure 文件共享

可将 Azure 文件共享挂载至 Driverless AI 的本地文件系统。若需挂载 Azure 文件共享,请按照 https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-use-files-linux 上所述的步骤操作。

示例 3:启用 HDFS 连接器以连接至 Azure Data Lake Gen 1

此示例启用了 HDFS 连接器以连接至 Azure Data Lake Gen 1。这让用户能使用 adl uri 引用 Azure Data Lake 上储存的数据,例如:adl://myadl.azuredatalakestore.net.

  1. 创建用于服务到服务身份验证的 Azure AD web 应用程序:https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-service-to-service-authenticate-using-active-directory

  2. 将 web 应用程序的信息添加至 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 Classpath 并添加 azure-datalake-store.jar 文件。此文件可在任何 Hadoop 版本的以下路径中找到:$HADOOP_HOME/share/hadoop/tools/lib/*.

echo "$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*"
  1. 配置 Driverless AI config.toml 文件。设置以下配置选项:

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 Gen 2。这让用户能使用 Azure Blob 文件系统驱动程序引用 Azure Data Lake 上储存的数据,例如:abfs[s]://file_system@account_name.dfs.core.windows.net/<path>/<path>/<file_name>.

  1. 创建 Azure 服务主体:https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal

  2. 将权限授予步骤 1 中创建的服务主体,以访问 Blob:https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad

  3. 将 web 应用程序的信息添加至 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 Classpath 并添加所需的 jar 文件。这些文件可在 Hadoop 3.2 版和更高版本的以下路径中找到:$HADOOP_HOME/share/hadoop/tools/lib/*

echo "$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*"

请注意:ABFS 仅支持 3.2 或更高版本的 Hadoop。

  1. 配置 Driverless AI config.toml 文件。设置以下配置选项:

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

常见问题解答

能否使用专用端点连接至我的存储帐户?

能。如果 Driverless AI 位于已允许的 VNET 中,则可使用专用端点。

Driverless AI 是否支持安全传输?

支持。Azure Blob Store 连接器通过 HTTPS 执行所有连接。

Driverless AI 是否支持分层命名空间?

支持。

能否使用 Azure 托管标识 (MSI) 访问 DataLake?

能。如果 Driverless AI 在具有托管标识的 Azure 虚拟机上运行,即能使用。若要启用 HDFS 连接器以使用 MSI 进行身份验证,则请添加至 core-site.xml:

对于 Gen 1:

<property>
    <name>fs.adl.oauth2.access.token.provider.type</name>
    <value>MSI</value>
</property>

对于 Gen 2:

<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>