Hadoop クラスタの作成
Dataproc を使用すると、Bigtable インスタンスに接続し Hadoop ジョブを実行できる Compute Engine インスタンスを作成できます。このページでは、Dataproc を使用して以下のタスクを自動化する方法について説明します。
- Java 用 Hadoop と HBase クライアントのインストール
- Hadoop と Bigtable の構成
- Cloud Bigtable の正しい認証スコープの設定
Dataproc クラスタを作成した後、そのクラスタを使用して、Bigtable からのデータの読み取りと Bigtable へのデータの書き込みを行う Hadoop ジョブを実行できます。
このページの説明は、Hadoop に精通していることを前提としています。Dataproc について詳しくは、Dataproc のドキュメントをご覧ください。
始める前に
始める前に、以下のタスクを実行する必要があります。
- Bigtable インスタンスを作成します。プロジェクト ID と Bigtable インスタンス ID を確実にメモしてください。
-
Enable the Cloud Bigtable API, Cloud Bigtable Admin API, Dataproc, and Cloud Storage JSON APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - ユーザー アカウントが、権限
storage.objects.get
を含むロールに存在することを確認します。Google Cloud コンソールで [IAM] ページを開きます。
- Google Cloud CLI をインストールします。詳しくは、gcloud CLI の設定手順をご覧ください。
-
サンプル Hadoop ジョブの実行に使用する Apache Maven をインストールします。
Debian GNU/Linux または Ubuntu 上で、次のコマンドを実行します。
sudo apt-get install maven
RedHat Enterprise Linux または CentOS 上で、次のコマンドを実行します。
sudo yum install maven
macOS 上で Homebrew をインストールした後、次のコマンドを実行します。
brew install maven
- GitHub リポジトリ GoogleCloudPlatform/cloud-bigtable-examples のクローンを作成します。ここには、Bigtable を使用する Hadoop ジョブの例が含まれます。
git clone https://github.com/GoogleCloudPlatform/cloud-bigtable-examples.git
Cloud Storage バケットを作成する
Dataproc は、Cloud Storage バケットを使用して一時ファイルを格納します。ファイル名の競合を防ぐには、Dataproc の新しいバケットを作成します。
Cloud Storage バケット名は、すべてのバケットにわたってグローバルに一意である必要があります。Google Cloud プロジェクト名を含む名前など、利用可能なバケット名を選択します。
名前を選択した後、次のコマンドを使用して新しいバケットを作成してください。ここで、大かっこ内の値は、適切な値で置き換えてください。
gcloud storage buckets create gs://[BUCKET_NAME] --project=[PROJECT_ID]
Dataproc クラスタを作成する
次のコマンドを実行して、4 つのワーカーノードを持つ Dataproc クラスタを作成します。ここで、大かっこ内の値は、適切な値で置き換えてください。
gcloud dataproc clusters create [DATAPROC_CLUSTER_NAME] --bucket [BUCKET_NAME] \
--region [region] --num-workers 4 --master-machine-type n1-standard-4 \
--worker-machine-type n1-standard-4
構成可能な追加設定については、gcloud dataproc clusters create
のドキュメントをご覧ください。テキスト Insufficient 'CPUS' quota
を含むエラー メッセージが表示される場合、--num-workers
フラグに小さな値を設定してみてください。
Dataproc クラスタをテストする
Dataproc クラスタを設定した後、単語がテキスト ファイル内に出現する回数をカウントするサンプル Hadoop ジョブを実行して、クラスタをテストできます。サンプルジョブでは、Bigtable を使用してオペレーションの結果を格納します。自分の Hadoop ジョブを設定するときに、このサンプルジョブをリファレンスとして使用できます。
サンプル Hadoop ジョブを実行する
- GitHub リポジトリのクローンを作成したディレクトリで、ディレクトリ
java/dataproc-wordcount
に移動します。 次のコマンドを実行してプロジェクトをビルドします。ここで、大かっこ内の値は、適切な値で置き換えてください。
mvn clean package -Dbigtable.projectID=[PROJECT_ID] \ -Dbigtable.instanceID=[BIGTABLE_INSTANCE_ID]
次のコマンドを実行して Hadoop ジョブを開始します。ここで、大かっこ内の値は、適切な値で置き換えてください。
./cluster.sh start [DATAPROC_CLUSTER_NAME]
ジョブが完了すると、単語 WordCount
の後にハイフンと一意の番号が続く、出力テーブルの名前が表示されます。
Output table is: WordCount-1234567890
Hadoop ジョブの結果を検証する
オプションで、Hadoop ジョブを実行した後、cbt
CLI を使用してジョブが正しく実行されたことを確認できます。
-
Cloud Shell でターミナル ウィンドウを開きます。
cbt
CLI をインストールします。gcloud components update
gcloud components install cbt
- 出力テーブルをスキャンして、Hadoop ジョブの結果を表示します。
[TABLE_NAME]
は、ユーザーの出力テーブルの名前に置き換えます。cbt -instance [BIGTABLE_INSTANCE_ID] read [TABLE_NAME]
これで、クラスタがセットアップされたことを確認したので、それを使用して独自の Hadoop ジョブを実行できます。
Dataproc クラスタを削除する
Dataproc クラスタの使用を終了したら、次のコマンドを実行してクラスタのシャットダウンと削除を行います。[DATAPROC_CLUSTER_NAME]
は、Dataproc クラスタの名前に置き換えます。
gcloud dataproc clusters delete [DATAPROC_CLUSTER_NAME]
次のステップ
- Dataproc について確認する。
- Java 用 HBase クライアントを使ってみる。