データレイク解説シリーズ 第 4 回: 実践的なデータレイク構築方法とポイント

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

Author : 関山 宜孝

こんにちは。AWS Glue & Lake Formation 開発チームの関山です。
この「データレイク解説シリーズ」では 2020 年 6 月出版予定の書籍「AWS ではじめるデータレイク」をベースに、全 4 回でデータレイクのエッセンスをお伝えしています。最終回となる今回は、実践的なデータレイク構築方法とそのポイントについて解説していきます。

今回は例として、図のような構成の一般的なウェブシステムのログデータをもとに、データレイクを構築していきます。

収集

AWS ではデータレイクのストレージとして、Amazon S3 をオススメしています。そこで、ログデータを何らかの方法で収集して S3 にアップロードする必要があります。

ログデータはその性質上、いろんなところに点在しがちです。AWS で構築したシステムでも、EC2 インスタンスのローカルディスクにあったり、S3 にあったり、CloudWatch Logs にあったりするかと思います。このため、それぞれの場所に応じた収集方法が必要になります。

といっても、特別な心配は要りません。AWS の各種サービスの連携機能やオープンソースソフトウェアを組み合わせて、さまざまな場所のデータを簡単に集めることができるのです。

例えば、ALB (Application Load Balancer) のログは最初から S3 に出力されます。
CloudWatch Logs に出力される Amazon Aurora のログは、Kinesis Data Firehose を使うと S3 に配信できます。EC2 上のログを集める方法はいろいろありますが、ここでは fluentd を使って S3 に送ります。

このとき、データのフォーマットや S3 バケット上の配置場所が気になる方も多いと思いますが、完全に検討しきる必要はありません。

データレイクの良いところは、どのようなデータがどのように置かれていても、後から好きなように加工して活用できる自由度なのですから。

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

保管・カタログ化

S3 に収集したデータはそのままでも活用できますが、実際に "使える" データレイクにするには押さえておきたい大切なポイントがあります。

たとえば、データの保管方法。
S3 では目的に合わせてコストと耐障害性のバランスをもとにストレージクラスを選べます。また、ライフサイクルの機能によって、保存期間のコントロールや、一定期間経過後のアーカイブ化などもできます。ログデータの場合、保存期間が要件で決まってることも多いと思いますので、要件を満たすように設計します。

たとえば、セキュリティ。
今日、データの暗号化、アクセスコントロール、監査などは、データレイクの実践に欠かせないポイントになっています。S3 は、通信路においても保管時においても暗号化できます。

データレイクのアクセスコントロールのキーとなるのは、Lake Formation です。RDBMS ライクな権限管理で、テーブルレベル、カラムレベルで、ユーザーからのアクセスを許可・拒否できます。一度 Lake Formation で権限管理を集約してしまえば、Athena、Redshift Spectrum、EMR、Glue といったサービスでも権限管理を一元化できます。

ログデータの場合、ログの内容によっては機密性の高いデータが含まれることもあるので、セキュリティ要件を満たすように設定します。

たとえば、カタログ化。
データレイクをさまざまな属性のユーザーに幅広く使ってもらうためには、データの使い方、性質を誰にでもわかるように "カタログ" 化して共有することが大切です。

データ界隈でカタログというと、まず基本になるのは SQL でクエリできるテーブルの定義です。

AWS Glue クローラーによって、データの中身を反映したデータカタログを簡単に自動生成できます。

これを起点に、必要なビジネスデータなどをコメントやタグとして追記していくことで、よりわかりやすいカタログに仕上げることができます。

ログデータの場合、一目見るだけでは値の意味がわかりづらいこともあるので、適宜コメントを入れて後からわかりやすくなるよう整理していきましょう。

ポイントを押さえて、実際のユーザーにとって使いやすいデータレイクにしていくことがとても大切なのです。

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

加工

データレイクでは、どのようなフォーマットのデータであっても自由に加工できるところがポイントになります。一方で、実際にデータを活用するシーンを踏まえると、例えばこのテーブルのこのカラムはマスク処理が必要、このカラムは別のカラムと組み合わせた計算が必要、このカラムは時刻が入るので日本時間に変換するといった、ビジネス観点の加工が必要になることが多いです。

また、パフォーマンス観点でも、分析時にクエリが想定した時間内に完了するように、分析に適したデータフォーマットに変換したり、配置方法を工夫したり、小さいファイルを集約したりといった加工が必要になることがよくあります。

このように、ビジネスとパフォーマンスの両面で、目的に合わせて加工することが大切です。

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

この、データの加工のためのキーとなるサービスが AWS Glue です。AWS Glue の持つ ETL ライブラリと Apache Spark の長所を組み合わせることで、データの加工を簡単に、スケーラブルな方法で実現できます。

ここまでで収集したログデータはファイルサイズもフォーマットもばらばらです。これを、分析クエリに強い Parquet フォーマットに変換し、Snappy で圧縮していきます。

また、小さいファイルがたくさんあるとパフォーマンスが低下しがちなので複数のファイルを集約(コンパクション)していきます。

さらに、クエリのときに必要なデータだけを読み取って無駄を省けるように、データを適切な配置となるようパーティショニングしていきます。

一通りの加工 (ETL 処理) を終えると、生データに直接クエリしたときに比べて、はるかに高いパフォーマンスを実現できるようになります。

書籍版ではサンプルコードや実践的な TIPS も紹介していますので、興味のある方はぜひご一読いただければ幸いです。

分析

ここまででデータレイクの準備が整いました。あとは、目的に合わせてデータを活用するだけです。

データ分析の入り口はクエリから ! Amazon Athena からデータレイクに SQL をクエリすれば、インフラを気にすることなく簡単に分散処理して結果だけを受け取ることができます。

データ分析に欠かせないデータの可視化、レポーティングも、Amazon QuickSight を Amazon Athena と併用して簡単に実現できます。例えば、Web サーバーのアクセスログから時間別のリクエスト数を集計したり、データベースサーバーのスロークエリログの統計値を取得したり、使い道は様々です。ログデータを可視化した BI ダッシュボードを用意しておけば、誰でも簡単にウェブシステムの動作状況や、エンドユーザーの行動状況をチェックできます。

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

また、データレイクに蓄積したデータから、機械学習でさらなる知見を引き出すこともできます。

Amazon SageMaker を使えば、ビルトインのアルゴリズムを活用して、データレイクのデータから異常値を検出したり、未来のデータを予測したりと、データ活用の幅が大きく広がります。ログデータの場合であれば、属性ごとのリクエストのトレンドから、異常値を見つけて通知したり、将来のリクエスト量を予測してキャパシティプランニングに活用したり、応用が広がりますね。

書籍版では Athena でそのまま使えるアドホッククエリのサンプルや、SageMaker であらかじめ用意された Random Cut Forest アルゴリズムを使った異常検知のサンプルコードも紹介していますので、こちらも併せてご利用いただければと思います。

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

まとめ

第 4 回では、ログデータを例に実践的なデータレイクの構築方法とそのポイントを学びました。

少しハードルが高く感じた方もいらっしゃるかもしれませんが、書籍では実際のログデータとサンプルコードをもとに手を動かしながら学べるように執筆しましたので、初めての方でも大丈夫です。最後まで読み終え、動作確認を終える頃には、一歩進んだデータレイクを構築する一連の流れを体感し、ご自身のユースケースに合わせてデータレイクを構築できる実践的なスキルを習得できると思います。

本連載ならびに本書がみなさまが、実践的なデータレイクを構築し、データのちからをもっと引き出すための一助となることを願っています。


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

プロフィール

関山 宜孝
アマゾン ウェブ サービス ジャパン合同会社
AWS Glue & Lake Formation 開発チーム ビッグデータアーキテクト

AWS Glue と Lake Formation に関するユーザーに近い部分(ライブラリ、サンプル等)の開発や技術支援を担当。

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

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