如何在大数据群集中装载 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 中,则可以跳过此部分,使用自己的数据。
在此存储帐户中为数据创建文件系统。
将 CSV 或 Parquet 文件上传到容器中。 这是外部 HDFS 数据,该数据将被装载到大数据群集中的 HDFS。
装载凭据
使用 OAuth 凭据进行装载
要使用 OAuth 凭据进行装载,需要执行以下步骤:
转到 Azure 门户
导航到“Microsoft Entra ID”。 可在左侧导航栏上看到此服务。
从资源菜单中选择“应用注册”,然后新建注册。
创建 Web 应用程序,然后按照向导操作。 记住在此步骤创建的应用的名称。 稍后需要以授权用户的身份将此名称添加到 ADLS 帐户。 在选择应用程序时,另请注意概述中的应用程序客户端 ID。
创建 Web 应用程序后,请转到“证书和密码”,然后选择创建“新建客户端密码”。 选择密钥持续时间。 使用“添加”保存密码。
返回“应用注册”页面,然后单击顶部的“终结点”。 记下“OAuth 令牌终结点(v2)”URL
现在应为 OAuth 记下以下内容:
- Web 应用程序的“应用程序客户端 ID”
- 客户端密码
- 令牌终结点
将服务主体添加到 ADLS 帐户
- 再次转到门户,并导航到 ADLS 存储帐户文件系统,并在左侧菜单中选择“访问控制(IAM)”。
- 选择“添加角色分配”
- 选择角色“存储 Blob 数据参与者”
- 搜索之前创建的名称(请注意,它不会显示在列表中,但可通过全名搜索发现)。
- 保存该角色。
在使用凭据进行装载之前,请等待 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>
) 的详细信息,请参阅查看帐户密钥和连接字符串。
为访问密钥凭据设置环境变量
在可以访问大数据群集的客户端计算机上打开命令提示符。
在可以访问大数据群集的客户端计算机上打开命令提示符。 使用以下格式设置环境变量。 凭据需要包含在逗号分隔列表中。 在 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 存储中。
使用 kubectl 查找大数据群集中终结点 controller-svc-external 服务的 IP 地址 。 查找“外部 IP”。
kubectl get svc controller-svc-external -n <your-big-data-cluster-name>
使用 azdata,同时使用控制器终结点的外部 IP 地址和群集用户名及密码登录:
azdata login -e https://<IP-of-controller-svc-external>:30080
设置环境变量 MOUNT_CREDENTIALS(向上滚动获取说明)
使用 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 大数据群集简介。