arrow_back

ストリーミング データの処理: Bigtable へのストリーミング データ パイプライン

ログイン 参加
700 以上のラボとコースにアクセス

ストリーミング データの処理: Bigtable へのストリーミング データ パイプライン

ラボ 2時間 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

概要

このラボでは Dataflow を使用して、Google Cloud Pub/Sub で利用可能なトラフィック センサー シミュレーション データからトラフィック イベントを収集し、Bigtable テーブルに書き込みます。

注: このドキュメントの作成時点では、Dataflow Python SDK でストリーミング パイプラインを使用することはできません。そのため、ストリーミングのラボでは Java を使用しています。

目標

このラボでは、次のタスクを行います。

  • Dataflow パイプラインを起動して Pub/Sub からデータを読み取り、Bigtable に書き込む。
  • HBase シェルを開き、Bigtable データベースに対してクエリを実行する

設定

各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。

  1. Qwiklabs にシークレット ウィンドウでログインします。

  2. ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
    一時停止機能はありません。必要な場合はやり直せますが、最初からになります。

  3. 準備ができたら、[ラボを開始] をクリックします。

  4. ラボの認証情報(ユーザー名パスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。

  5. [Google Console を開く] をクリックします。

  6. [別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
    他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。

  7. 利用規約に同意し、再設定用のリソースページをスキップします。

プロジェクトの権限を確認する

Google Cloud で作業を開始する前に、Identity and Access Management(IAM)内で適切な権限がプロジェクトに付与されていることを確認する必要があります。

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[IAM と管理] > [IAM] を選択します。

  2. Compute Engine のデフォルトのサービス アカウント {project-number}-compute@developer.gserviceaccount.com が存在し、編集者のロールが割り当てられていることを確認します。アカウントの接頭辞はプロジェクト番号で、ナビゲーション メニュー > [Cloud の概要] > [ダッシュボード] から確認できます。

Compute Engine のデフォルトのサービス アカウント名と編集者のステータスがハイライト表示された [権限] タブページ

注: アカウントが IAM に存在しない場合やアカウントに編集者のロールがない場合は、以下の手順に沿って必要なロールを割り当てます。
  1. Google Cloud コンソールのナビゲーション メニューで、[Cloud の概要] > [ダッシュボード] をクリックします。
  2. プロジェクト番号(例: 729328892908)をコピーします。
  3. ナビゲーション メニューで、[IAM と管理] > [IAM] を選択します。
  4. ロールの表の上部で、[プリンシパル別に表示] の下にある [アクセス権を付与] をクリックします。
  5. [新しいプリンシパル] に次のように入力します。
{project-number}-compute@developer.gserviceaccount.com
  1. {project-number} はプロジェクト番号に置き換えてください。
  2. [ロール] で、[Project](または [基本])> [編集者] を選択します。
  3. [保存] をクリックします。

タスク 1. 準備

トレーニング用 VM からセンサー シミュレータを実行します。複数のファイルと環境設定が必要になります。

SSH ターミナルを開いてトレーニング用 VM に接続する

  1. コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で、[Compute Engine] > [VM インスタンス] をクリックします。

  2. training-vm という名前のインスタンスがある行を確認します。

  3. 右端の [接続] 列で、[SSH] をクリックしてターミナル ウィンドウを開きます。次に [接続] をクリックします。

このラボでは、training-vm 上で CLI コマンドを入力します。

初期化が完了していることを確認する

  • training-vm によってバックグラウンドでソフトウェアのインストールが行われます。新しいディレクトリの内容を調べて設定が完了していることを確認します。
ls /training

list(ls)コマンド出力の結果が次の画像のように表示された場合、設定は完了しています。完全なリストが表示されない場合は、数分待ってからもう一度実行してください。

注: バックグラウンドのすべての処理が完了するまで、2~3 分かかることがあります。 student-04-2324ale56789@training-vm:~$ ls /training bq-magic.sh project_env.sh sensor_magic.sh student-04-2324ale56789@training-vm:~$

コード リポジトリをダウンロードする

  • このラボで使用するコード リポジトリをダウンロードします。
git clone https://github.com/GoogleCloudPlatform/training-data-analyst

環境変数を設定する

  • training-vm の SSH ターミナルで次のように入力します。
source /training/project_env.sh

このスクリプトにより、$DEVSHELL_PROJECT_ID$BUCKET の環境変数が設定されます。

HBase クイックスタート ファイルを準備する

  • training-vm の SSH ターミナルでスクリプトを実行し、クイックスタート ファイルをダウンロードして解凍します(後でこれらのファイルを使って HBase シェルを実行します)。
cd ~/training-data-analyst/courses/streaming/process/sandiego ./install_quickstart.sh

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 training_vm ホーム ディレクトリにサンプル ファイルをコピーする

タスク 2. Pub/Sub へのトラフィック センサーデータのシミュレート

  • training-vm の SSH ターミナルでセンサー シミュレータを起動します。次のスクリプトは、CSV ファイルからサンプルデータを読み取って Pub/Sub にパブリッシュします。
/training/sensor_magic.sh

このコマンドを実行すると、1 時間分のデータが 1 分で送信されます。現在のターミナルでスクリプトの実行を継続します。

SSH ターミナルをもう 1 つ開いてトレーニング用 VM に接続する

  1. training-vm の SSH ターミナルの右上にある歯車アイコン(設定アイコン)をクリックし、プルダウン メニューから [新しい接続] を選択します。新しいターミナル ウィンドウが開きます。

新しいターミナル セッションには、必要な環境変数が設定されていません。これらの変数を設定するには、次の手順を実行します。

  1. training-vm の新しい SSH ターミナルで次のように入力します。
source /training/project_env.sh

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Pub/Sub へのトラフィック センサーデータのシミュレート

タスク 3. Dataflow パイプラインの起動

  1. 適切な API と権限を設定するために、Cloud Shell で以下のコードブロックを実行します。
gcloud services disable dataflow.googleapis.com --force gcloud services enable dataflow.googleapis.com
  1. training-vm の 2 つ目の SSH ターミナルで、このラボのディレクトリに移動します。Cloud Shell または nano でスクリプトを調べます。コードは変更しないでください。
cd ~/training-data-analyst/courses/streaming/process/sandiego nano run_oncloud.sh

このスクリプトは何を実行するのでしょうか。

このスクリプトは 3 つの必須の引数(project id、bucket name、classname)を入力として受け取ります。さらに 4 つ目の引数(options)を受け取ることもできます。ここでは、Cloud Bigtable への書き込みをパイプラインに指示する --bigtable オプションを使用します。

  1. Ctrl+X キーを押して終了します。

  2. 次のコマンドを実行して Bigtable インスタンスを作成します。

cd ~/training-data-analyst/courses/streaming/process/sandiego export ZONE={{{project_0.startup_script.gcp_zone|Lab GCP Zone}}} ./create_cbt.sh
  1. 次のコマンドを実行して、Dataflow パイプラインによって Pub/Sub から読み取り、Cloud Bigtable に書き込みます。
cd ~/training-data-analyst/courses/streaming/process/sandiego export REGION={{{project_0.startup_script.gcp_region|Lab GCP Region}}} ./run_oncloud.sh $DEVSHELL_PROJECT_ID $BUCKET CurrentConditions --bigtable

正常に実行された場合の例:

[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 47.582 s [INFO] Finished at: 2018-06-08T21:25:32+00:00 [INFO] Final Memory: 58M/213M [INFO] ------------------------------------------------------------------------

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Dataflow パイプラインの起動

タスク 4. パイプラインの確認

  1. コンソールのブラウザタブに戻り、ナビゲーション メニューナビゲーション メニュー アイコン)で [Dataflow] をクリックし、新しいパイプライン ジョブをクリックします。パイプライン ジョブがリストに表示されていること、およびエラーなく実行されていることを確認します。

  2. パイプライン グラフの write:cbt ステップを確認して右側の下矢印をクリックすると、実行中の書き込みが表示されます。該当する書き込みをクリックします。[ステップの概要] で、[Bigtable のオプション] を確認してください。

タスク 5. Bigtable データに対するクエリの実行

  1. training-vm の 2 つ目の SSH ターミナルで、quickstart.sh スクリプトを実行して HBase シェルを起動します。
cd ~/training-data-analyst/courses/streaming/process/sandiego/quickstart ./quickstart.sh
  1. スクリプトが完了すると、次のような HBase シェル プロンプトが表示されます。
hbase(main):001:0>
  1. HBase シェル プロンプトで次のクエリを実行すると、パイプラインから Bigtable テーブルに入力した 2 つの行を取得できます。HBase クエリを介して結果が返るまで数分かかることがあります。

返された行のリストが表示されるまで、scan コマンドを繰り返し実行してください。

scan 'current_conditions', {'LIMIT' => 2}
  1. 出力を確認します。各行は列、タイムスタンプ、値の組み合わせで構成されています。

  2. 別のクエリを実行します。今度は [lane: speed] 列の 10 行のみを対象に、開始行と終了行の rowid パターンを指定してスキャンします。

scan 'current_conditions', {'LIMIT' => 10, STARTROW => '15#S#1', ENDROW => '15#S#999', COLUMN => 'lane:speed'}
  1. 出力を確認します。列、タイムスタンプ、値の組み合わせが 10 個表示されますが、これらはすべて Highway 15 に関するものです。列が [lane: speed] に限定されていることも確認してください。

  2. クエリ構文の知識がある方は、他のクエリも実行してみてください。終了したら、「quit」と入力してシェルを閉じます。

quit

タスク 6. クリーンアップ

  1. training-vm の 2 つ目の SSH ターミナルで、次のスクリプトを実行して Bigtable インスタンスを削除します。
cd ~/training-data-analyst/courses/streaming/process/sandiego ./delete_cbt.sh

確認するメッセージが表示されたら、「Y」と入力します。

  1. Cloud コンソールの [Dataflow] ページでパイプライン ジョブ名をクリックします。

  2. 上部のメニューバーにある [停止] をクリックします。[キャンセル] を選択してから [ジョブの停止] をクリックします。

  3. パブリッシャーを含む最初の SSH ターミナルに戻り、Ctrl+C キーを入力して停止します。

  4. BigQuery コンソールで、demos データセットの横にあるその他アイコンをクリックし、[削除] をクリックします。

  5. delete」と入力してから [削除] をクリックします。

ラボを終了する

ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。

Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。