データレイク解説シリーズ 第 2 回: データレイクのアーキテクチャ

2020-04-01
ビジネスxクラウド

Author : 志村 誠

こんにちは。AWS でアナリティクス領域のソリューションアーキテクトをしている志村です。普段は AWS をご利用いただいているお客様に対して、特にデータ活用や分析に関わる技術的な支援をさせていただいております。私を含めた AWS 社員 4 名で出版準備中のデータレイクの書籍をベースに、全 4 回でそのエッセンスをお伝えする連載の第 2 回をお届けします。今回のテーマは、データレイクのアーキテクチャです。

前回はデータレイクがどういうものか、一般的なデータベースやデータウェアハウスとどう違うのかについて説明しました。その中で、データレイクは「多様なデータを一元的に、大量に保存しておける場所」と言い表しました。しかし実際問題、データレイクを作るとしてどのようなアーキテクチャにすれば良いでしょうか ? またその上でどのような形でデータを活用することができるでしょうか ? そこで今回は、データレイクの典型的な構成について説明した上で、どのようにデータ活用の仕組みを乗せていくことができるか、ざっと見ていきたいと思います。

この連載記事のその他の記事はこちら

データレイクのアーキテクチャ

データレイクが「多様なデータを一元的に貯めておく」ものだということは前回触れましたが、実際にはデータを貯めるだけでは何もできません。そもそもデータを貯めるためには、データソースから収集するための仕組みが必要ですし、生のデータをそのまま蓄積しただけでは、うまく活用するのも難しいでしょう。さらに保存されたデータを整理・分類するカタログの仕組みも必要となってきます。

そこでデータレイクでは、データを保存するストレージをベースとして、さまざまな関連機能を持ったコンポーネントを組み合わせた、以下のようなアーキテクチャがよく用いられます。

  • データを整理分類して保持し続ける「保存」コンポーネントをベースとして、その上に多様なソースからデータを「収集」する仕組み
  • 活用しやすい形にデータを「変換」する仕組み
  • さらにそのデータを「分析」する仕組み

「収集」「変換」「分析」の 3 つは、データをコンポーネント内に永続的に保持することはあまりなく、「保存」から必要に応じてデータを読み書きします。

このアーキテクチャを取ることにより、コンピューティングとストレージを分離して、それぞれを独立してスケールさせることができるようになります。

たとえば日次バッチの中で、保存されているデータを 2 時間かけて「変換」する場合を考えてみましょう。

「保存」コンポーネントのストレージと、「変換」処理のコンピューティングリソースはそれぞれ独立しているため、ビジネス要件やデータ量の変化に応じて、どちらか一方だけを増減させることができます。蓄積されたデータの量が大きくなった場合は、(コンピューティングリソースを変更することなく) ストレージサイズだけを増加できます。またデータの流量が一時的に増えた場合は、(ストレージサイズを変更せずに) コンピューティングリソースだけを増強できます。またそれ以外にも、新しい革新的な「変換」技術が出てきた際に、その技術が「保存」コンポーネントに対して入出力を行うインターフェースさえ持っていれば、他のコンポーネントに影響を与えることなく置き換えられます。

クリックすると拡大します

ストリームデータを取り扱う

データレイクの基本的な考え方は、日次や月次などの決まったサイクルでデータの変換や分析を行う、いわゆるバッチ処理方式をベースとしています。ではデータレイクではリアルタイムに近い形でデータを処理・活用することはできないのでしょうか ? もちろん答えは「できます」なんですが、これを実現するためにはデータレイクを拡張する必要があります。

どのような拡張を行うか理解していただくために、ラムダアーキテクチャという考え方を説明します。これは従来あったデータをバッチで処理するのに加えて、発生したデータが次々と流れこんでくるような場合に (これをストリームデータといいます)、両者を組み合わせて処理するためのものです。

具体的には、全量のデータを保持し定期的な処理を行うバッチレイヤーと、新しく入ってきたデータをストリーム処理するスピードレイヤー、そして両者を組み合わせて参照するサービングレイヤーの3つのコンポーネントから構成されます。これにより、入ってきたデータを処理しつつ、蓄積したデータの集計結果と組み合わせて表示できるようになります。

クリックすると拡大します

クリックすると拡大します

これを先ほどのデータレイクのアーキテクチャと組み合わせると、こちらの図のような形になります。ストリーム処理の場合、「保存」を介することなく「収集」「変換」「分析」の処理が一気通貫に行われます。特に「変換」と「分析」は一つのアプリケーションに収められて実行されることが多いです。

もちろんユースケースによっては、必ずしもこの図の通りの処理を行うわけではありません。たとえばストリーム処理において、収集したデータを変換して単にデータレイクに保存する場合も、分析までしてそのまま (バッチレイヤーのデータと結合するのではなく) 他の外部システムと連携する場合もあります。ただこの形をとることで、データを実際に活用する人は、リアルタイムダッシュボードを閲覧しながら、蓄積したデータに対してアドホックな集計を行えるようにもなります。またストリーム処理を行うアプリケーションは、バッチ側の仕組みとは独立してスケールさせたり、置き換えたりできるようになります。

データを活用するさまざまな方法

さて、ここまでデータレイク全体のアーキテクチャやストリームデータを処理するための仕組みについて説明してきました。今回の記事では最後に「分析」コンポーネント、つまりデータを活用する方法についてざっとみておきたいと思います。バッチ処理とストリーム処理のそれぞれについて、いくつかの分析のやり方があります。

バッチ処理についてみていくと、まず最初に出てくるのは BI(Business Intelligence)ツールを使ったデータの可視化やダッシュボードの作成でしょう。事業数値を可視化して、それが定期的に更新されていく仕組みを作るのは、基本ではありますが非常に大事なことです。新しい取り組みをするにしても、まずは今どうなっているかがわからないと、手の打ちようもありません。その数値を出すために裏側でデータウェアハウスを用いて重たい集計処理バッチを走らせる必要が出てくるでしょう。それらを元にして新しい施策を考えたり、仮説があってるかを SQL を投げながら検証を行なったりするといった、より探索的なアクションに向かっていきます。そして施策を実施した際には、得られたデータ (必ずしも構造化されていない場合もあるでしょう) に対して、素早く集計・分析を行って意思決定を行えるとなお良いといえます。

そうした事柄の先には、例えばレコメンドによるマーケティング施策への反映や、サービスの離脱確率予測といった機械学習を用いた取り組みといったものがあります。それらの応用的な分析は、自社のデータサイエンティストが Python や Spark を用いて行う場合もあれば、AutoML と呼ばれるような、特定領域の課題を解決するための半自動の機械学習サービスを使って行う場合もあるでしょう。特に機械学習で扱うデータは、通常のテーブルデータ以外にも、画像や音声、さらにテキストデータといったものも対象となってきます。

データレイクは、こうした多種多様なデータを格納し、活用するための仕組みとして考えられているため、幅広い形態での利用が可能です。

ストリーム処理についても同様に、多くの利用の形があります。

リアルタイムダッシュボードによる事業数値の変化への素早い対応、またその前段における集計・集約処理といったものが真っ先に思いつくものでしょう。また、リアルタイムな検索やアドホック分析といった用途もあります。さらに機械学習についても、典型的には異常検知のような用途が挙げられますが、ストリームデータに適用されるケースは数多くあります。

クリックすると拡大します

まとめ

第 2 回では、データレイクのアーキテクチャの大枠について説明しました。データを活用する方法は様々なものがあり、そのために必要となるデータの種類やフォーマットも多種多様です。データレイクは、こうした活用ニーズに応えるための非常に強力な仕組みであり、かつ新しくやりたいことが出てきた場合にも、それに対応できるだけの奥深さを持っています。データをどのように活用したいかは、分析を進める中で初めて見えてくることも多いため、こうした幅の広さはとても大事なポイントです。

それでは今回はここまでで、第 3 回にご期待ください !

この連載記事のその他の記事はこちら


builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

プロフィール

志村 誠
アマゾン ウェブ サービス ジャパン合同会社
シニアソリューションアーキテクト(アナリティクス)

大規模データ処理を中心として、データ分析や機械学習を含めた技術支援を担当。好きなサービスは Amazon Athena, AWS Glue, Amazon SageMaker。最近 IPA や焼酎をよく嗜むようになりました。

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する