04.千淘萬漉雖辛苦,吹盡黃沙始到金——SQL Server大數據羣集初探

04.千淘萬漉雖辛苦,吹盡黃沙始到金——SQL Server大數據羣集初探

[TOC]

上一篇終於創建好了羣集,但是如何使用呢?首選需要理解SQL Server 2019 大數據羣集的概念,從開始SQL Server 2019 預覽,SQL Server 大數據羣集允許你部署的 Kubernetes 上運行的 SQL Server、 Spark 和 HDFS 容器的可縮放羣集。 並行運行這些組件,以使您能夠讀取、 寫入,並處理從 TRANSACT-SQL 或 Spark 的大數據、 使您輕鬆合併和分析大數據大容量高價值關係數據。

SQL Server大數據羣集組件介紹

大數據羣集包含的內容:

控制器

控制器託管用於部署和管理大數據羣集的核心邏輯。 它負責與 Kubernetes,是在羣集和 HDFS 和 Spark 等其他組件的一部分的 SQL Server 實例的所有交互。 控制器服務提供了以下的核心功能:

  • 管理羣集生命週期: 羣集啓動和刪除、 更新配置
  • 管理主 SQL Server 實例
  • 管理計算、 數據和存儲池
  • 公開監視工具來觀察羣集的狀態
  • 公開來檢測和修復意外的問題的故障排除工具
  • 管理羣集安全性: 確保安全的羣集終結點、 管理用戶和角色,配置爲羣集內通信的憑據
  • 管理升級的工作流,以便安全地實現 (CTP 2.3 中不可用)
  • 管理 (CTP 2.3 中不可用) 羣集中的有狀態服務的高可用性和災難恢復

主實例

SQL Server 主實例爲羣集提供從外部訪問 TDS 端點。 應用程序或 Azure Data Studio 之類的 SQL Server 工具可以連接或到此終結點,就像您一樣的 SQL Server Management Studio 將任何其他 SQL Server 實例。

SQL Server 主實例包含用於將查詢分發中的節點上的 SQL Server 實例之間的橫向擴展查詢引擎計算池。 橫向擴展查詢引擎還提供通過 TRANSACT-SQL 訪問權限而無需任何其他配置羣集中的所有 Hive 表。

除了標準的 SQL Server 系統數據庫,SQL 主控實例還包含以下元素:

  • 元數據數據庫中承載的 HDFS 表元數據
  • 數據平面分片映射
  • 提供羣集數據平面訪問權限的外部表的詳細信息。
  • PolyBase 外部數據源和外部表定義在用戶數據庫中。

您還可以選擇將用戶數據庫添加到 SQL Server 主實例。

SQL Server 機器學習服務是一項附加功能到數據庫引擎,用於在 SQL Server 中執行 Java、 R 和 Python 代碼。 此功能基於 SQL Server 可擴展性框架,這將從核心引擎進程的外部進程中隔離出來,但完全集成,與關係數據作爲存儲過程、 包含 R 或 Python 語句的 T-SQL 腳本或 Java、 R 或包含 T-SQL 的 Python 代碼。

作爲 SQL Server 大數據羣集的一部分,機器學習服務將在默認情況下的 SQL Server 主實例上可用。 這意味着,一旦 SQL Server 主實例上啓用了外部腳本執行,將爲可能要執行 Java 中,使用 sp_execute_external_script 的 R 和 Python 腳本。

SQL Server 2019 簡化大數據來聯接到維度的數據通常存儲在企業數據庫。 大數據的值會大大提高時它不只是在手中的部分的組織,但也包含在報表、 儀表板和應用程序。 同時,數據科學家可以繼續使用 Spark/HDFS 生態系統工具和過程簡單,有權在 SQL Server 主實例和可訪問的外部數據源中的數據訪問實時_通過_SQL Server master實例。

使用 SQL Server 2019 大數據羣集時,您可以做更多與你的企業數據湖。 SQL Server 開發人員和分析師可以:

  • 生成應用程序使用來自企業 data lake 數據。
  • 使用 Transact SQL 查詢的所有數據的原因。
  • 使用 SQL Server 工具和應用程序的現有生態系統訪問和分析企業數據。
  • 減少數據移動到數據虛擬化和數據市場的需要。
  • 繼續針對大數據方案中使用 Spark。
  • 構建智能的企業應用程序使用 Spark 或 SQL Server 通過 data lake 定型的模型。
  • 操作在爲獲得最佳性能的生產數據庫中的模型。
  • Stream 數據直接到企業數據集市、 供實時分析。
  • 瀏覽交互式分析和 BI 工具直觀地使用的數據。

數據池

數據池包含一個或多個 SQL Server 數據池實例。 SQL 數據池實例提供持久的 SQL Server 存儲羣集。 數據池用於引入數據從 SQL 查詢或 Spark 作業。 若要跨大型數據集提供更好的性能,池中的數據的數據分佈到分片在成員 SQL 數據池實例。

存儲池

存儲池包含的節點包含 SQL server on Linux、 Spark 和 HDFS 的存儲。 SQL 大數據羣集中的所有存儲節點都是 HDFS 羣集的成員。

存儲節點負責:

  • 通過 Spark 的數據引入。
  • HDFS (Parquet 格式) 中的數據存儲。 HDFS 還提供了數據持久性、 HDFS 數據分散存儲在 SQL 大數據羣集中的所有存儲節點。
  • 通過 HDFS 和 SQL Server 終結點的數據訪問。

計算池

SQL Server 計算池SQL Server 2019 預覽大數據羣集中。 計算池提供大數據羣集的橫向擴展計算資源。 以下部分介紹的體系結構和計算池的功能。

計算池進行的其中一個或多個計算在 Kubernetes 中運行的 pod。 由協調的自動的創建和管理這些 pod SQL Server 主實例。 每個 pod 包含一組基本的服務和 SQL Server 數據庫引擎的實例。

計算池可以通過不同的數據源-如 HDFS、 Oracle、 MongoDB 或 Terradata 充當分佈式查詢的 PolyBase 橫向擴展組。 通過使用在 Kubernetes 中的計算 pod,大數據羣集可以自動執行創建和配置 PolyBase 橫向擴展組的計算 pod。

數據保留

永久性卷提供插件模型,在其中存儲如何提供的 Kubernetes 中的存儲是抽象的使用方式已完成。 因此,可以將高可用存儲,並將其插入 SQL Server 大數據羣集羣集。 這樣,您完全控制的存儲、 可用性和性能所需的類型。 Kubernetes 支持各種類型的存儲解決方案,包括 Azure 磁盤/文件、 NFS、 本地存儲和的詳細信息。

SQL Server 大數據羣集使用這些持久卷的方法是通過使用存儲類。 可以創建不同的存儲類的不同種類的存儲,並在大數據羣集部署時指定它們。 你可以配置要用於哪些用途 (池) 的存儲類。 SQL Server 大數據羣集創建永久性卷聲明替換爲需要永久卷每個 pod 的指定的存儲類名稱。 它然後裝載在 pod 中相應的永久性卷。

如何連接

安全的大數據羣集在 SQL Server 和 HDFS/Spark 意味着統一且一致的身份驗證和授權方案的支持。 身份驗證是驗證用戶或服務的身份並確保它們它們聲稱自己誰的過程。 授權是指授予或拒絕對基於請求用戶的標識的特定資源的訪問。 用戶標識通過身份驗證後,執行此步驟。

通過訪問控制列表 (Acl),將用戶標識與特定權限關聯通常執行大數據上下文中的授權。 HDFS 支持通過限制對服務 Api、 HDFS 文件和作業執行的訪問權限的授權。

入口

有三個入口點到大數據羣集

  • 網關 HDFS/Spark (Knox)-這是一個基於 HTTPS 的終結點。 其他終結點是通過此代理。 HDFS/Spark 網關用於訪問服務,如 webHDFS 和 Livy。 當你看到對 Knox 的引用,這是終結點。
  • 控制器終結點-用於管理羣集會公開 REST Api 的大數據羣集管理服務。 一些工具,如管理門戶中,還可以通過此終結點訪問。
  • 主實例的數據庫工具和應用程序連接到 SQL Server 主實例在羣集中的 TDS 端點。

身份驗證

在預配羣集時需要使用環境變量進行設置的最終用戶密碼數。 以下是 SQL 管理員和羣集管理員使用來訪問服務的密碼:

控制器用戶名:

  • CONTROLLER_USERNAME = < controller_username >

控制器的密碼:

  • CONTROLLER_PASSWORD = < controller_password >

SQL 主控形狀 SA 密碼:

  • MSSQL_SA_PASSWORD = < controller_sa_password >

用於訪問 HDFS/Spark 終結點的密碼:

  • KNOX_PASSWORD = < knox_password >

羣集內身份驗證

時羣集的部署,將創建的 SQL 登錄名數:

  • 由系統管理具有 sysadmin 角色的控制器 SQL 實例中創建的特殊 SQL 登錄名。 此登錄名的密碼被捕獲爲 K8s 機密。
  • 在羣集中,控制器擁有並管理的所有 SQL 實例中創建的系統管理員登錄名。 它是必需的控制器來執行管理任務,例如高可用性安裝或升級,這些實例上。 這些登錄名還用於 SQL 實例,如與數據池進行通信的 SQL 主控實例之間的羣集內部通信。

管理門戶連接

使用命令

kubectl get svc endpoint-service-proxy  -n sqlbigdata2

可獲得如下的信息,

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE endpoint-service-proxy LoadBalancer 10.0.83.18 40.83.218.65 30777:30137/TCP 2h

通過外部地址,加上端口號,訪問的地址如:https://40.83.218.65:30777/portal 類似,可以訪問到管理的門戶

12

當您首次進入門戶時,可以快速查看運行的 pod 數:

  • 控制器
  • 主實例
  • 計算池
  • 存儲池
  • 數據池

點擊左側的導航欄可以看到相關信息如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

數據庫主實例連接

運行下面的代碼,可以獲得主實例的連接地址。就可以使用SSMS或者Azure Data Studio連接使用。


kubectl get svc endpoint-master-pool -n <your-cluster-name>

輸入ip地址和ports就可以進行連接,格式是ip,ports,中間是逗號,不是冒號

 

 

數據庫的使用和管理上,和普通數據庫基本相同,需要看到的是有bigdata cluster和sql server 2019 view兩個不同的模塊,也可以看到 data services下面有hdfs的關聯的內容

網關 HDFS/Spark 連接

在大多數情況下,連接到 SQL Server 主實例可讓你可以訪問的 HDFS 和 Spark 以及通過Data Services節點。 但是,仍可以創建專用的連接到HDFS/Spark 網關必要。 以下步驟介紹如何使用 Azure Data Studio 進行連接。

  1. 從命令行中,查找使用以下命令之一 HDFS/Spark 網關的 IP 地址。

    kubectl get svc endpoint-security -n <your-cluster-name>
    
  2. 在 Azure Data Studio,按F1 > 新連接

  3. 在中連接類型,選擇SQL Server 大數據羣集。輸入host ip,這裏只需要輸入IP不需要輸入端口號。user是root 密碼是在創建過程中設置的。

  4. Connect,並Server 儀表板應顯示。

總結

這裏搞清楚如何連接環境,下一步學習如何進行使用。


作者簡介: Max Shen(阿特),爲了成爲數據專家而努力,萬一實現了呢!有多年的系統運維,數據庫運維經驗。近20年的IT從業經驗,在微軟有超過10年的工作經驗。對數據庫運維調優,排錯,有獨到能力。電話微信18628037379,[email protected]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章