SQL Server 巨量資料叢集常見問題

本文回答有關 SQL Server 巨量資料叢集概念、功能、部署、支援性和工具的常見問題。

最佳做法

關於檔案位置的建議最佳做法為何?

相較於在 Windows 或 Linux 上的裸機電腦上設定 SQL Server 彈性較低。 在 Kubernetes 環境中,這些成品會抽象化且須為可攜式。 目前,為每個 Pod 提供 2 個可設定的永續性磁碟區 (PV),分別用於資料和記錄。 如需詳細資訊,請參閱在 Kubernetes 中使用 SQL Server 巨量資料叢集的資料持續性

我需要在 SQL Server 巨量資料叢集上備份交易記錄嗎?

您只需為 SQL Server 主要執行個體中的使用者資料庫執行記錄備份 (根據復原模式或 HA 設定)。 資料集區資料庫只會使用簡單復原模式。 同樣適用於為 PolyBase 建立的 DW* 資料庫。

如何監視分散式查詢是否實際使用計算集區?

您可以使用針對巨量資料叢集案例增強的現有 PolyBase DMV。 如需詳細資訊,請參閱監視 PolyBase 並進行疑難排解

是否可以透過對 Kubernetes API 伺服器執行 kubectl 來直接設定和管理巨量資料叢集資源?

雖然您可以使用 Kubernetes API 或 kubectl 修改部分設定,但不支援也不建議這麼做。 您必須透過 azdata 執行所有巨量資料叢集管理作業。

如何備份儲存在 HDFS 中的資料?

您可以使用任何支援硬體層級儲存體快照集的解決方案,或是透過 webHDFS 複製/同步處理。 您也可以使用 azdata bdc hdfs cp,如需詳細資訊,請參閱 azdata bdc hdfs

概念和功能

是否有方法可以「擴增」預存程序? 例如讓它在計算集區上執行?

目前沒有。 可選擇在 Always On 可用性群組中部署 SQL Server。 接著您可以使用可讀取次要複本來執行某些程序 (例如機器學習定型/評分、維護活動等)。

如何動態調整集區的 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 作業。 掛接的儲存體會出現在適用於巨量資料叢集的 HDFS 中 (--mount-path 所指定的位置),而且使用者可以使用該掛接路徑,如同使用本機儲存體一樣。 如需詳細資訊,請參閱:在巨量資料叢集上設定 HDFS 階層處理。 如需 HDFS 階層權限的詳細資訊,請參閱管理 SQL Server 巨量資料叢集的 HDFS 權限

Azure Kubernetes Service (AKS) 上主要節點的預設高可用性和/或備援設定為何?

AKS 控制平面支援運作時間 SLA 保證 99.95% 可用性。 AKS 叢集節點 (背景工作角色節點) 會使用可用性區域,如需詳細資訊,請參閱 AKS 可用性區域。 可用性區域 (AZ) 是 Azure 的高可用性供應項目,可保護應用程式和資料不受資料中心失敗影響。 AKS 對於未使用可用性區域的叢集支援 99.9% 的可用性。 如需詳細資訊,請參閱 Azure Kubernetes Service (AKS) 的 SLA

是否有方法可以保留 YARN 和 Spark 作業記錄?

重新啟動 sparkhead 不會造成記錄遺失,這些記錄位於 HDFS 中。 您應該還是會看在 /gateway/default/sparkhistory UI 中到 Spark 歷程記錄。 若為 Yarn 容器記錄,您不會在 Yarn UI 中看到這些應用程式,因為 Yarn RM 會重新啟動,但這些 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 Agent 服務。

巨量資料叢集是否支援原生時間序列資料案例,例如 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 而造成中斷。

如果將節點新增至 Kubernetes 叢集,巨量資料叢集是否會自動重新平衡?

此動作僅取決於 Kubernetes。 除了使用節點標籤放置 Pod 之外,沒有其他機制可從巨量資料叢集中控制重新平衡 Kubernetes 資源。

當我從 Kubernetes 叢集移除節點時,巨量資料叢集資源會怎麼樣?

此動作相當於關閉主機節點。 有一些機制可在 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 File System (ABFS)。

我可以使用 PolyBase 將儲存在 Azure SQL資料庫中的資料虛擬化嗎?

是,您可以在巨量資料叢集中使用 PolyBase 來存取 Azure SQL Database 中的資料。

為什麼 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 巨量資料叢集一起部署 SQL Server Analysis Services?

不會。 具體而言,Linux 上的 SQL Server 不支援SQL Server Analysis Services (SSAS),因此您必須在 Windows 伺服器上安裝 SQL Server 執行個體,才能執行 SSAS。

是否支援在 EKS 或 GKS 中部署巨量資料叢集?

只要使用 1.13 和更新版本,巨量資料叢集可以在任何 Kubernetes 堆疊上執行。 不過,我們尚未在 EKS 或 GKS 上執行巨量資料叢集的特定驗證。

在巨量資料叢集內執行的 HDFS 和 Spark 版本是什麼?

Spark 為 2.4,HDFS 為 3.2.1。 如需巨量資料叢集中所包含開放原始碼軟體的完整詳細資料,請參閱開放原始碼軟體參考

如何在 Spark 中安裝程式庫和套件?

我需要為了 SQL Server 巨量資料叢集使用 SQL Server 2019 以使用 R 和 Python 嗎?

從 2017 SQL Server 開始提供機器學習 (ML) 服務 (R 和 Python)。 ML 服務也適用於 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 巨量資料叢集。 另請參閱 SQL Server 巨量資料叢集的安全性概念

如何為巨量資料叢集中的各種服務新增使用者?

在基本驗證模式 (使用者名稱/密碼) 中,不支援為控制器或 Knox 閘道/HDFS 端點新增多個使用者。 這些端點只支援 root 使用者。 針對 SQL Server,您可以使用 Transact-SQL 新增使用者,就像任何其他 SQL Server 執行個體一樣。 如果您為其端點部署具有 AD 驗證的巨量資料叢集,則支援多個使用者。 如需如何在部署時設定 AD 群組的詳細資訊,請參閱這裡。 如需詳細資訊,請參閱以 Active Directory 模式部署 SQL Server 巨量資料叢集

若要讓巨量資料叢集提取最新的容器映像,我可以限制輸出 IP 範圍嗎?

您可以瀏覽 Azure IP 範圍和服務標籤 – 公用雲端中各種服務所使用的 IP 位址。 請注意,這些 IP 位址會定期輪替。
為了讓控制器服務從 Microsoft Container Registry (MCR) 提取容器映像,您必須為 MicrosoftContainerRegistry 區段中指定的 IP 位址授與存取權限。 另一個選項是設定私人 Azure Container Registry,並將巨量資料叢集設定為從該處提取。 在此情況下,您必須公開 AzureContainerRegistry 區段中指定的 IP 位址。 執行 SQL Server 巨量資料叢集的離線部署中,提供如何執行此操作和指令碼的說明。

是否可以在實體隔離斷網的環境中部署巨量資料叢集?

可以,如需詳細資訊,請參閱執行 SQL Server 巨量資料叢集的離線部署

預設上「Azure 儲存體加密」功能也適用於 AKS 型巨量資料叢集嗎?

這取決於 Azure Kubernetes Service (AKS) 中的動態儲存體佈建程式設定。 如需詳細資訊,請參閱:在 Azure Kubernetes Service (AKS) 中進行儲存和備份的最佳做法

我可以輪替巨量資料叢集中 SQL Server 和 HDFS 加密的金鑰嗎?

是的。 如需詳細資訊,請參閱巨量資料叢集中的金鑰版本

我可以輪替自動產生的 Active Directory 物件密碼嗎?

可以,您可以使用 SQL Server 巨量資料叢集 CU13 中引進的新功能,輕鬆輪替自動產生的 Active Directory 物件密碼。 如需詳細資訊,請參閱 AD 密碼輪替

支援

Microsoft 是否支援在 SQL Server 巨量資料叢集中部署 Spark 和 HDFS?

是,Microsoft 支援巨量資料叢集內隨附的所有元件。

SparkML 和 SQL Server ML 服務的支援模型為何?

SQL Server ML 服務支援原則與 SQL Server 相同,不同之處在於每個主要版本都隨附新的執行階段版本。 SparkML 程式庫本身是開放原始碼軟體 (OSS)。 我們會封裝巨量資料叢集中的許多 OSS 元件,且 Microsoft 支援此功能。

Red Hat Enterprise Linux 8 (RHEL8) 支援SQL Server 巨量資料叢集的平台嗎?

目前沒有。 如需已測試組態,請參閱這裡。

工具

Azure Data Studio 中的筆記本基本上就是 Jupyter Notebook 嗎?

是,與剛在 Azure Data Studio 中推出的 Jupyter 核心相同。

`azdata` 工具是否開放原始碼嗎?

否,azdata 目前不是開放原始碼。

訓練資源

有哪些巨量資料叢集定型選項可使用?