「AWSではじめるデータレイク」をre:inventも終わった2021年1月に改めて読んだ話(備忘録
好きなAWSサービスはなんですか?
この「キレイなお姉さんは好きですか?」みたいなやつ
特にAWS関連のイベント類だとなぜか自己紹介スライドに記載することが慣習である。
好きなガンダムシリーズはなんですか?
と聞くと性格がわかるとか言われていた10年くらい前の話に近いような気がする。
ちなみに僕は原点にして頂点であるS3とLambdaである。
そしてQuickSight。
ガンダムはW派。
理由はBIツール地獄に陥ったトラウマから開放されたからだ。
Kibana、Pentaho、、、うっ、、頭が・・・
目次
- AWSではじめるデータレイク
- 僕のスペック
- まず正誤表に目を通すこと
- 結論
- 結論に至った理由
- データレイクって何さ
- 第1部データレイクの概念と知識
- 第2部データレイクの実践(基礎編)
- QuickSight
- 第3部データレイクの実践(応用編)
- まとめ
AWSではじめるデータレイク
はい。
そして今回のお話はタイトルにあるように
AWSではじめるデータレイク
という2020年夏に発刊された本を当時は目を通したくらいだったが
AWSのマネジメントコンソールの画面はころころ変わるし、re:inventが終わった年明けの状況で本書を読むと改めて躓いた箇所などを書いておく。
著者はAWSのソリューションアーキテクトの方々。
途中で詰まったので備忘録扱いの記事。
僕のスペック
読者としての僕のエンジニアスペック
AWS歴:2年くらい
まず正誤表に目を通すこと
実際の正誤表は以下にあるのだが、そのページからして誤字っている。
メニューバーのデータレイ「ク」がない。
https://techiemedia.co.jp/books/
また、ポップアップ環境によるかもしれないが
Google Chromeをブラウザにしていると第2部、第3部のハンズオン実行コマンドがダウンロードできない。
pdfは問題なし。
ZIPファイルのダウンロードができないが、F12にてソースコードをみてみたらリンクがhttpで対象がzipファイルのためブラウザのセキュリティではじかれている可能性がある。
ひとまずWindowsユーザーなのでEdgeにてダウンロードした。
結論
途中で詰んだ。
原因探したいが一旦現時点でブログに記録しておく。
全体を通して良本。
AWS学び始めの方から中級者までカバーできる。
しかしながら、もったいないところで★5とは決していえない。
AWS環境におけるデータレイクに対する考え方や実装方法まで丁寧に記載されている。
AWSに直接絡んでいない技術用語にも触れており、より詳しく知りたい人のために巻末に詳細が記載してある。
ただし、手を動かさない人、自分で今行っている作業が何をしているかを考えられない人には不向きである。
目を通しただけでわかった気になると痛い目にあうパターンだが、逆にいえば真面目にしっかりハンズオンも行うことで各種詳細に書かれているので得られるものは大きい。
結論に至った理由
タイトルの通りAWSを用いたデータレイクの考え方とその実施方法を会得することができる。
また、データレイクだけではなくデータウェアハウスについても扱っており
例としてAmazon RedShift Spectrumを用いたハイブリッドな構成の記載とハンズオンが描かれいる。
特に
というデータを扱う各種サービスの概要、ハンズオンが一通りまとまっているのはかなり助かる。
ファイルの圧縮による効率化やAmazon RedShiftのチューニングにまで日本語で触れているのはこの本だけではないだろうか。
また、ハンズオンではログデータの分析としてEC2上にWordpressを展開するAWS CloudFormationが提供されている。
ログデータの扱い方は以下のイベントでも議題にあげられており、たまたま僕はこの本を読み終わっていたのと実践済みなのでその点を話すことができた。
※割り込んだ感もあるが。。そしてステマではない。
aws-startup-community.connpass.com
しかしながら、本当にもったいないことに明らかに検証不足や誤植が目立つ。
特に詳細フェーズでは著者がMac環境なのだろう。
一部コマンドがWindows環境だと動作しない。
AWSのマネジメントコンソールの画面は水物であり、仕方がないが現在のマネジメントコンソールの画面と大きくことなるところもある。
なので、この記事を書いている時にハマったところを書いていく。
大きく変わっている画面はスクリーンショットまでとったぞ。
データレイクって何さ
ざっくり言うと
「S3にデータをぶっこんでGlueでととのいてあげてAthenaとかで検索して分析しましょう」
大量データ(S3)を対象に必要な時に必要な形式にデータを生成(Glue)しよう。
Glueでデータをテーブル状にできるので、そこを分析しよう。
データ量がものすごく多いから統計分析や機械学習にも役立つよ。
という考え方です。
■データウェアハウス
データウェアハウスに求められるモノは、毎週きまったSQLを投げるというような定常的にデータを分析する場合や、 複数のクエリを同時並行で実行することなど決まったパターンをパフォーマンスよく扱うことである。
RDBMSとしてPostgreSQL、MySQL、Oracle DBなどは馴染みがる人が多いだろう。
「あー、要するに大規模で分析とかするためのでかいデータベースでしょ」
となる場合もあって、僕も以前はその口であり、PostgreSQLから派生して作られたAmazon RedShiftを使うことが多い。
おそらく大抵の人はそれを「データウェアハウス」と呼ぶものです。
けどねぇ。
お高いんですよAmazon RedShiftさん。
そりゃあ常時動いてるでかいデータベースなシステムが複数台に渡ってるんだから。
もちろん必要な時は必要だけどさ。
んでもって
少なくとも第一正規形でキッチリと列を定義したデータを扱うのが前提なわけです。
ログデータというものは、Webなのかサーバー本体からなのかネットワークなのか・・・種類がたくさんあるわけですよ。
そして必要に応じてデータ形式や分析対象を変えたりすることが必要になる。
それに何かあった時にログを掘る未来からは基本的に逃げられない。
平常運転でも無事に動いているかどうかの確認はするだろう。
だったら、「ログデータはS3に蓄積しておいて、必要な時に必要な形式に変更して(アドホックに)分析しましょうよ」というお話。
言うまでもなくS3はお安いです。
■データウェアハウスと敵対しているわけではない
データレイクがS3、データウェアハウスがRedShiftというわけではなく、どちらも扱い方が異なるという話。
また、データレイクの考え方ではRedShiftのRedShift Spectrum でS3のデータ参照もできる。
RedShiftにデータを蓄積しておいて、データレイクをいう大きな枠組みのなかにデータウェアハウスを含めることもできる。
第1部データレイクの概念と知識
まずは序章~第4章まで
概念の話だが、これだけでもAWSが提供しているサービスや、データウェアハウス、データレイクの考え方が理解できる。
■良かった点
概ね第1章でAWS環境におけるデータレイクを構築時に必要な知識、考え方がまとまっている。
初学者にはVPCの考え方などを復習できる良い機会になるだろう。
データ分析に必要なAWSの各種サービスの役割がわかる
データレイク、データウェアハウスなどの説明の絵や図がわかりやすい
データレイクもサービスの一つであり、SLAとして考える大切さ
暗号化やアクセス権限などのセキュリティ面への言及
■イマイチな点
ほとんどない印象。
強いて言うなら、キレイにまとまりすぎていて手を動かさなくてもわかった感に満たされる。
第2部データレイクの実践(基礎編)
基礎とは・・(哲学
この章からハンズオンであるが、基礎といいつつも手順よく行っていくとかなりの知見が得られる。
この第2部の画面が大きくかわっている箇所も多く、わかりにくくなっている面がある。
特にBIツールであるQuickSightはAWS CLIで対応というわけにもいかないので、読んでいて現状を記載したほうがいいと思った点を記載していく。
QuickSight
GUI・・というかQuickSightに関してはかなり画面が変わっている。
■ようこそ画面
ようこそ画面から書籍と異なる。
誰に歓迎されているか戸惑うかもしれないが間違っていないので安心して欲しい。
リージョンについては以下に箇所に隠れている。
「新しい分析」は本書と左右逆の位置に移動している。
よく見ればわかることではあるが。
■QuickSightの分析画面内での変化
SageMakerと統合
2020年6月1日にQuickSightとSageMakerの統合が発表されている。
この本は同年7月が発行なので致し方ないが、SageMakerとの連携によって予測分析ができるようになったのは嬉しい。
以前から使うには使えたがβ版当時の僕は不具合を引いてしまった。
■項目名の変更
項目名の変更操作も変更がなされている。
右クリックの必要がある。地味に気づきにくい。
項目名の変更については以下の流れになる。
■終了日のコントロールを追加
enddateの▼からコントロールの追加を押す必要がある。
ここも隠れているので注意。
ところが、終了日を2015年にしてみたら反映されなかった。謎い。解決しなかった。。。。。
■output用のバケットが必要
7章のAthenaの章でつまづく。
inputのバケットを作成している手順だが、Athenaの実行後出力先としてoutputのバケットも作成しておく必要がある。
■スキャン対象のデータ量が減った?
Athenaエンジンが2になった影響からだろうか。
それともS3側も結構変わったからだろうか。
SELECT文の結果、スキャンして得たデータの件数は書籍と一致するがスキャン対象が削減され、スキャン速度が早くなっている。
■8章のスキャン結果に差異
S3が暗号化をしやすい画面に変わっていることと、S3そのものが改良されたからか書籍とAthenaの実行結果が異なる。
書籍のデータ | クエリ実行時間 | スキャン容量 |
---|---|---|
chap8_input | 5.45s | 1.1GB |
chap8_output | 4.57s | 50.07MB |
chap8_output_with_pertition | 2.28s | 18.72KB |
※P228 表8.2から引用
今回試した結果
試した結果 | クエリ実行時間 | スキャン容量 |
---|---|---|
chap8_input | 4.83s | 1.02GB |
chap8_output | 2.11s | 48.35MB |
chap8_output_with_pertition | 2.7s | 36.57KB |
多少のずれは致し方ないが、データ変換を行ってからのクエリ実行時間が4.57秒から2.11秒まで減っていて、かつ、その後に実施するパーティション分割を行った値とほぼ同じになった。
そして、逆にパーティション分割を行うとスキャン容量がほぼ2倍に増えている。
やはりAthenaかS3に改編があったのだろうか。
それともGlueが生成するデータに変化が?
もちろん、スキャン容量と実行時間を減らしていく検証の章なので、ギガ→メガ→キロに減っていっていることに変わりはないが。。。
■S3 SELECTが隠れた
9章でRedShiftとS3を連携する際に、S3 SELECTを行う必要があるが、S3の画面は大きく変わったため隠れている。
第3部データレイクの実践(応用編)
第3部はAWS CLIを用いていく。
書籍はVersion1、最新版はVersion2となっている。
どちらか悩んだが、現場のエンジニアの方々がVersion1を使い続けているとのことで1で実施した。
■コマンド入力にて引っかかるところ
以下のしょっぱなから引っかかるので注意。
$ mkdir -p datalake-book-workdir/chapter10/
単純に -p が不要である。
Macだと必要になるオプションだが、Windowsだとこのオプションは強制実行されるのでむしろ書いてはいけない。
C:\Users\hoge\fuga\AWS\command>mkdir -p datalake-book-workdir/chapter10/ コマンドの構文が誤っています。
と怒られるので
C:\Users\hoge\fuga\AWS\command>mkdir "datalake-book-workdir/chapter10/"
とすること。
愚痴。
こういうのがあるから検証をしろとイベント類のハンズオン資料でもあれほど・・・
徹夜する羽目に・・・
初心者歓迎というイベントを開いてハンズオンをするのに、なんでWindowsユーザーを考えないんだ。
仕事用PC もしくは普段からWindowsユーザーが集まることは想定できるでしょうが。
次に
$ aws glue create-crawler --name webserver_apache_access --database lake-fishing --role GlueServiceRole --targets '{"S3Targets":[{"Path":"s3://[bucket_name]/apache_access"}]}'
これもがっつり引っかかる。 Glueのドキュメントとか読んだり、JSON構造を引数にしているか何度も確認したが、エスケープシーケンスが必要だったというオチ。
$ aws glue create-crawler --name webserver_apache_access --database lake-fishing --role GlueServiceRole --targets {\"S3Targets\":[{\"Path\":\"s3://[bucket_name]/apache_access"}]}'
となる。
■ライフサイクルルールを作成する
S3バケットのライフルールを作成する画面が大きく変更されている。
S3に移行する際に気をつける。
P309にてライフサイクルルールを作成刷る際にジョブの編集の方法が大きく変わっている。 ただ、書籍のバージョンはもっとも古いバージョンを選択することになる。
■Lake formation Blueprintsのカタログ
軽微な誤字がある。
[lake-fishing【を】]
と、閉じカッコの位置がずれている。
そして・・・8つのカタログが・・・でき・・ない!!?
12.2章で行き詰まった・・・・
まとめ
行き詰まったところは、後日対応します。。
というか行き詰まっていいのか・・?
ただまぁ、誤字や誤植が散見されるけれどもデータレイクの考え方とAWSの各種サービスの使い方をハンズオン形式で学べるのは良い。