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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  • ユーザー アカウントが、権限 storage.objects.get を含むロールに存在することを確認します。

    Google Cloud コンソールで [IAM] ページを開きます。

    [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 ジョブを実行する

  1. GitHub リポジトリのクローンを作成したディレクトリで、ディレクトリ java/dataproc-wordcount に移動します。
  2. 次のコマンドを実行してプロジェクトをビルドします。ここで、大かっこ内の値は、適切な値で置き換えてください。

    mvn clean package -Dbigtable.projectID=[PROJECT_ID] \
        -Dbigtable.instanceID=[BIGTABLE_INSTANCE_ID]
    
  3. 次のコマンドを実行して Hadoop ジョブを開始します。ここで、大かっこ内の値は、適切な値で置き換えてください。

    ./cluster.sh start [DATAPROC_CLUSTER_NAME]
    

ジョブが完了すると、単語 WordCount の後にハイフンと一意の番号が続く、出力テーブルの名前が表示されます。

Output table is: WordCount-1234567890

Hadoop ジョブの結果を検証する

オプションで、Hadoop ジョブを実行した後、cbt CLI を使用してジョブが正しく実行されたことを確認できます。

  1. Cloud Shell でターミナル ウィンドウを開きます。

    Cloud Shell で開く

  2. cbt CLI をインストールします。
        gcloud components update
        gcloud components install cbt
  3. 出力テーブルをスキャンして、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]

次のステップ