SQL Server 2019 Big Data Cluster 的介紹和應用

Photo by fabio on Unsplash

介紹

大家好,今天這篇文章要跟大家介紹 SQL Server 2019 Big Data Cluster(以下簡稱 BDC)的一些基本概念,以及最重要的是,為甚麼要使用這項技術。

圖片來源: 官方文件

擁有甚麼元件?

上面有提到 BDC 運作在 K8s 上,裡面用到 K8s Master Node、Apache Knox(Application gateway 處理 REST API)、Apache Livy(向 Spark 發出 Job)、Apache Kibana(監看叢集 logs 的面板) 等等,這些偏向底層的工具,以下則說明側重於 BDC 本身的元件。

Controller

負責控管及部署 BDC 所有元件,例如和 K8s 、SQL Servers 或是 Spark 及 HDFS 等互動。

  • 管理 SQL Server Master Instance
  • 讓監測工具能觀察叢集的歷史紀錄和狀態
  • 管理叢集的安全性

SQL Server Master Instance

它屬於 K8s 上面的一個 pod,跟一般的 SQL Server 擁有相同的功能,同時還儲存 HDFS 的 meta data 和 external table,通常要使用其他 BDC 的元件會先從它開始啟動,並把指令傳遞到 Compute pool 執行。

Compute Pool

裡面會有一至多個 SQL Server 的 pods,幫助使用者從 Master Instance 傳來的指令作分散式的運算,加塊整體運算的速度。

Storage Pool

圖片來源: 官方工作坊

Data Pool

圖片來源: 官方工作坊

App Pool

也是由一到多個 pods 組成,可以把一些訓練好的模型部署到上頭,直接服務內部或外部的 request,這個元件不是必需的,所以當你有需要的時候,再透過 azdata(一個用 Python 寫好,透過 REST API 專門用來和 BDC 互動的 CLI)動態創建 App Pod,並部署應用程式上去。

  • MLeap Serving
  • SQL Server Integration Services (SSIS)

解決了甚麼問題?

資料虛擬化

透過 Data virtualization (背後用 PolyBase 當作技術支撐),只需要在 BDC 內定義好 External Source及 External Table,不需要複製或搬移資料,就能在 BDC 內直接對下 SQL Query 拿到你想要的資料,即便它儲存在不同的資料庫和儲存體上,雲端或地端上面。譬如下圖 External Source 是 Oracle,指定好那個裡面某一個 Table 為 External Table,就能對它下 SQL Query。Data virtualization 解決以前需要複雜 ETL 才能拿到這些巨量資料的問題(資料孤島),以及資料儲存的昂貴的成本,我不需要在不同資料來源處額外複製相同、但不需要的資料。

圖片來源: 官方工作坊

管理結構和非結構化資料

傳統上結構和非結構化資料需要分開的資料庫或資料湖個別去管理,BDC 上內建 Spark、SQL Server、HDFS,在統一的 Azure Data Studio 開發工具上(類似 Jupyter notebook 的介面),選定好 Spark 或 SQL 的 kernel,就能方便地用自己習慣的方式直接對 HDFS 寫入或讀取資料。例如你可以使用 PySpark 或 T-SQL,把資料從 HDFS 裡面撈取出來處理,BDC 都會幫你做最佳化的運算,加快處理的速度。

整合 AI

企業內部要把 Machine learning 模型部署進 production 的環境是一件非常複雜的事情,BDC 可以使用內建 Spark ML 分散式訓練好模型,把這個模型直接部署到 App pool 中,讓內外部使用者透過 REST API 呼叫,或是把模型部署到 SQL Server Master Instance 當中,在處理 Transaction 的同時就能做出預測。

圖片來源: 官方文件

部署及客製化

部署的過程非常輕鬆,你可以先建立好 K8s 以後,執行類似像下面的指令

azdata bdc config init — source aks-dev-test — target custom-bdc

安全性

圖片來源: 官方文件

結論

SQL Server 2019 BDC 整合多個 Big Data 相關的 workloads 於一身,具備 end-to-end solution 的能力,從資料的產生,轉換,管理,分析,提供服務,都有相對應的功能去實現。最重要的是這樣強大的企業級 Big Data 架構,只要輕鬆透過 azdata 就能客製化配置出來,還可整合 AD 符合企業安全性的規範,並能快速落地實現。

實作

自行整理研發的工作坊: https://github.com/h164654156465/sqlserver-bdc/tree/46f677a952703de8ff5e35e23179d1403412f523

延伸閱讀

官方文件 https://docs.microsoft.com/en-us/sql/big-data-cluster/big-data-cluster-overview?view=sql-server-ver15

Essentialist. Thinker. Software engineer.

Essentialist. Thinker. Software engineer.