1. 概要
Cloud Dataproc は、オープンソースのデータツールを利用してバッチ処理、クエリ実行、ストリーミング、機械学習を行えるマネージド Spark / Hadoop サービスです。Cloud Dataproc の自動化機能を利用すると、クラスタを速やかに作成し、簡単に管理し、必要ないときには無効にして費用を節約できます。管理にかかる時間と費用が削減されるので、自分の仕事とデータに集中できます。
このチュートリアルは、https://cloud.google.com/dataproc/overview を基に作成されています。
学習内容
- マネージド Cloud Dataproc クラスタを作成する方法(Apache Spark がプリインストール済み)
- Spark ジョブを送信する方法
- クラスタのサイズ変更の方法
- Dataproc クラスタのマスターノードに SSH で接続する方法
- gcloud を使用してクラスタ、ジョブ、ファイアウォール ルールを調べる方法
- クラスタをシャットダウンする方法
必要なもの
このチュートリアルをどのように使用しますか?
Google Cloud Platform サービスのご利用経験についてどのように評価されますか?
<ph type="x-smartling-placeholder">2. 設定と要件
セルフペース型の環境設定
- Cloud Console にログインし、新しいプロジェクトを作成するか、既存のプロジェクトを再利用します(Gmail アカウントまたは G Suite アカウントをお持ちでない場合は、アカウントを作成する必要があります)。
プロジェクト ID を忘れないようにしてください。プロジェクト ID はすべての Google Cloud プロジェクトを通じて一意の名前にする必要があります(上記の名前はすでに使用されているので使用できません)。以降、このコードラボでは PROJECT_ID
と呼びます。
- 次に、Google Cloud リソースを使用するために、Cloud Console で課金を有効にする必要があります。
このコードラボを実行しても、費用はほとんどかからないはずです。このチュートリアル以外で請求が発生しないように、リソースのシャットダウン方法を説明する「クリーンアップ」セクションの手順に従うようにしてください。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
3. Cloud Dataproc API と Google Compute Engine API を有効にする
画面の左上にあるメニュー アイコンをクリックします。
プルダウンから [API Manager] を選択します。
[API とサービスの有効化] をクリックします。
「Compute Engine」を検索します。」と入力します。[Google Compute Engine API] をクリックします。結果のリストに表示されます。
[Google Compute Engine] ページで [有効にする] をクリックします。
有効になったら、左の矢印をクリックして戻ります。
「Google Cloud Dataproc API」を検索します。有効にする必要があります
4. Cloud Shell を起動する
この Debian ベースの仮想マシンには、必要な開発ツールがすべて揃っています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働するため、ネットワークのパフォーマンスと認証が大幅に向上しています。つまり、この Codelab に必要なのはブラウザだけです(はい、Chromebook で動作します)。
- Cloud Console から Cloud Shell を有効にするには、[Cloud Shell をアクティブにする] をクリックします(環境のプロビジョニングと接続に若干時間を要します)。
Cloud Shell に接続すると、すでに認証は完了しており、プロジェクトに各自の PROJECT_ID
が設定されていることがわかります。
gcloud auth list
コマンド出力
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
コマンド出力
[core] project = <PROJECT_ID>
なんらかの理由でプロジェクトが設定されていない場合は、次のコマンドを実行します。
gcloud config set project <PROJECT_ID>
PROJECT_ID
が見つからない場合は、設定手順で使用した ID を確認するか、Cloud コンソール ダッシュボードで確認します。
Cloud Shell では、デフォルトで環境変数もいくつか設定されます。これらの変数は、以降のコマンドを実行する際に有用なものです。
echo $GOOGLE_CLOUD_PROJECT
コマンド出力
<PROJECT_ID>
- 最後に、デフォルトのゾーンとプロジェクト構成を設定します。
gcloud config set compute/zone us-central1-f
さまざまなゾーンを選択できます。詳しくは、リージョンとゾーン。
5. Cloud Dataproc クラスタを作成する
Cloud Shell が起動したら、コマンドラインを使用して、Cloud SDK gcloud コマンドや、仮想マシン インスタンスで利用可能なその他のツールを呼び出すことができます。
このラボで使用するクラスタ名を選択します。
$ CLUSTERNAME=${USER}-dplab
まず、新しいクラスタを作成します。
$ gcloud dataproc clusters create ${CLUSTERNAME} \
--region=us-central1 \
--scopes=cloud-platform \
--tags codelab \
--zone=us-central1-c
このチュートリアルでは、2 つのワーカーノードを含むデフォルトのクラスタ設定で十分です。上記のコマンドには、クラスタが作成される地理的ゾーンを指定する --zone
オプションと、--scopes
と --tags
の 2 つの詳細オプションが含まれています。これらのオプションは、有効にする機能を使用する場合に以下で説明します。コマンドライン フラグを使用してクラスタ設定をカスタマイズする方法については、Cloud SDK の gcloud dataproc clusters create
コマンドをご覧ください。
6. Spark ジョブをクラスタに送信する
ジョブは、Cloud Dataproc API の jobs.submit
リクエスト、gcloud
コマンドライン ツール、Google Cloud Platform コンソールから送信できます。SSH を使用してクラスタ内のマシン インスタンスに接続し、インスタンスからジョブを実行することもできます。
Cloud Shell コマンドラインから gcloud
ツールを使用してジョブを送信しましょう。
$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
--class org.apache.spark.examples.SparkPi \
--jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
ジョブが実行されると、Cloud Shell ウィンドウに出力が表示されます。
出力を中断するには、Ctrl+C キーを押します。これにより gcloud
コマンドは停止しますが、ジョブは引き続き Dataproc クラスタで実行されます。
7. ジョブの一覧表示と再接続
ジョブのリストを出力します。
$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}
最後に送信されたジョブがリストの一番上に表示されます。ジョブ ID をコピーして「jobId
」の部分に貼り付けます使用します。このコマンドは、指定したジョブに再接続し、その出力を表示します。
$ gcloud dataproc jobs wait jobId
ジョブが終了すると、円周率の近似値が出力に含まれます。
8. クラスタのサイズを変更
大規模な計算を実行する場合は、高速化するためにクラスタにノードを追加することをおすすめします。Dataproc を使用すると、いつでもクラスタに対してノードを追加したり、クラスタからノードを削除したりできます。
クラスタ構成を確認します。
$ gcloud dataproc clusters describe ${CLUSTERNAME}
プリエンプティブル ノードをいくつか追加して、クラスタを大きくします。
$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2
クラスタを再度確認します。
$ gcloud dataproc clusters describe ${CLUSTERNAME}
元のクラスタ記述の workerConfig
に加えて、プリエンプティブル ワーカー用の 2 つの instanceNames
を含む secondaryWorkerConfig
もあります。新しいノードの起動中は、Dataproc でクラスタのステータスが準備完了と表示されます。
最初は 2 つのノードから 4 つになったので、Spark ジョブの実行速度は約 2 倍になります。
9. クラスタへの SSH 接続
SSH 経由でマスターノードに接続します。このマスターノードのインスタンス名は常にクラスタ名に -m
が追加されたものになります。
$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c
Cloud Shell で初めて ssh コマンドを実行すると、Cloud Shell でアカウントの SSH 認証鍵が生成されます。パスフレーズを選択するか、まずは空白のパスフレーズを使用し、必要に応じて ssh-keygen
を使用して後で変更することができます。
インスタンスで、ホスト名を確認します。
$ hostname
クラスタの作成時に --scopes=cloud-platform
を指定したため、クラスタで gcloud
コマンドを実行できます。プロジェクト内のクラスタを一覧表示します。
$ gcloud dataproc clusters list
完了したら、SSH 接続からログアウトします。
$ logout
10. タグを調べる
クラスタの作成時に --tags
オプションを含めて、クラスタ内の各ノードにタグを追加しました。タグは、ファイアウォール ルールを各ノードに適用するために使用されます。この Codelab では一致するファイアウォール ルールを作成しませんでしたが、ノードのタグとネットワーク上のファイアウォール ルールを確認することはできます。
マスターノードの説明を出力します。
$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c
出力の末尾付近で tags:
を探し、codelab
が含まれていることを確認します。
ファイアウォール ルールを出力します。
$ gcloud compute firewall-rules list
SRC_TAGS
列と TARGET_TAGS
列に注意してください。ファイアウォール ルールにタグを適用すると、そのタグを持つすべてのノードでタグを使用するように指定できます。
11. クラスタをシャットダウンする
クラスタをシャットダウンするには、Cloud Dataproc API の clusters.delete
リクエスト、コマンドラインの gcloud dataproc clusters delete
実行可能ファイル、Google Cloud Platform コンソールを使用します。
Cloud Shell コマンドラインを使用してクラスタをシャットダウンします。
$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1
12. 完了
Dataproc クラスタの作成、Spark ジョブの送信、クラスタのサイズ変更、SSH を使用したマスターノードへのログイン、gcloud を使用したクラスタ、ジョブ、ファイアウォール ルールの検証、gcloud を使用したクラスタのシャットダウンを行う方法を学びました。
詳細
- Dataproc のドキュメント: https://cloud.google.com/dataproc/overview
- Codelab「コンソールを使用した Dataproc スタートガイド」
ライセンス
このソフトウェアは、クリエイティブ・コモンズの表示 3.0 汎用ライセンス、および Apache 2.0 ライセンスにより使用許諾されています。