LoginSignup
0
0

More than 3 years have passed since last update.

SQL Server 2019 ビッグデータクラスターを AKS で使う - アプリケーションの展開

Last updated at Posted at 2019-12-18

今回は こちらの記事 で構築した SQL Server 2019 BDC にアプリケーションを展開します。

アプリケーション

SQL Server 2019 BDC では以下の種類のアプリケーションがサポートされます。

  • R/Python 関数、モデル、およびアプリ
  • MLeap Serving
  • SSIS

アプリケーションはクラスター内に展開され、外部からも内部からも利用ができます。

アプリケーションは spec.yaml という仕様ファイルで展開を定義します。

レプリカ数とプールサイズ

アプリケーションの並列処理をサポートできるよう、レプリカ数とプールサイズを指定します。

  • レプリカ数: ポッドの数
  • プールサイズ: 1 ポッドに含めるアプリケーションの数

以下の場合、1 レプリカあたり N 個のアプリケーションを含むポッドが N 個展開されるため、NxN の並列処理が可能です。

アプリケーションの展開: Python 関数

まずは一番シンプルな Python 関数を展開してみます。

1. 任意のディレクトリで以下コマンドを実行。Visual Studio Code で開く。

azdata app init --name addpy --version v1 --template python
code addpy

2. hello.py を add.py にリネームして、以下コードに差し替え。

add.py
def add(x, y):
    result = x+y
    return result
result=add(x,y)

3. spec.yaml の中身を以下に差し替え。

  • name: アプリケーションの名前
  • version: アプリケーションのバージョン
  • runtime: 言語 (R または Python)
  • src: アプリへのパス
  • entrypoint: 呼び出される関数名
  • replicas: レプリカ数
  • poolsize: プールサイズ
  • inputs: アプリで利用するインプットと型
  • output: アウトプットと型
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

4. azdata でアプリを展開。

>azdata login -n mssql-cluster 
Username: admin
Password:
>azdata app create --spec ./addpy
Application `add-app/v1` successfully created.

5. 作成状況を確認。

>azdata app list
App                                                Name     State             Version
-------------------------------------------------  -------  ----------------  ---------
https://52.xxx.xxx.xxx:30080/api/v1/app/add-app/v1  add-app  WaitingForCreate  v1

6. アプリケーション展開で作成されるポッドやサービスを確認。

>kubectl get pods
NAME              READY   STATUS    RESTARTS   AGE
app1-xcpv4        2/2     Running   0          17m
appproxy-225bf    2/2     Running   2          5h11m
compute-0-0       3/3     Running   3          5h11m
control-5fpdx     3/3     Running   3          5h26m
conaktroldb-0       2/2     Running   2          5h26m
...
>kubectl get svc app-add-app-v1 
NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
app-add-app-v1   ClusterIP   10.0.19.82   <none>        8080/TCP   18m
>kubectl get replicasets app1 -n mssql-cluster
NAME   DESIRED   CURRENT   READY   AGE
app1   1         1         1       19m

7. ポッドの詳細を確認。

  • mlserver と fluentbit から構成
  • アプリは APP_DOWNLOAD_URL から取得
>kubectl describe pod app1-xcpv4 -n mssql-cluster
Name:               app1-xcpv4
Namespace:          mssql-cluster
...
Controlled By: ReplicaSet/app1
Containers:
  mlserver:
    Image: mcr.microsoft.com/mssql/bdc/mssql-mlserver-py-runtime:2019-GDR1-ubuntu-16.04
...
    Environment:
...
      APP_DOWNLOAD_URL: https://nmnode-0-0.nmnode-0-svc:50470/webhdfs/v1/system/appdeploy/app-add-app-v1/app.zip?op=OPEN|
...
  fluentbit:
    Image: mcr.microsoft.com/mssql/bdc/mssql-monitor-fluentbit:2019-GDR1-ubuntu-16.04
...
    Requests:
      cpu:     100m
      memory:  100Mi
...
QoS Class: Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
...

8. ADS から接続して展開されたアプリの zip を確認。
image.png

9. azdata で詳細を取得。

>azdata app describe --name add-app --version v1
{
  "input_param_defs": [
    {
      "name": "x",
      "type": "int"
    },
    {
      "name": "y",
      "type": "int"
    }
  ],
  "internal_name": "app1",
  "links": {
    "app": "https://52.xxx.xxx.xxx:30080/api/v1/app/add-app/v1",
    "swagger": "https://52.xxx.xxx.xxx:30080/api/v1/app/add-app/v1/swagger.json"
  },
  "name": "add-app",
  "output_param_defs": [
    {
      "name": "result",
      "type": "int"
    }
  ],
  "state": "Ready",
  "version": "v1"
}

展開したアプリケーションの利用

次に展開したアプリケーションを使ってみます。

azdata から実行

動作しているかを確認するだけなら、 azdata を使う方法が簡単です。

>azdata app run --name add-app --version v1 --inputs x=1,y=2
{
  "changedFiles": [],
  "consoleOutput": "",
  "errorMessage": "",
  "outputFiles": {},
  "outputParameters": {
    "result": 3
  },
  "success": true
}

Open API で利用

SQL Server 2019 BDC で公開されている Cluster Management Service でトークンの取得を行い、Application Proxy でアプリを実行できます。すべてのアプリケーションは run メソッドにパラメーターを引き渡して実行します。

1. ブラウザで azdata app describe で取得した swagger エンドポイントのホスト名と IP アドレスを使って https://:/docs/swagger.json へアクセス。認証情報が聞かれるので、クラスタ構築で使ったアカウントを利用。
※証明書が聞かれた場合はキャンセルをすると認証を聞かれる。
image.png

2. 取得した json を Swagger Editor に張り付け。
image.png

3. token メソッドがあるので、Postman で token に Post 要求を実行。access_token を取得。
image.png

4. 取得したアクセストークンを使って、https://:30778/api/app/add-app/v1/run を実行。本文に入力パラメーターを指定。
image.png

Visual Studio Code (VSC) の利用

拡張機能を利用して VSC からも操作が可能です。

参照: Visual Studio Code を使用して SQL Server ビッグ データ クラスターにアプリケーションを展開する方法

拡張機能のインストール

1. 「アプリ展開の拡張機能](https://aka.ms/app-deploy-vscode) より最新の拡張をダウンロード。

2. VSC の 拡張機能より 「...」 をクリックして、「VSIX からのインストール」を選択。

3. ダウンロードした拡張機能を選択してインストール。完了すると拡張一覧に表示される。
image.png

BDC へ接続

1. 左ペインに表示される「SQL Server BDC App Explorer」をクリックして、「DEPLOYED APPS」より「Connect to Cluster」をクリック。
image.png

2. 認証モードで「Basic」を選択。
image.png

3. Host に Cluster Management Service エンドポイントのアドレスをポート付きで指定。
image.png

4. ユーザー名とパスワードを入力して、接続完了を確認。展開済のアプリが表示される。
image.png

アプリの作成と展開

VSC からアプリの作成と展開ができます。

1. 「New App Template」をクリック。
image.png

2. ウィザードに従って、アプリ名、言語をそれぞれ、「Multiplypy」、「Python」を選択。

3. フォルダを指定する画面が出るので、任意のディレクトリを指定。ファイルが展開されることを確認。

4. VSC で作成されたフォルダを開き、hello.py を multiply.py にリネーム。以下コードを張り付け。

multiply.py
def multiply(x, y):
    result = x*y
    return result
result=multiply(x,y)

5. spec.yaml を以下に差し替え。

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

6. spec.yaml 内に表示されている「Deploy App」リンクをクリック。
image.png

7. 展開が完了したら通知が表示される。
image.png

アプリのテスト実行

テンプレートで同時に作成された run-spec.yaml を使って実行できます。

1. run-spec.yaml を以下コードに差し替え。

run-spec.yaml
name: multiply-app
version: v1
inputs:
  x: 5
  y: 10

2. コード上に出ている「Run App」をクリック。
image.png

3. 結果を確認。
image.png

アプリの情報確認

VSC では Swagger やアプリの情報も簡単に表示できます。
image.png

アプリの削除

不要になったアプリは azdata や VSC から削除します。

azdata app delete -n add-app -v v1

image.png

まとめ

アプリケーションによって SQL Server 2019 BDC の機能を容易に拡張できます。また外部からアクセスする REST エンドポイントを提供できるため、システム統合に非常に便利です。Python 以外にも多くのアプリケーションをサポートしているため、是非色々試してください。

次の記事へ
目次へ戻る

参照

GitHub: sql-server-samples

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0