Big Data 追加ラボ

このラボではGlue、S3、Athenaを用いてビッグデータ基盤の構築、データの分析を行います。オプション課題では、QuickSightによる可視化、Elasticsearchによる分析を行います。 不明な手順に関しては、ドキュメントなどを参照して進めてください。このハンズオンはオレゴン(us-west-2)を前提にした内容になっているため、リージョンを事前にオレゴンにしてから作業を開始してください。

所要時間 このラボの所要時間は約 70 分です。


ハンズオン準備

  1. QwikLabを起動し指定の方法でマネージメントコンソールにサインインする
  2. サービス>CloudFormationをクリックする
  3. [スタックの作成] > 「新しいリソースを使用(標準)」をクリックする
  4. テンプレートの選択を「Amazon S3 URL」にし、以下のURLを指定して、「次へ」をクリックする
    https://awsj-tc-training-public.s3-ap-northeast-1.amazonaws.com/common/cfn/adduser.template
  5. 「スタックの名前」には任意の名前を入力する
  6. 「次へ」をクリックする
  7. オプション画面ではデフォルトのままで「次へ」をクリックする
  8. レビュー画面では、画面下部に表示されているIAMリソース作成の承認チェックボックスにチェックを入れ、「スタックの作成」をクリックする
  9. スタックの作成が完了したら、マネージメントコンソールからサインアウトし、QwikLab画面に戻りマネージメントコンソールを起動する
  10. ユーザ名には「awsstudent2」、パスワードに「Labpass101」を入力する

タスク1: S3バケットの作成

このタスクでは、この後の作業で用いるバケットを作成します。

  1. サービス > S3 をクリックします。
  2. 次の条件で2つのバケットを作成します。xxxには自分の名前を設定するなどして、バケット名の重複を回避してください。
  3. これ以降の作業ではこのバケットを使用して作業を進めます。

タスク2:Kinesis Streams / Firehose の構成

このタスクではKinesis Streamsを用いてデータを収集するためのストリームと、Kinesis Firehoseを用いて60秒ごとにストリーム中のデータをS3に配信する配信ストリームを作成します。

  1. サービス > Kinesis をクリックします。
  2. [データストリームの作成] をクリックします。
  3. 以下の条件でストリームを作成します。
  4. ストリームの作成が完了したら、ナビゲーションペインから [Data Firehose] をクリックします。
  5. [Create Delivery Stream] をクリックします。
  6. 以下の条件で、配信ストリームを作成します。指定がない項目はデフォルトのままにしておきます。

タスク3: Kinesis Data Generatorの設定

このタスクではKinesis Data Generatorを用いて前のタスクで作成したストリームにデータを送信します。リージョンが オレゴン(us-west-2) になっていることを確認してからタスクを開始してください。

  1. サービス > CloudFormation をクリックします。
  2. [スタックの作成] > 「新しいリソースを使用(標準)」をクリックします。
  3. 以下の条件で、スタックを作成します。指定がない項目はデフォルトのままにしておきます。
  4. スタックの作成が完了したら、スタックの[出力] タブをクリックします。
  5. 表示されているURLをメモして、別のタブで開きます。
  6. Kinesis Data Generatorの画面が表示されるので、画面上部のサインインメニューからサインインします。ユーザー名とパスワードは前の手順で作成した kdguser / Labpass123 を用います。
  7. サインインできると、設定画面が表示さるので、以下の条件で設定します。
  8. [Send Data] をクリックすると、データが指定したKinesisストリームに送られます。さらに、前のタスクで設定したように、このデータはFirehoseにより定期的にS3バケットに配信されます。
  9. 数分待って、S3バケット xxx-lab-source にファイルが生成されていることを確認してください。またファイルを開いて、中の形式を確認してください。Kinesis Data Generator で設定したように、JSON形式のデータが配信されています。
    { "sensorId": 754, "currentTemperature": 37, "status": "OK"} { "sensorId": 2338, "currentTemperature": 59, "status": "FAIL"} { "sensorId": 6740, "currentTemperature": 44, "status": "OK"} { "sensorId": 7963, "currentTemperature": 87, "status": "FAIL"}
  10. さらにKinesis streams および Firehoseの画面を開き、モニタリング情報などを確認してみてください。
  11. このハンズオン中、Kinesis Data Genratorは起動したままにしておきます。

タスク4: Glue用IAMロールの作成

このたすくでは、この後のGlueで利用するためのIAMロールを作成します。

  1. サービス > IAM をクリックします。
  2. ナビゲーションペインから [ロール] をクリックします。
  3. [ロールの作成] をクリックします。
  4. 以下の条件で、ロールを作成します。指定がない項目はデフォルトのままにしておきます。
  5. 同様の手順で、もう一つロールを作成します。

タスク5: GlueによるETLの実行

このタスクでは前のタスクで配信されたJSON形式のデータをGlueを用いてParquet形式に変換します。

クローラの作成

  1. サービス > AWS Glue をクリックします。
  2. [今すぐ始める] をクリックします。
  3. ナビゲーションペインから [クローラの追加] をクリックします。
  4. [クローラの追加] をクリックします。
  5. 以下の条件で、クローラを作成します。指定がない項目はデフォルトのままにしておきます。
  6. クローラの一覧画面が表示されるので、lab-rawdata-crawler を選択し、[クローラの実行] をクリックします。
  7. ステータスが Ready になるのを待ちます。
  8. ナビゲーションペインから [テーブルの確認] をクリックします。
  9. テーブルがJSONとして分類されていることが確認できます。
  10. テーブル名 xxx_lab_source をクリックして詳細情報を確認します。
  11. 画面下部に、テーブルのスキーマ情報が表示されます。Kinesis Data Generatorで生成したデータ構造が認識されているのが確認できます。
  12. [パーティションの表示]をクリックします。Firehoseは、出力のタイムスタンプに基づきフォルダを階層化していますが、Glueの生成したスキーマ上では、partition_x のような列名となっているため修正します。
  13. [パーティションを閉じる]をクリックします。
  14. [スキーマの編集] をクリックします。
  15. 列名 partition_0 のセルをクリックして、列名を year に変更します。
  16. 同じ手順を繰り返し、以下のように列名を修正します。
  17. [保存] をクリックします。

ジョブの作成

  1. ナビゲーションペインから [ジョブの追加]をクリックします。
  2. [ジョブの追加]をクリックします。
  3. 以下の条件で、ジョブを作成します。指定がない項目はデフォルトのままにしておきます。
  4. [ジョブの実行] をクリックします。
  5. Parmaeters(任意) 画面が表示されます。[ジョブの実行] をクリックします。
  6. ジョブの開始から実行完了までには、5~10分以上かかる場合があります。画面下部のログを参照して、ジョブの実行を確認します。
  7. ジョブが完了したら、S3バケット xxx-lab-target を確認します。JSON形式のファイルがParquet形式に変換されているのが確認できます。
  8. Kinesis Data Generatorを停止します。

タスク6:Athenaの利用

このタスクでは前のタスクでS3に蓄積したデータに対してAthenaからクエリを実行します。

変換データ用クローラの作成

AthenaはGlueデータカタログを利用できるため、クローラを用いて前のタスクの出力をデータカタログに登録します。

  1. ナビゲーションペインから [クローラの追加] をクリックします。
  2. [クローラの追加] をクリックします。
  3. 以下の条件で、クローラを作成します。指定がない項目はデフォルトのままにしておきます。
  4. クローラの一覧画面が表示されるので、lab-stageddata-crawler を選択し、[クローラの実行] をクリックします。
  5. ステータスが Ready になるのを待ちます。
  6. ナビゲーションペインから [テーブルの確認] をクリックします。
  7. テーブルがParguetとして分類されていることが確認できます。
  8. テーブル名 xxx_lab_target をクリックして詳細情報を確認します。
  9. 画面下部に、テーブルのスキーマ情報が表示されます。JSON形式のテーブルのと同じ構造で認識されているのが確認できます。
  10. [パーティションの表示]をクリックします。S3バケットのフォルダと同一のパーティションになっていることが確認できます。
  11. [パーティションを閉じる]をクリックします。

Athenaによるクエリの実行

  1. サービス > S3 をクリックします。
  2. 次の条件でAthena用のバケットを作成します。xxxには自分の名前を設定するなどして、バケット名の重複を回避してください。
  3. サービス > Athena をクリックします。
  4. [Get Started] をクリックします。
  5. チュートリアルが表示された場合は、チュートリアルを閉じます。また、Glueカタログへのアップグレードが表示された場合は、[Upgrade]をクリックしてアップグレードを実行してください。
  6. 画面上部に表示されている Workgroup: primaryをクリックします。
  7. primary ワークグループを選択します。
  8. [View details] をクリックします。
  9. [Edit workgroup] をクリックします。
  10. Query result location の[Select] をクリックして、先ほど作成したxxx-lab-athenaを選択します。
  11. [Select] をクリックします。
  12. [Save] をクリックします。
  13. 画面上部に表示されている Query Editor をクリックします。
  14. 画面左に表示されている Databaselab_staged_db にします。
  15. Query Editorにクエリの入力して実行します。[Run Query]がクリックできない場合は、CTRL+ENTERで実行してください。
    SELECT count(*) FROM xxx_lab_target WHERE status = 'FAIL'
    SELECT sensorId, currentTemperature, status FROM xxx_lab_target WHERE status = 'FAIL'

オプションタスク1:QuickSightによる可視化

このオプションタスクを実施する場合は、必ず最後の手順を実施して、明示的にアカウント解除を行ってください。

QuickSightアカウントの登録

  1. サービス>QuickSightをクリックします。
  2. [Sign up for QuickSight]をクリックします。

    サブスクリプションが解除されていない環境の場合、メールアドレスの登録画面が表示されます。その場合、メールアドレスにaaa@bbb.cccを入力して、アカウントとサブスクリプションを解除してください。操作方法が不明の場合は、インストラクターを呼んでんでください。

  3. 「Create your QuickSight account」では Standard を選択し、[Continue]をクリックします。
  4. アカウント登録の画面では以下を入力して、[完了]をクリックします。(指定がない項目はデフォルトのまま)
  5. アカウント登録が完了したら、[Amazon QuickSightに移動する]をクリックします。

データセットの作成

  1. 画面右上の[データの管理]をクリックします。
  2. 画面左上の[新しいデータセット]をクリックします。
  3. データソースに Athena を選択します。
  4. 「新規Athenaデータソース」画面では、次を設定します。
  5. [データソースを作成]をクリックします。
  6. 「テーブルの選択」画面では、lab_staged_dbを選択し、xxx_lab_target をクリックします。
  7. [選択] をクリックします。
  8. 「データセットの作成を終了する」画面では、「データクエリの直接実行」を選択します。
  9. [Visualize] をクリックします。

可視化

  1. ビジュアルタイプに 円グラフ を選択します。
  2. グループに Statusをドラッグします。これによって各スタータスの割合が円グラフとして表示されます。
  3. 可視化を行ったら画面上部の「キャプチャ」をクリックします。これによってグラフのビジュアルがキャプチャされます。
  4. 画面左に表示されている「視覚化」をクリックします。
  5. いくつかの種類でビジュアルを作成し、キャプチャを行います。
  6. 画面左から「ストーリー」をクリックします。
  7. キャプチャしたビジュアルが表示されるので一番上のビジュアルをクリックします。
  8. 画面下部の [次へ] をクリックして、ビジュアルを進めます。
  9. 最後のビジュアルまで表示したら、[ストーリーを中止する] をクリックします。

アカウントの解除

このオプションタスクを実施した場合は、必ず最後にこの作業を行ってください。

  1. 画面右上に表示されているユーザー名 awsstudent2 をクリックします。
  2. QuickSightの管理 をクリックします。
  3. アカウント設定 をクリックします。
  4. [サブスクリプション解除] をクリックします。
  5. Unsubscribe from QuickSightstudent アカウントが選ばれていることを確認して、[サブスクリプション解除] をクリックします。
  6. [Go to AWS Console] をクリックします。

オプションタスク2:Elasticsearchによる分析

Elasticsearchの設定

  1. サービス > Elasticsearch Service を選択します。
  2. [新しいドメインの作成] をクリックします。
  3. 以下の条件で、ドメインを作成します。指定がない項目はデフォルトのままにしておきます。
  4. しばらくドメインの初期化処理が続きますので、終了するまで待ちます。(10分以上かかる場合があります)

Fireohoseの設定

  1. サービス > Kinesis をクリックします。
  2. [配信ストリームの作成] をクリックします。
  3. 以下の条件で、配信ストリームを作成します。指定がない項目はデフォルトのままにしておきます。
  4. Kinesis Data Generatorに再度サインインします。サインアウトしてなかった場合は、一度サインアウトしてください。ユーザー名とパスワードは前の手順で作成した kdguser / Labpass123 を用います。
  5. 「タスク3: Kinesis Data Generatorの設定」の設定を再度入力して、データ送信を開始します。
  6. これによってElasticsearchへの配信が開始されます。数分待って次の手順に進みます。

Kibanaの利用

  1. サービス > Elasticsearch Service をクリックします。
  2. lab-domain をクリックします。
  3. [概要] タブに表示されているKibanaのリンクをクリックします。
  4. 「Welcome to Kibana」画面が表示されたら、画面下部の Explore on my own をクリックします。
  5. 画面左の [Management] > Index Pattern をクリックします。
  6. Create index patternに以下の設定を行います。
  7. 画面左から [Discover] をクリックします。
  8. 画面上部のクエリバーにクエリを入力します。
    status: OK
    currentTemperature: [10 TO 20]
    currentTemperature: [10 TO 20] AND status: FAIL
  9. 時間があれば他の機能も使用してみてください。

ラボを終了する

お疲れ様でした。 このラボを完了しました。Qwiklabs画面で [ラボの終了] をクリックして終了してください。