ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

Cloud Dataproc での分散画像処理

ラボ 55分 universal_currency_alt クレジット: 5 show_chart 中級
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

GSP010

Google Cloud セルフペース ラボのロゴ

概要

このハンズオンラボでは、Cloud Dataproc で Apache Spark を使用して、コンピューティング負荷の高い画像処理タスクをクラスタのマシンに分散する方法について学びます。これは科学データを処理する一連のラボの一部です。

学習内容

  • Apache Spark があらかじめインストールされたマネージド Cloud Dataproc クラスタを作成する方法。
  • まだクラスタにインストールされていない外部パッケージを使用するジョブを作成して実行する方法。
  • クラスタをシャットダウンする方法。

前提条件

このラボは上級者向けです。Cloud Dataproc と Apache Spark の基本的な知識があることが推奨されますが、必須ではありません。これらのサービスについて学ぶには、以下のラボを受講してください。

準備ができたら下にスクロールして、このラボで使用するサービスについて詳しく学んでいきましょう。

設定

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] ペインでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] ペインでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニュー アイコンと検索フィールド

はじめに

Cloud Dataproc は、オープンソースのデータツールを利用してバッチ処理、クエリ実行、ストリーミング、ML を行えるマネージド Spark / Hadoop サービスです。Cloud Dataproc の自動化機能を利用すると、クラスタを速やかに作成し、簡単に管理し、必要ないときには無効にして費用を節約できます。管理にかかる時間と費用が削減されるので、自分の仕事とデータに集中できます。

コンピューティング負荷の高いジョブがあり、以下の条件を満たしている場合は、Cloud Dataproc を使用してスケールアウトすることを検討してください。

  1. データのサブセットをそれぞれ異なるマシンで処理できる、驚異的並列ジョブである。
  2. 使用できる Apache Spark コードがすでにあるか、Apache Spark の基本知識がある。
  3. すべてのデータ サブセットの処理をほぼ均一に分散できる。

必要な処理の量がサブセットによって異なる場合(または Apache Spark の知識がまだない場合)は、自動スケーリング データ パイプラインに対応している Cloud Dataflow 上の Apache Beam が有力な選択候補となります。

このラボでは、OpenCV で指定した一連の画像処理ルールを使用して、画像に含まれる顔を枠で囲むジョブを実行します。この種の処理には、このように手動でコーディングしたルールより Vision API の方が適していますが、このラボの目的は、コンピューティング負荷の高いジョブを分散方式で実行することにあります。

タスク 1. Compute Engine で開発マシンを作成する

まず、サービスをホストする仮想マシンを作成します。

  1. Cloud コンソールで、[Compute Engine] > [VM インスタンス] > [インスタンスを作成] に移動します。

[インスタンスを作成] ボタンへのナビゲーション パス。ハイライト表示されている

  1. [マシンの構成] を参照します。

    次の値を選択します。

    • [名前]: devhost
    • [シリーズ]: E2
    • [マシンタイプ]: e2-standard-2(2 vCPU)
  2. [セキュリティ] をクリックします。

    • [アクセス スコープ] セクションで、[すべての Cloud API に完全アクセス権を許可] を選択します。
  3. [作成] をクリックします。この仮想マシンを開発用の bastion(踏み台)インスタンスとして使用します。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

Compute Engine で開発マシンを作成する。
  1. 次に、コンソールで [SSH] ボタンをクリックして、このインスタンスに SSH 接続します。

タスク 2. ソフトウェアをインストールする

次に、ジョブを実行するソフトウェアを設定します。sbt(オープンソースのビルドツール)を使用して、Cloud Dataproc クラスタに送信するジョブの JAR をビルドします。この JAR には、プログラムと、ジョブを実行するために必要なパッケージが格納されます。このジョブでは、Cloud Storage バケットに保存されている一連の画像ファイルで顔を検出し、顔を枠で囲んだ画像ファイルを Cloud Storage の同じバケットまたは別のバケットに書き出します。

  1. Scala と sbt を設定します。SSH ウィンドウで、以下のコマンドを使用して Scalasbt をインストールします。これにより、コードをコンパイルできるようになります。
sudo apt-get install -y dirmngr unzip sudo apt-get update sudo apt-get install -y apt-transport-https echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add sudo apt-get update sudo apt-get install -y bc scala sbt

次に、Feature Detector のファイルをビルドします。このラボのコードは、GitHub の Cloud Dataproc リポジトリに存在するソリューションを少し変更したものです。コードをダウンロードしてから、cd でこのラボのディレクトリに移動して、Feature Detector の「fat JAR」をビルドします。これを後ほど Cloud Dataproc に送信します。

  1. SSH ウィンドウで以下のコマンドを実行します。
sudo apt-get update gsutil cp gs://spls/gsp124/cloud-dataproc.zip . unzip cloud-dataproc.zip cd cloud-dataproc/codelabs/opencv-haarcascade
  1. ビルドを開始します。次のコマンドを実行すると、Feature Detector の「fat JAR」がビルドされて、Cloud Dataproc に送信できるようになります。
sbt assembly 注: このステップには 5 分ほどかかります。完了するまで、しばらくお待ちください。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

開発マシンにソフトウェアをインストールする。

タスク 3. Cloud Storage バケットを作成して画像を収集する

Feature Detector のファイルがビルドされたら、Cloud Storage バケットを作成してサンプル画像をいくつか追加します。

  1. バケットの名前に使用するため、プロジェクト ID を取得します。
GCP_PROJECT=$(gcloud config get-value core/project)
  1. バケットに名前を付けて、その名前にシェル変数を設定します。このシェル変数をコマンドで使用してバケットを参照します。
MYBUCKET="${USER//google}-image-${RANDOM}" echo MYBUCKET=${MYBUCKET}
  1. gcloud とともに Cloud SDK に含まれている gsutil プログラムを使用して、サンプル画像を保存するバケットを作成します。
gsutil mb gs://${MYBUCKET}

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

Cloud Storage バケットを作成する。
  1. 作成したバケットにサンプル画像をダウンロードします。
curl https://www.publicdomainpictures.net/pictures/20000/velka/family-of-three-871290963799xUk.jpg | gsutil cp - gs://${MYBUCKET}/imgs/family-of-three.jpg curl https://www.publicdomainpictures.net/pictures/10000/velka/african-woman-331287912508yqXc.jpg | gsutil cp - gs://${MYBUCKET}/imgs/african-woman.jpg curl https://www.publicdomainpictures.net/pictures/10000/velka/296-1246658839vCW7.jpg | gsutil cp - gs://${MYBUCKET}/imgs/classroom.jpg

以下の画像が Cloud Storage バケットにダウンロードされます。

3 人家族

女性

教室

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

サンプル画像をバケットにダウンロードする。
  1. 次のコマンドを実行してバケットの内容を確認します。
gsutil ls -R gs://${MYBUCKET}

出力:

gs://gcpstaging20392-student-image-23218/imgs/: gs://gcpstaging20392-student-image-23218/imgs/african-woman.jpg gs://gcpstaging20392-student-image-23218/imgs/classroom.jpg gs://gcpstaging20392-student-image-23218/imgs/family-of-three.jpg `

タスク 4. Cloud Dataproc クラスタを作成する

  1. SSH ウィンドウで以下のコマンドを実行して、クラスタに名前を付けて MYCLUSTER 変数を設定します。この変数をコマンドで使用してクラスタを参照します。
MYCLUSTER="${USER/_/-}-qwiklab" echo MYCLUSTER=${MYCLUSTER}
  1. 使用するグローバルの Compute Engine リージョンを設定し、新しいクラスタを作成します。
gcloud config set dataproc/region {{{project_0.default_region | "REGION"}}} gcloud dataproc clusters create ${MYCLUSTER} \ --bucket=${MYBUCKET} \ --worker-machine-type=e2-standard-2 \ --master-machine-type=e2-standard-2 \ --initialization-actions=gs://spls/gsp010/install-libgtk.sh \ --image-version=2.0 \ --worker-boot-disk-size=30GB \ --master-boot-disk-size=30GB
  1. リージョンではなくゾーンを使用するよう求めるプロンプトが表示された場合は、「Y」を入力します。

完了までに数分かかります。このラボでは、2 つのワーカーノードを含むデフォルトのクラスタ設定で十分です。クラスタで使用されるコアの総数を減らすために、ワーカーとマスターの両方のマシンタイプに e2-standard-2 を指定しています。

initialization-actions フラグでは、クラスタの各マシンに libgtk2.0-dev ライブラリをインストールするスクリプトを渡します。このライブラリはコードを実行するために必要となります。

注: クラスタの作成に失敗した場合は、クラスタを削除して(gcloud dataproc clusters delete ${MYCLUSTER})、前のクラスタ作成コマンドを再試行してください。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

Cloud Dataproc クラスタを作成する。 注: コマンドライン フラグを使用したクラスタ設定のカスタマイズについて詳しくは、Cloud SDK の gcloud dataproc clusters create reference をご覧ください。

タスク 5. Cloud Dataproc にジョブを送信する

このラボで実行するプログラムは顔検出に使用されるため、顔を表す haar 分類器を入力する必要があります。haar 分類器とは、プログラムで検出する特徴を記述するために使用される XML ファイルです。ここでは、haar 分類器のファイルをダウンロードし、Cloud Dataproc クラスタにジョブを送信する際にその Cloud Storage パスを最初の引数として指定します。

  1. SSH ウィンドウで次のコマンドを実行して、顔検出の構成ファイルをバケットに読み込みます。
curl https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml | gsutil cp - gs://${MYBUCKET}/haarcascade_frontalface_default.xml
  1. Cloud Storage バケットの imgs ディレクトリにアップロードした一連の画像を Feature Detector への入力として使用します。そのディレクトリのパスをジョブ送信コマンドの 2 番目の引数として指定する必要があります。
  • Cloud Dataproc にジョブを送信します。
cd ~/cloud-dataproc/codelabs/opencv-haarcascade gcloud dataproc jobs submit spark \ --cluster ${MYCLUSTER} \ --jar target/scala-2.12/feature_detector-assembly-1.0.jar -- \ gs://${MYBUCKET}/haarcascade_frontalface_default.xml \ gs://${MYBUCKET}/imgs/ \ gs://${MYBUCKET}/out/

処理する他の画像を、2 番目の引数で指定した Cloud Storage バケットに追加することもできます。

  1. Cloud コンソールでナビゲーション メニュー > [Dataproc] > [ジョブ] に移動して、ジョブを監視します。

以下のような出力が表示されたら次のステップに進みます。

ジョブの出力に成功ステータスが表示されている

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

Cloud Dataproc にジョブを送信する。
  1. ジョブが完了したら、ナビゲーション メニュー > [Cloud Storage] に移動し、作成したバケット(ユーザー名の後に student-image と乱数が追加された名前のバケット)を見つけてクリックします。

  2. Out ディレクトリにある任意の画像をクリックします。

  3. [ダウンロード] アイコンをクリックすると、その画像がパソコンにダウンロードされます。

顔検出は正確に機能していますか。この種の処理には、このように手動でコーディングされたルールより Vision API の方が適しています。次のステップで確認してみましょう。

  1. (省略可)作成したバケットの imgs フォルダに移動して、アップロードした他の画像をクリックし、3 つのサンプル画像をダウンロードしてパソコンに保存します。

  2. このリンクをクリックして Vision API のページに移動し、[Try the API] セクションまでスクロールして、バケットからダウンロードした画像をアップロードします。数秒で画像検出の結果が表示されます。基盤となる機械学習モデルは継続的に改良されているため、実際の結果は以下と異なる場合があります。

女性の顔検出 教室の顔検出 3 人家族の顔検出

  1. (省略可)Feature Detector の改良に挑戦してみてください。FeatureDetector のコードを編集して、sbt assemblygcloud dataprocjobs submit コマンドを再実行します。

タスク 6. 理解度チェック

今回のラボで学習した内容の理解を深めていただくため、以下の多肢選択式問題を用意しました。正解を目指して頑張ってください。

お疲れさまでした

ここでは、Cloud Dataproc クラスタを作成してジョブを実行する方法を学習しました。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2025 年 7 月 7 日

ラボの最終テスト日: 2025 年 7 月 7 日

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

始める前に

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

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

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

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

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

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

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

ありがとうございます。

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

1 回に 1 つのラボ

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

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

Using an Incognito or private browser window is the best way to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.