如何在大数据群集中挂载用于进行 HDFS 分层的 ADLS Gen2

以下部分展示了如何使用 Azure Data Lake Storage Gen2 数据源配置 HDFS 分层的示例。

重要

Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 具有软件保障的 SQL Server 2019 的所有现有用户都将在平台上获得完全支持,在此之前,该软件将继续通过 SQL Server 累积更新进行维护。 有关详细信息,请参阅公告博客文章Microsoft SQL Server 平台上的大数据选项

先决条件

将数据加载到 Azure Data Lake Storage 中

以下部分介绍如何设置 Azure Data Lake Storage Gen2 以测试 HDFS 分层。 如果已将数据存储在 Azure Data Lake Storage 中,则可以跳过本部分以使用自己的数据。

  1. 创建具有 Data Lake Storage Gen2 功能的存储帐户

  2. 在此存储帐户中为数据创建文件系统

  3. 将 CSV 或 Parquet 文件上传到容器中。 这是要挂载到大数据集群中的外部 HDFS 数据。

用于装载的凭据

使用 OAuth 凭据挂载

若要使用 OAuth 凭据进行装载,需要执行以下步骤:

  1. 转到 Azure 门户

  2. 导航到“Microsoft Entra ID”。 应在左侧导航栏中看到此服务。

  3. 从资源菜单中选择 “应用注册 ”,然后创建新的注册。

  4. 创建 Web 应用程序 并按照向导操作。 请记住在此步骤中创建的应用的名称。 需要将此名称作为授权用户添加到 ADLS 帐户。 另外,在选择应用时,请在概述中记下应用程序客户端 ID。

  5. 创建 Web 应用程序后,转到 “证书&机密 ”,然后选择创建新的 客户端密码。 选择密钥持续时间。 使用 Add 保存机密。

  6. 返回到“应用注册”页,然后单击顶部的“终结点”。 记下“OAuth 令牌终结点(v2) URL

  7. 现在,您应该记录下以下与 OAuth 相关的内容:

    • Web 应用程序的“应用程序客户端 ID”
    • 客户端密码
    • 令牌终结点

将服务主体添加到 ADLS 帐户

  1. 再次转到门户,导航到 ADLS 存储帐户文件系统,然后在左侧菜单中选择访问控制(IAM)。
  2. 选择“添加角色分配”
  3. 选择角色“存储 Blob 数据参与者”
  4. 搜索上面创建的名称(请注意,它不会显示在列表中,但如果搜索全名,则会找到)。
  5. 保存角色。

等待 5-10 分钟,然后使用凭据进行装载

为 OAuth 凭据设置环境变量

在可以访问大数据群集的客户端计算机上打开命令提示符。 使用以下格式设置环境变量。凭据需要位于逗号分隔列表中。 Windows 上使用“set”命令。 如果使用 Linux,请改用“导出”。

请注意 ,提供凭据时,需要删除逗号之间的任何换行符或空格。 下面的格式设置只是为了便于阅读。

   set MOUNT_CREDENTIALS=fs.azure.account.auth.type=OAuth,
   fs.azure.account.oauth.provider.type=org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider,
   fs.azure.account.oauth2.client.endpoint=[token endpoint],
   fs.azure.account.oauth2.client.id=[Application client ID],
   fs.azure.account.oauth2.client.secret=[client secret]

使用访问密钥装载

还可以使用 Azure 门户上 ADLS 帐户获取的访问密钥进行装载。

小窍门

有关如何查找存储帐户的访问密钥(<storage-account-access-key>)的详细信息,请参阅 查看帐户密钥和连接字符串

设置用于访问密钥凭据的环境变量

  1. 在可以访问大数据群集的客户端计算机上打开命令提示符。

  2. 在可以访问大数据群集的客户端计算机上打开命令提示符。 使用以下格式设置环境变量。 凭据需要位于逗号分隔列表中。 Windows 上使用“set”命令。 如果使用 Linux,请改用“导出”。

请注意 ,提供凭据时,需要删除逗号之间的任何换行符或空格。 下面的格式设置只是为了便于阅读。

set MOUNT_CREDENTIALS=fs.azure.abfs.account.name=<your-storage-account-name>.dfs.core.windows.net,
fs.azure.account.key.<your-storage-account-name>.dfs.core.windows.net=<storage-account-access-key>

装载远程 HDFS 存储

现在您已经为访问密钥或使用 OAuth 设置了“MOUNT_CREDENTIALS”环境变量,可以开始进行装载。 以下步骤将 Azure Data Lake 中的远程 HDFS 存储装载到大数据群集的本地 HDFS 存储。

  1. 使用 kubectl 查找大数据群集中终结点 控制器-svc-external 服务的 IP 地址。 请查找 外部 IP 地址

    kubectl get svc controller-svc-external -n <your-big-data-cluster-name>
    
  2. 使用控制器终结点的外部 IP 地址通过群集用户名和密码登录 azdata

    azdata login -e https://<IP-of-controller-svc-external>:30080
    
  3. 设置环境变量MOUNT_CREDENTIALS(向上滚动以获取说明)

  4. 使用 azdata bdc hdfs mount create 在 Azure 中装载远程 HDFS 存储。 在运行以下命令之前替换占位符值:

    azdata bdc hdfs mount create --remote-uri abfs://<blob-container-name>@<storage-account-name>.dfs.core.windows.net/ --mount-path /mounts/<mount-name>
    

    注释

    装载创建命令是异步的。 此时,没有消息指示装载是否成功。 请参阅“状态”部分,以检查您的装载状态。

如果成功装载,则应能够查询 HDFS 数据,并对其运行 Spark 作业。 它将出现在您的大数据集群的 HDFS 中,位于指定的 --mount-path 位置。

获取装载的状态

若要列出大数据群集中所有装载的状态,请使用以下命令:

azdata bdc hdfs mount status

若要列出 HDFS 中特定路径的装载状态,请使用以下命令:

azdata bdc hdfs mount status --mount-path <mount-path-in-hdfs>

刷新挂载

以下示例刷新挂载。 此刷新还将清除装载缓存。

azdata bdc hdfs mount refresh --mount-path <mount-path-in-hdfs>

删除挂载

若要删除装载,请使用 azdata bdc hdfs mount delete 命令,并在 HDFS 中指定装载路径:

azdata bdc hdfs mount delete --mount-path <mount-path-in-hdfs>

后续步骤

有关 SQL Server 2019 大数据群集的详细信息,请参阅 SQL Server 2019 大数据群集简介