「AWSではじめるデータレイク」読書まとめ
書籍「AWSではじめるデータレイク」を読んでデータレイクについてまとめました
概要
1. データウェアハウス
2. データレイク
加工前のデータも保存することで、様々なニーズに対応する
2.1. 機能
1.多様なデータを一元的に保管する
2.データを失わない
3.サイズ上限からの解放
4.決められた方法でアクセスが可能
3. ANDES
Amazon.comが設計したモダンなデータレイクのプロジェクト。
「セルフサービス化(ユーザが他部門の手を借りずに自分で環境を準備できること)」に重きを置いた設計になっている
構築
4. 典型的なデータレイクのアーキテクチャ
「収集」:データの発生元からデータを集めてくる
「保存」:データを整理分類(データの詳細についての情報)して保持し続ける(データカタログ)
「変換」:保存したデータに対して適切な加工整形処理を行う
「分析」:加工整形処理したデータを活用する
5. ストリーム処理とバッチ処理
データレイクの基本的な考え方は、日次や月次などの決まったサイクルでデータ処理を行う、バッチ処理方式をベースとしています。
リアルタイムに近い形でデータを処理・活用するためにはデータレイクを拡張する必要があります。
ストリーム処理:「収集」「変換」「分析」の処理が一気通貫に行われます
バッチ処理:「収集」「変換」「分析」の 3 つは、データをコンポーネント内に永続的に保持することはあまりなく、「保存」から必要に応じてデータを読み書きします。
6. 構築の考え方
以下の順で考えます
- どのデータをどのように見たいか、
- データが生み出されてから意思決定までにどれくらいの時間を許容するか、どのデータをどれくらいの期間使用するか
- 必要なデータソースのリストアップ
- 「分析」を考え、それを得るために必要なデータを「収集」して「保存」し、最後にデータをアウトプットするための「変換」と「分析」について決める
1,2で求めるアウトプットと要件が明確になったら、3,4を実施します
「分析」を考えるときは、結果をどう活用するか、他システムや利用者がどう受け取るかまで考察する。
7. 「収集」
データソースは主に以下に分けられます。
7.1. サービス
7.2. ファイル
一般的にはコマンドラインツールやEmbulkを使用します
7.2.1. AWSサービス
AWS DataSync:オンプレミスのストレージからS3に対して自動でデータ転送できる
AWS Transfer Family:SFTP
AWS Snowball:専用ハードウェアに転送したデータを郵送でやりとりする(ペタバイト可能)
7.3. ストリームデータ
FluentdやApache Kafkaを使用します。
Apache Kafkaのようにメッセージキューを用いるのが一般的です。
7.3.1. AWSサービス
Amazon KDS:メッセージキュー層のサービス。読み込んだ後はKCLやLambdaで読み出し、ストリーム処理を行う
Amazon KDF:取り込んだデータをそのまま出力してS3に保存する。S3以外にもRedshiftやAmazon Elasticsearch Serviceに出力できる
Amazon MSK:Apache Kafkaを使用しているユーザ向け
7.4. DB
DBからデータを取り出す方法として、一定間隔でデータを抜き出すバッチ処理と、テーブルに入った変更をすぐに取得するCDCと呼ばれる処理の2種類があります
バッチ処理は全量抽出と差分抽出の2種類がありますが、前者は負荷が高いが、後者はデータ変換のロジックが複雑になりがちというトレードオフがあります。
7.4.1. AWSサービス
Amazon DMS:ソースのDBと書き出し先S3を指定するだけで自動的にデータが抜き出せます
8. 「保存」
8.1. データカタログ
データレイクに貯まったデータ自体についての情報をまとめてカタログにしたもの
付加情報には以下のようなものがあります
- ファイル形式
- 項目
- データサイズ
- いつ追加されたか
- どのシステムから生成されたか
- 生成までの経緯
8.1.1. AWSサービス
- AWS Glue
Data CatalogとETLの機能を持っています
キーバリューで追加情報も入れられます
- AWS LakeFormation
権限管理をGRANT文の記法で一元的に扱えます
9. 「変換」
- 不正な値の処理:
- 文字列や値の統合
- テーブルの結合処理
- ファイルサイズの変換:
- ファイルフォーマットの変換:列指向フォーマットParquet/ORC。125MB~512MB/1ファイルだと効率的に処理できます。列指向は変更されないデータに向いています。変更されるデータの場合は行指向フォーマット(csv,tsv)のほうが良いです
こうした変換をETL処理と呼びます
9.1. Glue以外の選択肢
Amazon EMR,Athena
10. 「分析」
10.1. ストレージに蓄積されたデータ
BIツールやSQL、Python/Rなどのツールで分析を行います
BIツールではAmazon QuickSight,SQLではAmazon AthenaやRedShift,Python/RではAmazon EMRやAmazon SageMakerが使われます。
10.2. ストリームで流れてくるデータ
リアルタイム分析に使われます。
リアルタイム分析に使われるのはリアルタイムダッシュボードやストリーム分析アプリケーションです。
10.2.1. リアルタイムダッシュボード
よく使われるのはOSSの検索ソフトウェアElasticsearchと可視化ツールのKibanaです。
AWSで実現しようとするとAmazon ESというサービスがあります
10.2.2. ストリーム分析アプリケーション
流れてくるリクエストデータを加工整形して適切なフォーマットに変換し、集計し、異常検知/予測を行います
AWSではAmazon KDAやEMRを使うことができます
参考
Discussion