如何在 SQL Server 大数据群集上部署应用

适用范围:SQL Server 2019 (15.x)

重要

Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 具有软件保障的 SQL Server 2019 的所有现有用户都将在平台上获得完全支持,在此之前,该软件将继续通过 SQL Server 累积更新进行维护。 有关详细信息,请参阅公告博客文章Microsoft SQL Server 平台上的大数据选项

部署在 SQL Server 大数据群集上的应用程序不仅可从群集的许多优势(例如其计算能力)中受益,还可访问群集上提供的大量数据。 这样可以显著地提高性能,因为应用与数据位于同一个群集中。

应用程序是使用 Azure Data CLI (azdata) 进行部署和管理的。

本文提供了有关如何在 SQL Server 大数据群集内从命令行部署应用的示例。 要了解如何在 Visual Studio Code 中使用它,请参阅 Visual Studio Code 扩展

先决条件

功能

在 SQL Server 2019 中,可以创建、删除、描述、初始化、列出运行和更新应用程序。 下表介绍了可以与 azdata 一起使用的应用程序部署命令。

Command 说明
azdata login 登录到 SQL Server 大数据群集
azdata app create 创建应用程序。
azdata app delete 删除应用程序。
azdata app describe 描述应用程序。
azdata app init 启动新应用程序主干。
azdata app list 列出应用程序。
azdata app run 运行应用程序。
azdata app update 更新应用程序。

可以获取有关 --help 参数的帮助,如以下示例中所示:

azdata app create --help

下面各部分详细说明了这些参数。

登录

在部署应用程序或与应用程序交互之前,请先通过 azdata login 命令登录到 SQL Server 大数据群集。 指定 controller-svc-external 服务的外部 IP 地址(例如:https://ip-address:30080)以及群集的用户名和密码。

azdata login --controller-endpoint https://<ip-address-of-controller-svc-external>:30080 --controller-username <user-name>

Azure Kubernetes 服务 (AKS)

如果使用 AKS,则需要运行以下命令以获取 controller-svc-external 服务的 IP 地址,方法是在 bash 或 cmd 窗口中运行以下命令:

kubectl get svc controller-svc-external -n <name of your big data cluster>

使用 kubeadm 创建的 Kubernetes 群集

运行以下命令以获取用于登录到群集的 IP 地址

kubectl get node --selector='node-role.kubernetes.io/master'

创建应用主干

azdata app init 命令为基架提供部署应用程序所需的相关生成工件。 下面的示例创建 add-app,可通过运行以下命令来执行此操作。

azdata app init --name add-app --version v1 --template python

这将创建一个名为 hello 的文件夹。 可以使用 cd 命令进入目录并检查文件夹中生成的文件。 spec.yaml 定义应用,如名称、版本和源代码。 可以编辑该规范以更改名称、版本、输入和输出。

下面是将在文件夹中看到的 init 命令的示例输出

add-app.py
run-spec.yaml
spec.yaml

创建应用

若要创建应用程序,请结合使用 Azure Data CLI (azdata) 和 app create 命令。 这些文件位于创建应用的计算机本地。

使用以下语法在大数据群集中创建新应用:

azdata app create --spec <directory containing spec file>

以下命令举例说明了此命令的外观:

azdata app create --spec ./addpy

这假设你的应用程序存储在 addpy 文件夹中。 此文件夹还应包含应用程序的规范文件 spec.yaml。 有关详细信息,请参阅 spec.yaml 文件的“应用程序部署”页

要部署此应用示例应用,请在名为 addpy 的目录中创建以下文件:

  • add.py。 将以下 Python 代码复制到此文件中:
    #add.py
    def add(x, y):
      result = x+y
      return result
    result=add(x,y)
    
  • 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
    

然后,运行以下命令:

azdata app create --spec ./addpy

可以使用 list 命令检查是否部署了该应用:

azdata app list

如果部署未完成,应会看到 state 显示为 WaitingforCreate,如以下示例所示:

[
  {
    "name": "add-app",
    "state": "WaitingforCreate",
    "version": "v1"
  }
]

部署成功后,应会看到 state 更改为 Ready 状态:

[
  {
    "name": "add-app",
    "state": "Ready",
    "version": "v1"
  }
]

列出应用

可以列出通过 app list 命令成功创建的任何应用。

以下命令列出了大数据群集中所有可用的应用程序:

azdata app list

如果指定名称和版本,则会列出该特定应用及其状态(“正在创建”或“就绪”):

azdata app list --name <app_name> --version <app_version>

下面的示例对此命令进行了演示:

azdata app list --name add-app --version v1

应会看到与如下示例类似的输出:

[
  {
    "name": "add-app",
    "state": "Ready",
    "version": "v1"
  }
]

删除应用

要从大数据群集中删除应用,请使用以下语法:

azdata app delete --name add-app --version v1

如需了解如何将在 SQL Server 大数据群集 上部署的应用集成到自己的应用程序中,请参阅在大数据群集上运行应用程序在大数据群集上使用应用程序,以获取详细信息。 有关其他示例,请参阅应用部署示例

有关 SQL Server 大数据群集的详细信息,请参阅 SQL Server 2019 大数据群集简介