如何在大数据群集中装载 ADLS Gen2 以实现 HDFS 分层

以下部分展示了如何使用 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 数据,该数据将被装载到大数据群集中的 HDFS。

装载凭据

使用 OAuth 凭据进行装载

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

  1. 转到 Azure 门户

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

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

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

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

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

  7. 现在应为 OAuth 记下以下内容:

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

将服务主体添加到 ADLS 帐户

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

在使用凭据进行装载之前,请等待 5-10 分钟

为 OAuth 凭据设置环境变量

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

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

   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,请改用“export”。

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

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 查找大数据群集中终结点 controller-svc-external 服务的 IP 地址 。 查找“外部 IP”。

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

    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>
    

    注意

    装载 create 命令是异步的。 此时,没有消息指示装载是否成功。 请查看状态部分,检查装载的状态。

如果成功装载,应该能够查询 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 大数据群集简介