するめごはんのIT日記

主にITネタを書いていくのさ

「AWSではじめるデータレイク」をre:inventも終わった2021年1月に改めて読んだ話(備忘録

f:id:surumegohan:20210124224317j:plain

ごきげんよう

好きなAWSサービスはなんですか?
この「キレイなお姉さんは好きですか?」みたいなやつ
特にAWS関連のイベント類だとなぜか自己紹介スライドに記載することが慣習である。

好きなガンダムシリーズはなんですか?
と聞くと性格がわかるとか言われていた10年くらい前の話に近いような気がする。

ちなみに僕は原点にして頂点であるS3とLambdaである。
そしてQuickSight。
ガンダムはW派。

理由はBIツール地獄に陥ったトラウマから開放されたからだ。
Kibana、Pentaho、、、うっ、、頭が・・・

目次

AWSではじめるデータレイク

はい。
そして今回のお話はタイトルにあるように
AWSではじめるデータレイク
という2020年夏に発刊された本を当時は目を通したくらいだったが
AWSのマネジメントコンソールの画面はころころ変わるし、re:inventが終わった年明けの状況で本書を読むと改めて躓いた箇所などを書いておく。

著者はAWSのソリューションアーキテクトの方々
途中で詰まったので備忘録扱いの記事。

僕のスペック

読者としての僕のエンジニアスペック

  • AWS歴:2年くらい

  • AWS認定:ソリューションアーキテクト – アソシエイト、クラウドラクティショナー

  • 公の登壇経歴:AWS Summit Tokyo 2019、AWS Startup Day Tokyo

まず正誤表に目を通すこと

実際の正誤表は以下にあるのだが、そのページからして誤字っている。

メニューバーのデータレイ「ク」がない。
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としてPostgreSQLMySQLOracle 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に関してはかなり画面が変わっている。

■ようこそ画面

ようこそ画面から書籍と異なる
誰に歓迎されているか戸惑うかもしれないが間違っていないので安心して欲しい。

f:id:surumegohan:20210124144047p:plain
ようこそ画面から別物

f:id:surumegohan:20210124152937p:plain
最初の画面からしてまったく別物

リージョンについては以下に箇所に隠れている。

f:id:surumegohan:20210124154358p:plain
リージョン選択箇所のありか

「新しい分析」は本書と左右逆の位置に移動している。
よく見ればわかることではあるが。

f:id:surumegohan:20210124154542p:plain
新しい分析

■QuickSightの分析画面内での変化

SageMakerと統合

2020年6月1日にQuickSightとSageMakerの統合が発表されている。

aws.amazon.com

この本は同年7月が発行なので致し方ないが、SageMakerとの連携によって予測分析ができるようになったのは嬉しい。
以前から使うには使えたがβ版当時の僕は不具合を引いてしまった。

f:id:surumegohan:20210124155317p:plain
SageMakerとの統合

■項目名の変更

項目名の変更操作も変更がなされている。
右クリックの必要がある。地味に気づきにくい。

項目名の変更については以下の流れになる。

f:id:surumegohan:20210124155619p:plain
項目名の変更は右クリック

f:id:surumegohan:20210124155726p:plain
フィールドを編集

f:id:surumegohan:20210124155820p:plain
項目名の変更後

■終了日のコントロールを追加

enddateの▼からコントロールの追加を押す必要がある。
ここも隠れているので注意。

f:id:surumegohan:20210124160216p:plain
コントロールの追加

f:id:surumegohan:20210124160306p:plain
終了日の入力

ところが、終了日を2015年にしてみたら反映されなかった。謎い解決しなかった。。。。。

f:id:surumegohan:20210124160420p:plain
反映されない?

■output用のバケットが必要

7章のAthenaの章でつまづく。
inputのバケットを作成している手順だが、Athenaの実行後出力先としてoutputのバケットも作成しておく必要がある

f:id:surumegohan:20210124161028p:plain
出力先のバケットの作成

■スキャン対象のデータ量が減った?

Athenaエンジンが2になった影響からだろうか。
それともS3側も結構変わったからだろうか。

SELECT文の結果、スキャンして得たデータの件数は書籍と一致するがスキャン対象が削減され、スキャン速度が早くなっている

f:id:surumegohan:20210124161241p:plain
スキャン対象の容量が減少している

■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の画面は大きく変わったため隠れている

f:id:surumegohan:20210124163640p:plain
S3 SELECTのありか

第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に移行する際に気をつける。

f:id:surumegohan:20210124170605p:plain
S3のライフサイクルルールの設定画面1

f:id:surumegohan:20210124170638p:plain
S3のライフサイクルルールの設定画面2

P309にてライフサイクルルールを作成刷る際にジョブの編集の方法が大きく変わっている。 ただ、書籍のバージョンはもっとも古いバージョンを選択することになる。

f:id:surumegohan:20210124170941p:plain
ジョブの編集

■Lake formation Blueprintsのカタログ

軽微な誤字がある。

[lake-fishing【を】]

と、閉じカッコの位置がずれている。

そして・・・8つのカタログが・・・でき・・ない!!?

12.2章で行き詰まった・・・・

まとめ

行き詰まったところは、後日対応します。。
というか行き詰まっていいのか・・?

ただまぁ、誤字や誤植が散見されるけれどもデータレイクの考え方とAWSの各種サービスの使い方をハンズオン形式で学べるのは良い。