Поделиться через


Знакомство с развертыванием приложений в кластерах больших данных SQL Server

Область применения: SQL Server 2019 (15.x)

Это важно

Надстройка "Кластеры больших данных Microsoft SQL Server 2019" будет прекращена. Поддержка кластеров больших данных SQL Server 2019 завершится 28 февраля 2025 г. Все существующие пользователи SQL Server 2019 с Software Assurance будут полностью поддерживаться на этой платформе, а программное обеспечение будет продолжать поддерживаться с помощью накопительных обновлений для SQL Server до этого времени. Для получения дополнительной информации см. запись блога об объявлении и параметры работы с большими данными на платформе 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 в файле spec.yaml и вызывает соответствующий обработчик во время выполнения. Обработчик среды выполнения создает приложение. Сначала создается набор реплик Kubernetes, содержащий один или несколько podов, каждый из которых содержит приложение, которое будет развернуто. Количество pod определяется параметром replicas, заданным в файле приложения spec.yaml. Каждый pod может иметь один или более пулов. Количество пулов определяется набором poolsize параметров в spec.yaml файле.

Эти параметры определяют объем запросов, которые развертывание может обрабатывать параллельно. Максимальное количество запросов в любой момент времени равно replicas, умноженному на poolsize. Если у вас есть 5 реплик и 2 пула на реплику, развертывание может обрабатывать 10 запросов параллельно. См. изображение ниже для графического представления replicas и poolsize.

Размер пула и реплики

После создания ReplicaSet и запуска pod-ов создается задание cron, если schedule был задан в spec.yaml файле. Наконец, создается служба Kubernetes, которая может использоваться для управления и запуска приложения (см. ниже).

При выполнении приложения служба Kubernetes для приложения проксирует запросы к реплике и возвращает результаты.

Рекомендации по безопасности для развертываний приложений в OpenShift

SQL Server 2019 CU5 обеспечивает поддержку развертывания BDC в Red Hat OpenShift и обновленную модель безопасности для BDC, поэтому привилегированные контейнеры больше не требуются. В дополнение к контейнерам без привилегий, контейнеры по умолчанию работают от имени некорневого пользователя для всех новых развертываний с использованием SQL Server 2019 CU5.

Во время выпуска CU5 этап установки приложений, развернутых с помощью интерфейсов развертывания приложений, по-прежнему будет выполняться от имени пользователя root. Это необходимо, так как во время установки устанавливаются дополнительные пакеты, которые будут использоваться приложением. Другой код пользователя, развернутый в рамках приложения, будет работать как пользователь с низким уровнем привилегий.

Кроме того, CAP_AUDIT_WRITE является необязательной функцией, необходимой для планирования приложений SQL Server Integration Services (SSIS) с помощью cron заданий. Если файл спецификации yaml приложения указывает расписание, приложение будет активировано с помощью задания cron, для которого требуется дополнительная возможность. Кроме того, приложение можно активировать по запросу посредством вызова веб-службы, который не требует azdata app run функциональности. Обратите внимание, что CAP_AUDIT_WRITE функциональность больше не требуется для cronjob начиная с выпуска SQL Server 2019 CU8.

Замечание

Пользовательская служба SCC в статье развертывания OpenShift не включает эту возможность, так как она не требуется по умолчанию для развертывания BDC. Чтобы включить эту возможность, необходимо сначала обновить пользовательский yaml-файл SCC, чтобы включить CAP_AUDIT_WRITE.

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

Как работать с приложением, развернутыми в кластере больших данных

Ниже приведены два основных интерфейса развертывания приложений:

Кроме того, можно выполнить приложение с помощью веб-службы RESTful. Дополнительные сведения см. в разделе "Использование приложений в кластерах больших данных".

Сценарии развертывания приложений

Развертывание приложений позволяет развертывать приложения в BDC SQL Server, предоставляя интерфейсы для создания, управления и запуска приложений.

Определение источников (R, Python, SSIS (dtexec), развертывание с помощью командной строки, Azure Data Studio или Visual Studio Code и использование их с интерактивным расписанием API RESTful.

Ниже приведены целевые сценарии развертывания приложений.

  • Разверните веб-службы Python или R в кластере больших данных для решения различных вариантов использования, таких как вывод машинного обучения, обслуживание API и т. д.
  • Создайте конечную точку вывода машинного обучения с помощью подсистемы MLeap.
  • Планирование и запуск пакетов из файлов DTSX с помощью программы dtexec для преобразования и перемещения данных.

Используйте приложение для развертывания среды выполнения Python

В развертывании приложений среда выполнения Python BDC позволяет приложению Python в кластере больших данных решать различные варианты использования, такие как вывод машинного обучения, обслуживание API и многое другое.

Среда выполнения Python 3.8 используется в среде кластеров больших данных SQL Server CU10+.

В развертывании приложения вы предоставляете сведения, spec.yaml необходимые контроллеру для развертывания приложения. Ниже приведены поля, которые можно указать:

  • name: имя приложения
  • version: версия приложения, например, например v1
  • runtime: среда выполнения развертывания приложения, ее необходимо указать следующим образом: Python
  • src: путь к приложению Python
  • 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 для развертывания приложений

В развертывании приложений среда выполнения Python BDC позволяет приложению R в кластере больших данных решать различные варианты использования, такие как вывод машинного обучения, обслуживание API и многое другое.

Среда выполнения R для развертывания приложения использует Microsoft R Open (MRO) версии 3.5.2 в кластерах больших данных SQL Server CU10+.

Как его использовать?

В развертывании приложения вы предоставляете сведения, 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

Эти ограничения соответствуют сети приложений Microsoft R, которая была прекращена 1 июля 2023 года. Дополнительные сведения и обходные пути см. в статье о выходе из сети приложений Microsoft R.

Использование среды выполнения dtexec для развертывания приложений

В развертывании приложения среда выполнения кластера больших данных включает интегрированную служебную программу dtexec от SSIS на Linux (mssql-server-is). Развертывание приложений использует программу dtexec для загрузки пакетов из файлов *.dtsx. Она поддерживает выполнение пакетов SSIS по расписанию в стиле cron или по запросу через веб-сервис.

Эта функция использует /opt/ssis/bin/dtexec /FILE из службы интеграции SQL Server 2019 на Linux. Он поддерживает формат dtsx для службы интеграции SQL Server 2019 в Linux (mssql-server-is 15.0.2). Дополнительные сведения о служебной программе dtexec см. в разделе dtexec Utility.

В развертывании приложения вы предоставляете сведения, 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

Все ограничения и известные проблемы sql Server Integration Services (SSIS) в Linux применимы в кластерах больших данных SQL Server. Вы можете узнать больше об ограничениях и известных проблемах для служб SSIS в Linux.

Использование приложения для развертывания среды выполнения MLeap

Приложение, развертывающее исполняемую среду MLeap, поддерживает MLeap Serving версии 0.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

Ограничения соответствуют концепции открытого проекта MLeap Combust на GitHub.

Дальнейшие шаги

Дополнительные сведения о создании и запуске приложений в кластерах больших данных SQL Server см. в следующих статьях:

Дополнительные сведения о кластерах больших данных SQL Server см. в следующем обзоре: