SQL Server 大数据群集常见问题解答

本文解答了有关 SQL Server 大数据群集 概念、功能、部署、可支持性和工具的常见问题。

最佳做法

关于文件位置的建议最佳做法是什么?

与在 Windows 或 Linux 上的裸机计算机上配置 SQL Server 相比,灵活性较低。 在 Kubernetes 环境中,这些项目是抽象的,它们需要可移植。 目前,每个 Pod 提供的数据和日志有 2 个永久性卷(PV),可以配置。 有关详细信息,请参阅 Kubernetes 中 SQL Server 大数据群集的数据持久性

是否需要在 SQL Server 大数据群集上备份事务日志?

只需为 SQL Server 主实例中的用户数据库(具体取决于恢复模式或 HA 配置)执行日志备份。 数据池数据库仅使用 SIMPLE 恢复模式。 同样适用于为 PolyBase 创建的 DW* 数据库。

如何监视分布式查询是否实际使用计算池?

可以使用为大数据群集方案增强的现有 PolyBase DMV。 有关详细信息,请参阅 “监视和排查 PolyBase 问题”。

是否可以将大数据群集资源直接通过 kubectl 配置和管理到 Kubernetes API 服务器?

虽然可以使用 Kubernetes API 或 kubectl 修改某些设置,但不支持也不推荐这样做。 必须 通过 azdata 执行所有大数据群集管理作。

如何备份存储在 HDFS 中的数据?

可以使用任何通过 WebHDFS 启用硬件级存储快照或复制/同步的解决方案。 还可以使用 azdata bdc hdfs cpazdata bdc hdfs 了解详细信息。

概念和功能

是否有办法“横向扩展”存储过程? 例如,在计算池上运行它?

目前不是。 一个选项是在 AlwaysOn 可用性组中部署 SQL Server。 然后,可以使用 可读次要副本 来运行某些进程(例如 ml 训练/评分、维护活动等)。

如何动态缩放池的 Pod?

目前不支持这种情况。

是否可以备份存储在数据池中的外部表?

数据池实例中的数据库没有任何有关外部表的元数据 , 就像任何用户数据库一样。 可以执行备份/还原,但为了避免结果不一致,必须确保 SQL 主实例 的元数据数据库中的外部表元数据同步。

数据池是否提供分片?

数据池是分布式表概念。 分片通常引用为 OLTP 概念 - 目前不支持此功能。

何时应将数据池或存储池用于原始数据存储?

保留术语池来描述同质服务或应用程序的集合。 例如,数据池是一组有状态 SQL Server 计算和存储和存储池,是一组 HDFS 和 Spark 服务。 SQL Server 主服务器是可在可用性组中配置的单个实例或多个实例。 SQL Server 主实例是 Linux 上的常规 SQL Server 实例,你可以使用 Linux 上提供的任何功能。 首先应先使用数据模型、主要对实体进行作的实体和服务/应用程序。 所有数据不必存储在 SQL Server 或 HDFS 或数据池等一个位置。 根据数据分析,可以将大部分数据存储在 HDFS 中,将数据处理为更高效的格式,并公开给其他服务。 其余数据将存储在 SQL 主实例中。

SQL Server 大数据群集是否支持基于 GPU 的深度学习库和计算(PyTorch、Keras、特定映像库等)?

目前不支持这种情况。

是否有办法为池配置多个卷声明?

每个 Pod 只能有两个持久化卷(PV)。 可以在 OS 级别抽象卷并将其用于永久性存储。 例如,可以使用多个磁盘创建 RAID 0 OS 分区,并使用本地存储预配器对永久性卷使用该分区。 目前无法为每个 Pod 使用更多 PV。 PV 映射到容器内的目录,这是固定的。 有关持久化卷的详细信息,请参阅 Kubernetes 文档中的永久性卷

如果我们配置多个提供程序和多个磁盘,HDFS 配置是否会使用所有数据卷声明进行更新?

可以将存储池配置为在部署时使用特定的存储类。 请参阅 Kubernetes 中 SQL Server 大数据群集的数据持久性

访问基于 Ceph 的存储的选项有哪些?

HDFS 分层允许我们以透明方式与基于 S3 的协议集成。 有关详细信息,请参阅 如何在大数据群集中装载 S3 进行 HDFS 分层

升级后是否保留 HDFS 中的数据?

是的,数据将保留,因为它由永久性卷提供支持,升级只是部署具有新映像的现有 Pod。

HDFS 分层如何控制缓存?

使用 HDFS 分层时,数据随大数据群集中运行的本地 HDFS 一起缓存,允许用户附加到大型数据湖,而无需引入所有数据。 分配给缓存的可配置空间量目前默认为 2%。 数据保留在缓存中,但如果超出该阈值,将被删除。 还会从湖中维护安全性,并应用所有 ACL。 有关详细信息,请参阅 在大数据群集上配置 HDFS 分层

是否可以使用 SQL Server 2019 可视化 Azure Data Lake Store Gen2? 此集成是否会处理文件夹级权限?

是的,可以使用 HDFS 分层虚拟化 ADLS Gen2 中存储的数据。 将 HDFS 分层装载到 ADLS Gen2 后,用户可以查询 HDFS 数据并对其运行 Spark 作业。 装载的存储将显示在 --mount-path 指定的位置的 HDFS for Big Data 群集中,用户可以使用该装载路径,就像使用本地存储一样。 请参阅此处的更多详细信息: 在大数据群集上配置 HDFS 分层。 有关 HDFS 层权限的详细信息,请参阅 管理 SQL Server 大数据群集的 HDFS 权限

Azure Kubernetes 服务(AKS)上主节点的默认高可用性和/或冗余设置是什么?

AKS 控制平面支持 运行时间 SLA 保证 99.95% 可用性。 AKS 群集节点(辅助角色节点)使用可用性区域,有关详细信息,请参阅 AKS 可用性区域。 可用性区域(AZ)是 Azure 中的高可用性产品/服务,可保护应用程序和数据免受数据中心故障的影响。 AKS 为不使用可用性区域的群集支持 99.9% 可用性。 有关详细信息,请参阅 Azure Kubernetes 服务 (AKS) 的 SLA

是否有办法保留 YARN 和 Spark 作业历史记录日志?

重启 sparkhead 不会导致日志丢失,这些日志位于 HDFS 中。 仍应看到 /gateway/default/sparkhistory UI 中的 Spark 历史记录日志。 对于 Yarn 容器日志,由于 Yarn RM 重启,因此在 Yarn UI 中看不到这些应用,但这些 yarn 日志仍位于 HDFS 中,可以从 Spark 历史记录服务器链接到这些应用。 应始终使用 Spark 历史记录服务器作为入口点来诊断其 Spark 应用。

是否有办法关闭任何池的缓存功能?

默认情况下,将保留总 HDFS 存储的 1 个%,用于缓存已装载的数据。 缓存是跨装载的全局设置。 目前,没有公开的方法来关闭它,但是,可以通过 hdfs-site.dfs.provided.cache.capacity.fraction 设置来配置百分比。 此设置控制群集中可用于缓存提供的存储中的数据的总容量的分数。 若要修改,请参阅 部署后如何配置大数据群集设置。 有关详细信息,请参阅 在 SQL Server 大数据群集上配置 HDFS 分层

如何在 SQL Server 2019 大数据群集中计划 SQL 存储过程?

可以在大数据群集的 SQL Server 主实例中使用 SQL Server 代理 服务。

大数据群集是否支持本机时序数据方案,例如 IoT 用例生成的方案?

目前,大数据群集中的 InfluxDB 仅用于存储在大数据群集中收集的监视数据,并且不会作为外部终结点公开。

提供的 InfluxDB 是否可以用作客户数据的时序数据库?

目前,大数据群集中的 InfluxDB 仅用于存储在大数据群集中收集的监视数据,并且不会作为外部终结点公开。

如何将数据库添加到可用性组?

在大数据群集中,HA 配置创建一个名为 containedag 的可用性组,其中包括跨副本复制的系统数据库。 由于 CREATE DATABASE 或 RESTORE 工作流而创建的数据库会自动添加到包含的 AG 并设定种子。 在 SQL Server 2019 (15.0) CU2 之前,必须连接到大数据群集中的物理实例,还原数据库并将其添加到 containedag。 有关详细信息,请参阅部署高可用性 SQL Server 大数据群集

是否可以为大数据群集中运行的组件配置核心/内存资源?

此时,可以使用sp_configure为 SQL 实例设置内存,就像在 SQL Server 中一样。 对于核心,可以使用 ALTER SERVER CONFIGURATION SET PROCESS AFFINITY。 默认情况下,容器会在主机上看到所有 CPU,目前我们没有办法使用 Kubernetes 指定资源限制。 对于计算池/数据池/存储池,可以使用 SQL Server 主实例中的 EXECUTE AT DATA_SOURCE 语句完成配置。

当其中一个 Kubernetes 工作节点关闭或中断时会发生什么情况?

未关联到相应工作节点的 Pod 将移动到 Kubernetes 群集中的另一个节点,前提是有足够的资源。 否则,Pod(s)将不可用,导致服务中断。

如果向 Kubernetes 群集添加节点,大数据群集是否会自动重新平衡?

此作仅依赖于 Kubernetes。 除了使用节点标签的 Pod 放置之外,没有其他机制可以控制从大数据群集中重新平衡 Kubernetes 资源。

从 Kubernetes 群集中删除节点时,大数据群集资源会产生什么后果?

此作等效于正在关闭的主机节点。 有一些机制可以在 Kubernetes 中使用排斥过程来协调此问题,通常遵循此机制进行升级或节点维护。 有关详细信息,请参阅 Taints 和 Tolerations 的 Kubernetes 文档。

与大数据群集捆绑的 Hadoop 是否处理数据的复制?

是的,复制因子是 HDFS 的可用配置之一。 有关详细信息,请参阅 配置永久性卷

大数据群集在功能和集成方面是否与 Synapse 重叠?

这取决于用例和要求。 除了本地支持Microsoft支持的 Spark 和 HDFS 外,大数据群集还提供完整的 SQL Server 外围应用。 大数据群集使 SQL Server 客户能够集成到分析/大数据中。 Azure Synapse 纯粹是一个分析平台,为客户提供一流的云托管服务体验,专注于横向扩展分析。 Azure Synapse 不是将作工作负荷作为其一部分的目标。 大数据群集的目标是在数据库分析方案中提供,更接近作存储。

SQL Server 是否使用 HDFS 作为 SQL Server 大数据群集中的存储?

SQL Server 实例的数据库文件不存储在 HDFS 中,但 SQL Server 可以使用外部表接口查询 HDFS。

可在每个数据池的分布式表中存储数据的可用分发选项是什么?

ROUND_ROBIN和 REPLICATED。 ROUND_ROBIN为默认值。 HASH 不可用。

大数据群集是否包含 Spark Thrift 服务器? 如果是这样,是否公开 ODBC 终结点以连接到 Hive 元存储表?

我们目前通过 Thrift 协议公开 Hive 元存储(HMS)。 我们记录了协议,但目前尚未打开 ODBC 终结点。  可以通过 Hive 元存储 HTTP 协议访问它,有关详细信息,请参阅 Hive 元存储 HTTP 协议

数据加载

是否可以将数据从 SnowFlake 引入大数据群集?

Linux 上的 SQL Server(也适用于大数据群集中的 SQL Server 主实例)不支持通用 ODBC 数据源,该数据源允许安装第三方 ODBC 驱动程序(SnowFlake、DB2、PostgreSQL 等),并查询这些驱动程序。 此功能目前仅在 Windows 上的 SQL Server 2019(15.0)中可用。 在大数据群集中,可以使用 JDBC 通过 Spark 读取数据,并使用 MSSQL Spark 连接器引入 SQL Server。

是否可以使用自定义 ODBC 数据源将数据引入大数据群集?

Linux 上的 SQL Server(也适用于大数据群集中的 SQL Server 主实例)不支持通用 ODBC 数据源,该数据源允许安装第三方 ODBC 驱动程序(SnowFlake、DB2、PostgreSQL 等)并查询这些驱动程序。

如何使用 PolyBase CTAS 将数据导入同一个表,而不是每次运行 CTAS 时都创建新表?

可以使用 INSERT..SELECT 方法避免每次都需要一个新表。

将数据加载到数据池而不是作为本地表直接加载到主实例的优点/注意事项是什么?

如果 SQL Server 主实例有足够的资源来满足分析工作负荷,则它始终是最快的选项。 如果要将执行卸载到分布式查询的其他 SQL 实例,数据池会有所帮助。 还可以使用数据池将数据从 Spark 执行程序并行引入到不同的 SQL 实例,因此从 Hadoop 分布式文件系统(HDFS)生成的大型数据集的加载性能通常优于进入单个 SQL Server 实例。 但是,这也是很难说的,因为你仍然可以在 SQL Server 中有多个表,并根据需要并行插入。 性能取决于许多因素,因此没有单一指导或建议。

如何监视数据池表中的数据分布?

可以使用 EXECUTE AT 查询 DMV,例如sys.dm_db_partition_stats来获取每个本地表中的数据。

curl 是否是将文件上传到 HDFS 的唯一选项?

否,可以使用 azdata bdc hdfs cp。 如果提供根目录,该命令将以递归方式复制整个树。 只需更改源/目标路径是什么,即可使用此命令进行复制/传出。

如何将数据加载到数据池中?

可以使用 MSSQL Spark 连接器库来帮助进行 SQL 和数据池引入。 有关引导式演练,请参阅 教程:使用 Spark 作业将数据引入 SQL Server 数据池

如果我在 (Windows) 网络路径上具有大量数据(其中包含大量文件夹/子文件夹和文本文件),如何将它们上传到大数据群集上的 HDFS?

试用 azdata bdc hdfs cp 。 如果提供根目录,该命令将以递归方式复制整个树。 只需更改源/目标路径是什么,即可使用此命令进行复制/传出。

是否可以增加已部署群集上的存储池的大小?

目前没有 azdata 执行此作的接口。 可以选择手动调整所需 PVC 的大小。 调整大小是一项复杂的作,请参阅 Kubernetes 文档中的永久性卷

数据虚拟化

何时应使用链接服务器与 PolyBase?

请参阅此处的主要差异和用例: PolyBase 常见问题解答

支持的数据虚拟化源是什么?

大数据群集支持 ODBC 源 中的数据虚拟化 - SQL Server、Oracle、MongoDB、Teradata 等。它还支持对远程存储进行分层,例如 Azure Data Lake Store Gen2S3 兼容的存储,以及 AWS S3A 和 Azure Blob 文件系统(ABFS)。

是否可以使用 PolyBase 虚拟化存储在 Azure SQL 数据库中的数据?

是的,可以使用大数据群集中的 PolyBase 访问 Azure SQL 数据库中的数据。

为什么 CREATE TABLE 语句包含键词 EXTERNAL? EXTERNAL 的作用与标准 CREATE TABLE 有何不同?

一般情况下,外部关键字表示数据不在 SQL Server 实例中。 例如,可以在 HDFS 目录的顶部定义存储池表。 数据存储在 HDFS 文件中,而不是存储在数据库文件中,但外部表提供了将 HDFS 文件查询为关系表的接口,就好像它位于数据库中一样。
访问外部数据的概念称为数据虚拟化,有关详细信息,请参阅 PolyBase 数据虚拟化简介。 有关从 HDFS 中的 CSV 文件虚拟化数据的教程,请参阅 [虚拟化存储池 大数据群集中的 CSV 数据。

使用 SQL Server 大数据群集与 SQL Server 中运行的 SQL Server 的数据虚拟化有何区别?

如何轻松判断外部表指向数据池与存储池?

可以通过查看数据源位置前缀来确定外部表的类型,例如,sqlserver://、oracle://、sqlhdfs:// sqldatapool://。

部署

我的大数据群集部署失败。 如何查看出了什么问题?

大数据群集配置中是否有可以设置的所有内容的明确列表?

可以在部署时完成的所有自定义设置都记录在 “配置群集资源和服务的部署设置”中。 有关 Spark,请参阅 在大数据群集中配置 Apache Spark 和 Apache Hadoop

能否将 SQL Server Analysis Services 与 SQL Server 大数据群集一起部署?

否。 具体而言,Linux 上的 SQL Server 不支持 SQL Server Analysis Services (SSAS),因此必须在 Windows Server 上安装 SQL Server 实例才能运行 SSAS。

大数据群集是否支持在 EKS 或 GKS 中部署?

大数据群集可以基于版本 1.13 及更高版本在任何 Kubernetes 堆栈上运行。 但是,我们没有在 EKS 或 GKS 上对大数据群集执行特定验证。

大数据群集中运行的 HDFS 和 Spark 版本是什么?

Spark 为 2.4,HDFS 为 3.2.1。 有关大数据群集中包含的开源软件的完整详细信息,请参阅 开源软件参考

如何在 Spark 中安装库和包?

可以使用示例笔记本中的步骤在作业提交时添加 包,以便在 Spark 中安装包

是否需要使用 SQL Server 2019 将 R 和 Python 用于 SQL Server 大数据群集?

从 SQL Server 2017 开始,机器学习(ML)服务(R 和 Python)可用。 ML Services 也可用于 SQL Server 大数据群集。 有关详细信息,请参阅 什么是使用 Python 和 R 的 SQL Server 机器学习服务?

许可

SQL Server 许可证如何适用于 SQL Server 大数据群集?

请参阅更详细的许可指南, 下载 PDF
有关摘要,请观看 视频 SQL Server 许可:大数据群集 |公开的数据

安全

大数据群集是否支持 Microsoft Entra ID([前 Azure Active Directory](/entra/fundamentals/new-name)?

目前不是。

是否可以使用集成身份验证连接到大数据群集主服务器?

是的,可以使用集成身份验证(使用 Active Directory)连接到各种大数据群集服务。 有关详细信息,请参阅 在 Active Directory 模式下部署 SQL Server 大数据群集。 另请参阅 大数据群集的安全概念

如何在大数据群集中为各种服务添加新用户?

在基本身份验证模式(用户名/密码)中,不支持为控制器或 Knox 网关/HDFS 终结点添加多个用户。 这些终结点支持的唯一用户是根。 对于 SQL Server,可以像添加任何其他 SQL Server 实例一样使用 Transact-SQL 添加用户。 如果为其终结点部署具有 AD 身份验证的大数据群集,则支持多个用户。 有关如何在部署时配置 AD 组的详细信息,请参阅此处。 有关详细信息,请参阅 在 Active Directory 模式下部署 SQL Server 大数据群集

要使大数据群集拉取最新的容器映像,是否可以限制出站 IP 范围?

可以查看 Azure IP 范围和服务标记 ( 公有云)中各种服务使用的 IP 地址。 请注意,这些 IP 地址会定期轮换。
为了使控制器服务从Microsoft容器注册表(MCR)拉取容器映像,需要授予对 MicrosoftContainerRegistry 节中指定的 IP 地址的访问权限。 另一个选项是设置专用 Azure 容器注册表,并将大数据群集配置为从那里拉取。 在这种情况下,需要公开 AzureContainerRegistry 部分中指定的 IP 地址。 有关如何执行此作的说明以及执行 SQL Server 大数据群集的脱机部署中提供了脚本。

是否可以在空封环境中部署大数据群集?

可以,有关更多详细信息,请参阅 执行 SQL Server 大数据群集的脱机部署

默认情况下,此功能“Azure 存储加密”是否也适用于基于 AKS 的大数据群集?

这取决于 Azure Kubernetes 服务(AKS)中的动态存储预配程序配置。 有关详细信息,请参阅此处: 有关 Azure Kubernetes 服务(AKS)中的存储和备份的最佳做法

是否可以轮换大数据群集中 SQL Server 和 HDFS 加密的密钥?

是的。 有关详细信息,请参阅大数据群集中的密钥版本

是否可以轮换自动生成的 Active Directory 对象的密码?

是的,可以使用 SQL Server 大数据群集 CU13 中引入的新功能轻松轮换 自动生成的 Active Directory 对象的 密码。 有关详细信息,请参阅 AD 密码轮换

支持

Spark 和 HDFS 是否部署在 Microsoft 支持的 SQL Server 大数据群集中?

是的,Microsoft支持大数据群集中提供的所有组件。

SparkML 和 SQL Server ML 服务的支持模型是什么?

SQL Server ML Services 支持策略与 SQL Server 的支持策略相同,只是每个主要版本都附带了新的运行时版本。 SparkML 库本身是开源软件(OSS)。 我们在大数据群集中打包了许多 OSS 组件,Microsoft支持此功能。

SQL Server 大数据群集是否支持 Red Hat Enterprise Linux 8(RHEL8)平台?

目前不是。 有关 测试的配置,请参阅此处。

工具

Azure Data Studio 中是否提供笔记本本质上是 Jupyter 笔记本?

是的,它只是在 Azure Data Studio 中显示相同的 Jupyter 内核。

“azdata”工具是否开源?

否, azdata 目前不是开源的。

培训资源

有哪些大数据群集训练选项可用?