SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Synapse Analytics の特徴って何なんだろう??

without comments

Synapse Analytics については、以前 SQL Data Warehouse (SQLDW) と呼ばれていた部分のみしかきちんと理解できておらず、全体像がぼんやりとしたままでした。
Azure Synapse Analytics Overview がとても素晴らしくまとまっていました。
旧 SQL DW 部分以外は実際には触れていないので、理解に誤りがある個所もあると思いますが、このスライドを見ながら特徴を勉強してみようかと。

はじめに

サービスの特徴としては、Azure Synapse Analytics に次のように記載されています。

Azure Synapse は、制限のない分析サービスで、エンタープライズ データ ウェアハウスとビッグ データ分析がまとめられています。サーバーレスのオンデマンドまたはプロビジョニング済みリソースのいずれかを使用して、自分の条件でデータを自在かつ大規模にクエリすることができます。Azure Synapse では、これら 2 つの機能が 1 つのエクスペリエンスに統合され、データの取り込み、準備、管理、提供を行い、BI や機械学習でのニーズにすばやく対応することができます。

Synapse Analytics は SQL DW が進化したものではありますが、SQL DW は Synapse Analytics では構成要素の一部となります。
次の画像な Synapse Analytics の機能を示したものとなります。

image

現時点で「一般提供」と書かれている部分が、SQL DW でサポートされていた機能となり、「プレビュー」と書かれていた機能が Synapse Analytics になって追加された機能になります。
以前の「SQL DW」については Synapse Analytics には「プロビジョニング済みコンピューティング」又は「SQL Analytics Pool」と呼ばれる機能となり、RDBMS をベースとしたデータ分析基盤となります。
それでは冒頭に紹介したスライドの内容を見ながら、Synapse Analytics の特徴を見ていきましょう。

Azure Synapse Analytics の機能構成

次の画像はモダン DW として紹介されているシステム構成となります。

image

Azure ではデータ取り扱う様々なサービスが提供されており、ETL / データ分析 / データストア / データ可視化を PaaS として利用することができるようになっています。
Synapse Analytics はこれらのデータサービスを統合して、取り扱うことができるサービスとなります。

image

実際には次のような機能構成となります。

image

従来の SQL DW は「RDBMS に格納されたデータを SQL を使用して分析を行う」サービスでした。
Synapse Analytics では、データ分析の手法やデータストアが大きく拡張されており、複数の言語によりデータの分析ができるようになっています。
また、利用形態も従来の「プロビジョニング済みコンピューティング」だけでなく、「オンデマンド」の利用もできるようになっており、利用方法の柔軟性も向上しています。
(従来の SQL DW ではプロビジョニング済みコンピューティングを「一時停止」することができていましたが、これはオンデマンド利用とは、異なる概念となります)
それでは、各機能の構成要素についても見ていきましょう。

SQL Analytics

Synapse Analytics では分析を行うためのランタイムは「SQL」「Spark」の 2 種類を使用することができ、SQL を分析ラインタイムとして使用するものが SQL Analytics となり、言語としては SQL を使用してデータの操作を行います。

image

SQL を使用して分析を行うための機能である SQL Analytics ですが、利用形態としてはプロビジョニング済みの SQL Analytics Pool と、SQL Analytics オンデマンドという 2 種類の利用方法があります。

image

SQL Analytics Pool

この部分は従来の SQL DW と呼ばれていた機能となります。
MPP 型のデータを分散して格納する RDBMS の Data Warehouse の提供が行われ、T-SQL を使用してデータの分析を行うことができます。
データの格納場所については、RDBMS だけでなく、Azure BLOB ストレージ / Azure Data Lake Storage Gen2 に格納されたデータを分析対象とすることも可能です。

image

従来の SQLDW の機能についても、今後のロードマップでも機能拡張がアナウンスされていますので、この部分は機能の進化が止まるということはなく、進化を続けるサービスとなっています。

SQL Analytics オンデマンド

この利用方法は Synapse Analytics になって、新しく提供される利用形態となります。
従来の SQL DW である、SQL Analytics Pool は、一時停止は可能ですが指定した DWU のコンピューティングリソースと、データストアとしての RDBMS が提供されるサービスとなっていました。
SQL Analytics Pool で「Azure BLOB ストレージ / Azure Data Lake Storage Gen2 (ADL Gen2) に格納されたデータを分析対象とすることも可能」ということを記載しました。
SQL Analytics Pool では、PolyBase により、Azure のストレージサービス上のデータを参照することができます。
(PolyBase で毎回データを参照するより、RDBMS に取り込んでクエリを実行した方が再利用効率は高いため、SQL Analytics Pool では、ストレージは一時的なデータ格納領域として使用するケースが多いかと思いますが)
データ分析の利用ケースとしては、RDBMS は不要であり、ストレージサービス上に格納されているデータの分析の実ができればよいというケースもあるのではないでしょうか。
そのような場合は、SQL Analytics オンデマンドを有効に活用することができます。
SQL Analytics では、ADL Gen2 に格納されているデータを分析するためのクエリプロセッサ (Distributed Query Processor : DQP) をサーバーレスで利用することができます。
(初回のクエリ実行についてはウォームアップのため 20~25 秒程度の時間がかかるようです)

image

ADL Gen2 に格納されているデータ (CSV / JSON / Parquet) を SQL Analytics オンデマンドのクエリプロセッサを介して、SQL によりアクセスを行うことができます。
Databricks や HDInsight とデータ同期ができるようになっているようで、それぞれの Spark で作成しているテーブル定義の同期を行うことができるようです。
(これらのテーブル定義の同期により、Databricks や HDInsight が参照しているデータを透過的に Synapse Analytics で使用することができるのかもしれませんね。Spark Table を作成という記述があるので、この部分がテーブルの定義同期を指しているのかもしれません。)

これは、SQL Analytics オンデマンド内からしかアクセスできない SQL というわけではなく、Power BI / Azure Data Studio / SSMS というような T-SQL を実行することができるツールからのアクセスもサポートしているため、従来の SQL Server の T-SQL の知識を活かしながらデータの分析を行うことが可能となっています。
データのアクセス方法は PolyBase によるアクセスと似たような形で実施することができます。
(PolyBase を使用しているわけではないようですが、PolyBase で使用できていた各種機能はサポートされるようです)
SQL Analytics オンデマンドによる外部データの分析は「OPENROWSET 関数」を使用して次のように行うことができます。

image

FROM 句に、OPENROWSET 関数でADL GEN2 上の分析対象のファイルまたはディレクトリを指定することで、そのデータをテーブルとして取り扱うことができるようになります。
ビューを作成することで、テーブルの再利用性を効率化することや、PolyBase のように外部データソースと外部テーブルを作成することで、CTAS ができるようになっており、データの加工についてもクエリベースで実行できるようになっています。
RDBMS のストレージを持たず、ADL Gen2 のデータを分析するためのオンデマンドなクエリエンジンの利用というシナリオを新しく使用することができるようになります。

Spark

SQL DW では「RDBMS のデータを SQL によって操作」することが代表的な使い方でした。
Synapse Analytics では、分析のランタイムとして Spark も提供され、SQL ではなく .NET (.NET Spark (C#)) / PySpark / Scala / Spark SQL / Java / Rをデータ操作のための言語として使用したデータ分析もできるようになりました。
この部分は冒頭で紹介した機能の中の「Spark 統合」と記載されている部分となるのではないでしょうか。

image

ここで動作する Spark は HDInsight や Databricks とは異なる実行環境となっているようです。
機能や性能面で、Synapse Analytics の Spark ではなく、既存の Azure の Spark の実行基盤を使用するということもあるのかもしれませんね。

Spark Pool

Snapse Analytics の Spark については、Spark Pool の作成を行います。

image

Spark Pool については、オンデマンドでの利用は無いようですが、一定時間のアイドルが続いた場合は自動停止する機能があり、課金を抑える仕組みは導入されているようです。
(Spark については、Provisioned Spark のみが提供されるようです)
今まで、SQL DW に対して Spark によるアクセスを行う場合、HDInsight や Databricks を使用することがあるのかと思います。
これらの Spark の実行環境は Azure 上のデータ操作を効率的に実行するためのカスタマイズは行われていますが、SQL DW へのアクセスに特化したものではなかったのではないでしょうか。
Synapse Analytics では、Synapse のリソースを最大限活用することができる形で統合を行った Spark を使用することができるようになります。
次のスライドの内容は、Synapse に統合された Spark 固有のアクセス方法を示すのではないでしょうか。

image
image

SQL DW では、PolyBase の機能を効果的に使用することで効率的に外部データにアクセスすることができます。
Synapse に統合された Spark の JDBC では、PolyBase を効率的に活用しながら並列でのデータ操作が可能となります。
コードから、SQL Pool 内のデータに対してのアクセスする際にもシンプルな記述となっており、Synapse Analytics 内のデータを効率的に取り扱うための対応が行われていることが確認できます。
Synase Analytics でサポートされているクエリオプションについては次のような記載があります。

image

Provisoned Spark で実行可能なクエリのオプションについては、ADLS Gen2 となっているため、RDBMS 部分へのアクセスについては、JDBC 経由で接続文字列を指定したクエリ実行になるのかどうかについては少し気になりますね。

管理 / 操作用ツール

Synapse Analytics では、管理用のブレードや操作用のツールが提供されます。

Synapse workspace

Synapse workspace は、Synapse Analytics の管理を行うための Azure Portal のブレードとなります。

image

SQL Pool や Spark Pool の作成やメトリクスの確認などを行うことができるようです。

Synapse Analytics Studio

Synapse Analytics Studio は Synapse Analtyics 上のデータを操作するためのツールを提供するためのブラウザベースの開発ツールとなります。

image

データの収集 / 参照 / 分析 / 可視化を Synapse Analytics Studio 上で実行することができます。

image

この画面では、次のような処理の作成と実行を行うことができます。
Spark については、Synapse Analytics Studio からノートブックで操作ができるようになっています。

image

データの操作だけでなく、データの管理を行うこともでき、ADL Gen 2 への接続 / データベースへの接続 (SQL Pool のデータ / SQL オンデマンドに作成したテーブル /? Spark で作成したテーブル) にもアクセスができるようになっており、Synapse Analytics で使用するデータを一元的に管理をすることができるようです。

image
image

Azure Data Factory で利用可能な Data Flow の ETL も Synapse Analytics Studio 上で作成することができ、ADF の ETL 機能の一部を統合された形で利用できるようです。
ADF の Data Flow は軽く触っただけなので、Synapse 上でのスキル活用を意識した場合は Data Flow の ETL / ELT の実装ができるようになっているとよさそうですね。
Azure Data Factory のパイプラインを Synapse Analytics にインポートすることもできるようなので、最終的にどのようなパイプラインが利用できるのかは把握できていないのですが、ADF のスキルを活かすことができるのは間違いなさそうです。

image

Power BI のワークスペースを作成 / 既存のワークスペースをリンクして、Synapse Analytics Studio 上でデータの可視化をすることもできるようで、同一のツール内で様々な処理ができます。
異なる処理を行うためにポータルを切り替えながら操作をする必要がないのは、思考の連続性が保てうれしいですね。

imageimage

 

サービスの接続

Synapse Analytics 上での Power BI の利用もサービスの接続の一環となると思いますが、Azure ML を接続するということもできるようです。

image

Spark ML を使用した機械学習によるデータ分析も可能ですが、Azure ML ワークスペースを接続させることで、Azure ML ノートブックから、Synapse Spark のコンピューティングリソースを利用してデータの準備をするということも可能となっているようです。

ざっくりとですが SlideShare で公開されている情報をしながら Synapse Analytics の特徴をまとめてみました。
実際に触りながら出ないと各利用形態がどのように連携することができるのかを、正確に把握することは難しいですが、Azure のデータ分析の方法として興味深い内容が多かったです。

Written by Masayuki.Ozawa

2月 25th, 2020 at 11:01 pm

Leave a Reply