共用方式為


SQL Server 巨量數據叢集中的應用程式部署簡介

適用於:SQL Server 2019 (15.x)

Important

MICROSOFT SQL Server 2019 巨量數據叢集已淘汰。 SQL Server 2019 巨量數據叢集的支援已於 2025 年 2 月 28 日結束。 如需詳細資訊,請參閱 Microsoft SQL Server 平臺上的公告部落格文章和巨量數據選項。

應用程式部署可讓您在 SQL Server 巨量資料叢集上部署應用程式,方法是提供介面來建立、管理和執行應用程式。 部署在巨量數據叢集上的應用程式受益於叢集的計算能力,並可存取叢集上可用的數據。 這會增加應用程式的延展性和效能,同時管理數據所在的應用程式。 SQL Server 巨量數據叢集上支援的應用程式運行時間包括:R、Python、dtexec 和 MLeap。

下列各節說明應用程式部署的架構和功能。

應用程式部署架構

應用程式部署是由控制器和應用程式運行時間處理程式所組成。 建立應用程式時,會提供規格檔案 (spec.yaml)。 此 spec.yaml 檔案包含控制器需要知道才能成功部署應用程式的所有資訊。 以下是 spec.yaml 的範例內容:

#spec.yaml
name: add-app #name of your python script
version: v1  #version of the app
runtime: Python #the language this app uses (R or Python)
src: ./add.py #full path to the location of the app
entrypoint: add #the function that will be called upon execution
replicas: 1  #number of replicas needed
poolsize: 1  #the pool size that you need your app to scale
inputs:  #input parameters that the app expects and the type
  x: int
  y: int
output: #output parameter the app expects and the type
  result: int

控制器會檢查在檔案中指定的runtime,並呼叫對應的執行階段處理程式。 運行時間處理程式會建立應用程式。 首先,會建立包含一或多個 Pod 的 Kubernetes ReplicaSet,每個 Pod 都包含要部署的應用程式。 Pod 的數目是由 replicas 應用程式檔案中 spec.yaml 設定的參數所定義。 每個 Pod 可以有一個或多個集區。 集區數目是由 poolsize 檔案中 spec.yaml 設定的參數所定義。

這些設定會決定部署可以平行處理的要求數量。 要求數量的最大上限等於 replicas 乘以 poolsize。 如果您有5個副本且每個副本有2個集區,部署可以同時處理10個請求。 如需replicaspoolsize的圖形表示,請參閱下圖。

池大小和副本

建立 ReplicaSet 並啟動 Pod 之後,如果在 schedule 檔案中設定了 spec.yaml,那麼就會建立 cron 排程。 最後,會建立 Kubernetes Service,可用來管理和執行應用程式(請參閱下文)。

當應用程式執行時,該應用程式的 Kubernetes 服務會代理地將請求發送到一個複本,並返回結果。

OpenShift 上應用程式部署的安全性考慮

SQL Server 2019 CU5 可支援 Red Hat OpenShift 上的 BDC 部署,以及 BDC 的更新安全性模型,因此不再需要特殊許可權容器。 除了非特殊許可權之外,容器預設會針對所有使用 SQL Server 2019 CU5 的新部署,以非根使用者身分執行。

CU5 版本時,使用 應用程式部署 介面部署的應用程式設定步驟仍會以 使用者身分執行。 這是必要的,因為在設置過程中會安裝應用程式使用的額外套件。 部署為應用程式一部分的其他用戶程式代碼將會以低許可權使用者身分執行。

此外, CAP_AUDIT_WRITE 功能是允許使用cron作業排程 SQL Server Integration Services (SSIS) 應用程式所需的選擇性功能。 當應用程式的 yaml 規格檔案指定排程時,應用程式會透過cron作業觸發,這需要額外的功能。 或者,應用程式可以根據需求透過azdata app run的 Web 服務呼叫來觸發,而不需要CAP_AUDIT_WRITE該能力。 請注意,自 SQL Server 2019 CU8 版本起,不再需要 CAP_AUDIT_WRITE 功能來支持 cronjob

Note

OpenShift 部署文章中的自定義 SCC 不包含此功能,因為 BDC 的預設部署不需要此功能。 若要啟用此功能,您必須先更新自定義 SCC yaml 檔案以包含CAP_AUDIT_WRITE。

...
allowedCapabilities:
- SETUID
- SETGID
- CHOWN
- SYS_PTRACE
- AUDIT_WRITE
...

如何在巨量數據叢集內使用應用程式部署

應用程式部署的兩個主要介面包括:

您也可以使用 RESTful Web 服務來執行應用程式。 如需詳細資訊,請參閱 在巨量資料叢集上使用應用程式

應用程式部署案例

應用程式部署可讓您在 SQL Server BDC 上部署應用程式,方法是提供介面來建立、管理及執行應用程式。

識別來源 (R、Python、SSIS (dtexec)、使用命令行、Azure Data Studio 或 Visual Studio Code 進行部署,並使用互動式 RESTful API 排程加以取用。

以下是應用程式部署的目標案例:

  • 在巨量數據叢集中部署 Python 或 R Web 服務,以解決各種使用案例,例如機器學習推斷、API 服務等。
  • 使用 MLeap 引擎建立機器學習推斷端點。
  • 使用 dtexec 公用程式從 DTSX 檔案排程和執行套件,以進行資料轉換與移動。

使用 App 部署 Python 執行環境

在應用程式部署中,BDC Python 運行時間可讓巨量數據叢集中的 Python 應用程式解決各種使用案例,例如機器學習推斷、API 服務等等。

應用程式在 SQL Server 巨量資料叢集 CU10+ 上使用 Python 3.8 部署 Python 執行環境。

在應用程式部署中,spec.yaml 是您提供控制器所需的資訊,以便部署您的應用程式的地方。 以下是可以指定的欄位:

  • name:應用程式名稱
  • version:例如,應用程式版本,例如 v1
  • runtime:應用程式部署運行時間,您必須將它指定為: Python
  • src:P ython 應用程式的路徑
  • entry point:src 腳本中要針對此 Python 應用程式執行的進入點函式。

除了上述專案,您需要指定 Python 應用程式的輸入和輸出。 這會產生 spec.yaml 類似下列的檔案:

#spec.yaml
name: add-app
version: v1
runtime: Python
src: ./add.py
entrypoint: add
replicas: 1
poolsize: 1
inputs:
  x: int
  y: int
output:
  result: int

您可以建立部署在巨量資料叢集上執行的 Python 應用程式所需的基本資料夾與檔案結構:

azdata app init --template python --name hello-py --version v1

如需後續步驟,請參閱 如何在 SQL Server 巨量數據叢集上部署應用程式

應用程式部署 Python 執行時間的限制

應用程式部署的 Python 執行環境不支援排程情境。 部署 Python 應用程式並在 BDC 中執行之後,RESTful 端點會設定為接聽傳入要求。

使用應用程式部署 R 程式執行環境

在應用程式部署中,BDC Python 運行時間可讓巨量數據叢集中的 R 應用程式解決各種使用案例,例如機器學習推斷、API 服務等等。

應用程式部署的 R 運行環境在 SQL Server 大數據叢集 CU10+ 上使用 Microsoft R Open (MRO) 版本 3.5.2。

如何使用它?

在應用程式部署中,spec.yaml 是您提供控制器所需的資訊,以便部署您的應用程式的地方。 以下是可以指定的欄位:

  • name:應用程式名稱
  • version:例如,應用程式版本,例如 v1
  • runtime:應用程式部署運行時間,您必須將它指定為: R
  • src:R 應用程式的路徑
  • entry point:要執行此 R 應用程式的進入點

除了上述專案,您需要指定 R 應用程式的輸入和輸出。 這會產生 spec.yaml 類似下列的檔案:

#spec.yaml
name: roll-dice
version: v1
runtime: R
src: ./roll-dice.R
entrypoint: rollEm
replicas: 1
poolsize: 1
inputs:
  x: integer
output:
  result: data.fram

您可以使用下列命令建立部署新 R 應用程式所需的基本資料夾與檔案結構:

azdata app init --template r --name hello-r --version v1

如需後續步驟,請參閱 如何在 SQL Server 巨量數據叢集上部署應用程式

R 執行時間的限制

這些限制與 2023 年 7 月 1 日淘汰的 Microsoft R 應用程式網路一致。 如需詳細資訊和因應措施,請參閱 Microsoft R 應用程式網路淘汰

利用應用程式部署 dtexec 執行環境

在應用程式的部署中,巨量數據叢集的運行環境集成的 dtexec 公用程式來自 Linux 上的 SSIS(mssql-server-is)。 應用程式部署會使用 dtexec 公用程式從 *.dtsx 檔案載入套件。 它支援使用類似 cron 的排程方式或透過 Web 服務要求隨選執行 SSIS 套件。

此功能使用 Linux 上的 SQL Server 2019 整合服務。 它支援 Linux 上的 SQL Server 2019 Integration Service 的 dtsx 格式(mssql-server-is 15.0.2)。 若要深入瞭解 dtexec 公用程式,請參閱 dtexec 公用程式

在應用程式部署中,spec.yaml 是您提供控制器所需的資訊,以便部署您的應用程式的地方。 以下是可以指定的欄位:

  • name:應用程式 name

  • version:例如,應用程式版本,例如 v1

  • runtime:應用程式部署運行時間,若要執行 dtexec 公用程式,您必須將其指定為: SSIS

  • entrypoint:指定一個入口點,通常在我們的情況下,這是您的 .dtsx 檔案。

  • options:指定 /opt/ssis/bin/dtexec /FILE 的其他選項,例如要使用連接字串連接到資料庫時,遵循下列模式:

    /REP V /CONN "sqldatabasename"\;"\"Data Source=xx;User ID=xx;Password=<password>\""
    

    如需語法的詳細資訊,請參閱 dtexec 公用程式

  • schedule:指定作業需要執行的頻率,例如,使用 cron 運算式指定此值指定為 “*/1 * *” ,這表示作業是以分鐘為單位執行。

您可以使用下列命令建立部署新 SSIS 應用程式所需的基本資料夾與檔案結構:

azdata app init --name hello-is –version v1 --template ssis                                 

這會產生一個 spec.yaml 檔案到以下位置:

#spec.yaml
entrypoint: ./hello.dtsx
name: hello-is
options: /REP V
poolsize: 2
replicas: 2
runtime: SSIS
schedule: '*/2 * * * *'
version: v1

此範例也會建立範例 hello.dtsx 套件。

您的所有應用程式檔案都位於與 相同的 spec.yaml目錄中。 spec.yaml必須位於應用程式原始程式碼目錄的根層級,包括 dtsx 檔案。

如需後續步驟,請參閱 如何在 SQL Server 巨量數據叢集上部署應用程式

dtexec 公用程式運行時間的限制

Linux 上 SQL Server Integration Services (SSIS) 的所有限制和已知問題都適用於 SQL Server 巨量數據叢集。 您可以從 Linux 上的 SSIS 限制和已知問題深入瞭解。

使用應用程式部署 MLeap 執行環境

部署 MLeap 運行時間的應用程式支援 MLeap Service v0.13.0。

在應用程式部署中,spec.yaml 是您提供控制器所需的資訊,以便部署您的應用程式的地方。 以下是可以指定的欄位:

  • name:應用程式名稱
  • version:例如,應用程式版本,例如 v1
  • runtime:應用程式部署運行時間,您必須將它指定為: Mleap

除了上述內容,您還需要指定 bundleFileName MLeap 應用程式的。 這會產生 spec.yaml 類似下列的檔案:

#spec.yaml
name: mleap-census
version: v1
runtime: Mleap
bundleFileName: census-bundle.zip
replicas: 1

您可以使用下列命令建立部署新 MLeap 應用程式所需的基本資料夾與檔案結構:

azdata app init --template mleap --name hello-mleap --version v1

如需後續步驟,請參閱 如何在 SQL Server 巨量數據叢集上部署應用程式

MLeap 運行時間的限制

這些限制符合 GitHub 上 MLeap 開放原始碼專案 Combust 的願景。

Next steps

若要深入瞭解如何在 SQL Server 巨量數據叢集上建立和執行應用程式,請參閱下列各項:

若要深入瞭解 SQL Server 巨量數據叢集,請參閱下列概觀: