Azure Synapse Analyticsはじめの一歩

"Azure Synapse Analyticsはじめの一歩" (2021年3月5日 掲載)

ソフトバンク株式会社のエキスパートSE 葉山恵一です。
法人のお客さま向けに各種クラウドの提案、設計、構築を担当しています。

今回はパブリッククラウド移行理由の一つになることが多い、「データ活用」の一翼を担うAzureサービス「Azure Synapse Analytics」について、サービスの概要やマイクロソフト社のドキュメントを利用した簡単な環境構築方法について触れ、初めの一歩をご支援したいと思います。

はじめに

パブリッククラウドへの移行を検討する理由として「データ活用」を挙げられる企業や担当者の方が年々増えてきていると感じます。
この分野では Google Cloudの「BigQuery」が有名ですが、Azureでは「Azure Synapse Analytics」、AWSでは「RedShift」など、各社データ活用のためのサービスを提供しています。

""

 ビジネスインテリジェンス(BI)やビジネスアナリティクス(BA)という言葉は、一昔前まではバズワードでしたが、現在はプラットフォーム選択の前提条件として当然考慮すべきものといったところまで意識が高まってきていると感じます。
 実際 BI,BAレベルでのデータ活用は進んでいなくても、将来的なBI,BAあるいは機械学習を目指したデータ集約基盤の構築、あるいは単にログ一元化というニーズでさえ、クラウドサービスのデータレイクやデータウェアハウス(DWH)サービスの利用を前提に、各社パブリッククラウドを比較検討するというケースが多くなっています。
 また、ここで重要なのは、「利用開始時点で全てを計画する必要がない」という点です。
データレイクもしくはデータウェアハウス(DWH)としてパブリッククラウドサービスを選択することで、必要なタイミングでこうしたデータ利活用をすぐに計画・実行可能なことこそ、パブリッククラウドサービスが提供するベネフィットです。

 今回はAzureサービスである「Azure Synapse Analytics」に焦点を当て、実際にその機能に触れてみたいと思います。

Azure Synapse Analyticsとは

Azure Synapse Analyticsは、データ統合、エンタープライズデータウェアハウス、ビッグデータ分析が一つになった制限のない分析サービスです。

データ活用では大きく以下3点が必要です。
""
 データ収集では、各エンドポイントからのデータ集約はもちろんのこと、データの正規化なども考慮する必要があります。

 データ保管は無限にスケールが可能なストレージ空間や、用途によって使い分けが可能な複数パフォーマンスプランの用意、さらに高いセキュリティが確保されていなければいけません。
セキュリティ面では、一般的なIPファイアウォール規制の他に、PrivateLink接続でのAzure Vnet接続や、データ流出防止など、さまざまなアプローチが用意されています。
本稿では詳細な説明をしませんが、興味のある方はリンク先情報をご参照ください。

 データ分析では単純なデータ探索のみではなく、複数データソース間の複雑な連携や機械学習、ライブデータからのリアルタイム分析などが求められます。
「Azure Synapse Analytics」の前身は SQL Data Warehouse (SQLDW)というサービスでしたが、これはカラム型ストレージを採用した RDBMSを専有し、SQL分析が提供されるサービスでした。
分析手法としてビッグデータ処理に特化して作成されたオープンソースのフレームワークであるApache Sparkが提供されたり、保管場所としてビッグデータ分析専用のBlobであData Lake Storage Gen2が提供されるなど、あらゆる面で機能強化されたのが「Azure Synapse Analytics」です。

データウェアハウス(DWH)のリファレンスアーキテクチャ

最新のデータ ウェアハウスのアーキテクチャ - Azure Solution Ideas ""
 図はMicrosoft社が提唱する(2021/2/8時点)データ ウェアハウス(DWH)のリファレンスアーキテクチャです。
 ETL処理では Azure Databrics、Visualizeでは Power BIの利用が推奨されていますが、Storeから伸びている「PolyBase」の矢印の通り、PolyBaseまたは COPYコマンドを利用することで、Azure Synapse Analyticsは直接Data Lake Storageへアクセス可能ですし、この後解説する、PySparkを利用した視覚化も実現することができます。
個人的には Azure Synapse Analyticsの機能のみでケアできる範囲を知り、DatabricsPower BIについてはその後に採用を検討するという流れをお勧めします。

Microsoft Azure のデータウェアハウス - Azure Architecture Center
 また、上記リンクにある通りデータウェアハウス(DWH)は大きく SMPと MPPに分類され、一般的にはデータサイズやワークロードの複雑さ(必要なリソース量)によっていずれかを選定することになります。
 Azure Syanpse Analyticsは MPPに分類されますが、MPPを選択する基準は上記では「データ サイズがすでに 1TBを超えており、継続的に大きくなると予想される場合」とされています。
特に継続的に大きくなるという点がポイントで、仮に現時点のデータサイズが 1TBに満たなくとも、増加率が高いと予測されるシステムでは早々に MPPを検討すべきです。

 その他にもリンク先ページでは、データウェアハウス(DWH)として利用可能な各 Azureサービスの機能・スケーラビリティ・セキュリティマトリクスが提供されています。
Azure Synapse Analyticsでは継続した復元ポイントの保持やレポートのリアルタイム性が課題となりますが、こうした課題のクリアが必要な場合は Azure Synapse Analyticsを除外するのではなく、一部データを切り出して別途 SMPを構築するようなアプローチを検討する方が適切です。

百聞は一見にしかず、早速 Azure Synapse Analytics環境を構築し、利用してみましょう。

環境構築

 Azure Synapse Analyticsを利用するためのステップバイステップのガイドは、すでにマイクロソフト社から提供されています。
更新の速度が速いサービスですので、環境構築の詳細な手順はこちらをご参照ください。
チュートリアル:Azure Synapse Analytics の使用を開始する - Azure Synapse Analytics

 今回はチュートリアル「ステップ 1 - Synapse ワークスペースを作成する」に沿って環境構築を進めました。
作成する Data Lake Storage Gen2はビッグ データ分析専用の機能セットでその実態は階層型名前空間が追加されたAzure BLOBストレージです。
利用量に応じた従量課金ですから、作成時点で課金は発生しませんのでご安心ください。
Data Lake Storage Gen2についてより詳細な説明が必要な場合はAzure Data Lake Storage Gen2 の概要を参照してください。

 チュートリアルの中で利用するNYCタクシーデータは、ビッグデータ分析のトレーニングで多用されているデータで、ニューヨーク市タクシー & リムジン委員会 (TLC)に提供された Yellowタクシーの乗車記録です。
正確性などについてTLCでは一切の表明をしていませんが、2009年~2018年までの期間に絞ってもおよそ15億件のレコード数を保有しており、MPPのチュートリアルにはうってつけのデータセットです。
Azureでもデータ出典について、こちらのページで詳細を説明していますので、ご興味のある方はご覧ください。

ドキュメントの手順を一通り進めると、NYCタクシーデータを活用した、SQL分析、PySpark分析、PowerBIとの統合などを一通り試すことが出来ます。

Azure Synapse Analytics単独で、ETLの処理が可能なことや、図示のように簡単な表やグラフが取り出せることも確認出来たと思います。

""

 チュートリアルの中ではさまざまなリソースを手軽な従量課金で試せますが、手順の中で構築する専用SQLプールのみ、従量課金額が比較的高額な事にご注意ください。
手順中で構築する「DW100C」では、東日本リージョン 2021/2/8 時点の料金で単位時間当たり ¥202.72の課金額となっています。
うっかり1ヵ月(730時間)稼働させたままにすると、147,986円の課金額となってしまいます。
チュートリアル完了後には忘れずに削除してください。

分析ツール T-SQL

 SQL分析では以前の SQLDWサービスと同様に専用のプールを持つ方法と、Built-inで実行が可能なサーバレスSQLプールが選択可能です。
サーバレスSQLプールは従量課金のみでデータレイク内のデータに対して直接クエリを実行可能ですが、ローカルストレージを持っていない(メタデータ オブジェクトのみ保持)という特性から、一部の T-SQL機能がサポートされていません。

 まずは標準で展開されるサーバレスSQLプールを利用し、機能の不足や分析実行の頻度とサーバレスSQLプール環境での従量課金額とのコスト比較などを通じて、専用SQLプールを検討するとよいでしょう。

ただし前述の通り、専用SQLプールは比較的従量課金額が高額なのでご注意ください。 ワークスペースで利用可能なSQLプールのタイプは以下の通り確認が可能です。 ""

分析ツール Apache Spark

 Apache Sparkはビッグデータ処理に特化して作成されたオープンソースのフレームワークで、さまざまなプログラミング言語用にAPIが用意されています。
ワークスペース上からも Scala, Python, C#, SQL(Spark SQL)が直接記述可能です。
 Azure Synapse Analyticsの Apache Spark環境では、はじめにサーバレスSparkプールを作成し、ジョブの実行時に Sparkインスタンスと接続して利用します。
環境構築時の「ステップ 1 - Synapse ワークスペースを作成する」で Spark1というSparkプールを作成した際、ノードサイズを定義されたと思います。
実はこの定義の段階では Sparkインスタンスは作成されず、あくまでもメタデータであることがポイントで、実際の利用(課金)はジョブの実行時にプール上のメタデータを参照してインスタンスが稼働している時間のみとなります。

分析ツールのユースケース

 Azure Synapse Analyticsでは前述の通り、T-SQLと Apache Sparkいずれかを利用して分析のロジックを記述することになりますが、コンピューティング部分がスケールするというビッグデータに必要な特性はどちらも備えています。
いずれを採用しても必要な結果を得られる場合には、PoCを実施し分析の速度や従量課金額などで比較検討をするのがよいでしょう。

 一般的に Apache SparkはMlibをはじめとした機械学習関連のライブラリや、PySparkでは可視化に関わるライブラリが充実しているという特長があります。
実際に試してみると、以下チュートリアルのように、たった10行にも満たないコードで先程のNYCタクシーデータから、曜日とチップの相関を示す箱ひげ図が書けました。

Apache Spark を使用したデータの視覚化 - Azure Synapse Analytics

""

 ライブラリは実現したい分析ロジックを書くための、いわばショートカットのような存在です。
表現するロジックに適したライブラリの有無やご自身の習熟度にあわせて、T-SQLと Apache Sparkを選択してみてください。

機械学習(Machine Learning)サービスとの連携

 データ活用におけるクラウドの優位性は、絶えずイノベーションが起こり広がり続けている、豊富なエコシステムそのものにあるとも言えます。
ここまで、Azure Synapseの機能に注目をしてご紹介をしてきましたが、例えば画像データやテキストデータを収集・保管している場合、Cognitive Servicesを通じて「画像の判別」や「文章から感情を分析する」といったアプローチも手軽に行えます。

チュートリアル:自動機械学習を使用してモデルをトレーニングする - Azure Synapse Analytics  Azure Machine Learningサービスでは上記チュートリアルをトレースすると、今回利用したNYCタクシーデータから、運賃額の回帰モデルを作成することが可能です。
驚くべきは上記チュートリアルで実施する自動機械学習において、コードを1行も記述することなくMLのモデルが作成出来てしまうということです。

回帰モデルのほかにも、分類や時系列予測など、さまざまなモデル構築がサポートされています。
例えば時系列予測では、過去の売り上げデータから需要予測を立てるなど、これまで人手を介していた複雑な作業が、Azure Machine Learningサービスを通して手軽に実行できるようになります。

 機械学習についてはまた別エントリでご紹介しようと思いますが、重要なことは冒頭にお話した通り「利用開始時点で全てを計画する必要がない」という点です。
データが十分に蓄積された後のステップとして、必要になった時にすぐに計画・実行できることを感じていただけたと思います。

 もしMachine Learningサービスについて追加の説明が必要な場合には、Azure Machine Learning のドキュメントを参照し、チュートリアルにトライしてみてください。

 いかがでしたでしょうか。チュートリアルを通して、Azure Syanpse Analyticsの機能や、データウェアハウスとしてのポテンシャルを感じていただけたでしょうか。
ご紹介した以外にも、チュートリアル:サーバレス SQL プールを使用して Azure Synapse Studio で Azure Open Datasets を分析する - Azure Synapse Analyticsなど、公式チュートリアルがいくつかありますのでご興味のある方はお試しください。

 パブリッククラウドへこれから新規に構築するシステムはもちろんですが、オンプレミスデータレイクのマイグレーション、ログ集約基盤の構築など、さまざまなシーンで活躍するサービスです。
データ活用や機械学習は、敷居高に感じることもあると思いますが、実際に試してみると案外とっつきやすいUIになっていることや、実際の業務にいろいろとリーチできる可能性を感じていただけると思います。
 パブリッククラウドをすでに利用されている方も、この機会にぜひチャレンジされてみてはいかがでしょうか。

""

関連サービス

Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要な時に必要な量だけ従量課金で利用することができます。→詳細はこちら