Dataproc コンポーネント ゲートウェイ

Google Dataproc クラスタにデフォルトで組み込まれる Apache HadoopApache Spark などの一部のオープンソース コンポーネントには、ウェブ インターフェースが備わっています。こうしたインターフェースを使用すると、YARN リソース マネージャー、Hadoop Distributed File System(HDFS)、MapReduce、Spark などさまざまなクラスタ リソースと機能を管理およびモニタリングできます。Dataproc のデフォルト コンポーネントとオプション コンポーネントのウェブ エンドポイントには、コンポーネント ゲートウェイによってセキュアにアクセスできます。

Dataproc イメージ バージョン 1.3.29 以降で作成されたクラスタでは、SSH トンネルへの依存や、受信トラフィックを許可するようにファイアウォール ルールを変更することなく、コンポーネントのウェブ インターフェースへのアクセスを有効にできます。

考慮事項

  • コンポーネントのウェブ インターフェースには、IAM の dataproc.clusters.use 権限を付与されたユーザーがアクセスできます。デフォルトでは、プロジェクト メンバーだけにこの権限が付与されています(Dataproc の役割をご覧ください)。
  • コンポーネント ゲートウェイを使用して REST API(Apache Hadoop YARNApache Livy など)や履歴サーバーにアクセスすることはできません。
  • コンポーネント ゲートウェイは、Kerberos クラスタでは利用できません。
  • コンポーネント ゲートウェイが有効にされると、クラスタ内の最初のマスターノードに次のサービスが追加されます。
  • コンポーネント ゲートウェイは、node:port インターフェースへの直接アクセスを有効にしませんが、サービスの特定のサブセットを自動的にプロキシします。ノード上のサービス(node:port)にアクセスする必要がある場合は、SSH SOCKS プロキシを使用します。

コンポーネント ゲートウェイを使用してクラスタを作成する

Console

Cloud Console でコンポーネント ゲートウェイを有効にするには、Cloud Dataproc の [クラスタの作成] フォームで [コンポーネント ゲートウェイ] チェックボックスをオンにします。

gcloud コマンド

ターミナル ウィンドウまたは Cloud Shell で、Cloud SDK の gcloud beta dataproc clusters create コマンドをローカルに実行します。

    gcloud beta dataproc clusters create cluster-name \
        --enable-component-gateway \
        other args ...
    

REST API

clusters.create リクエストの一部として EndpointConfig.enableHttpPortAccess プロパティを true に設定します。

コンポーネント ゲートウェイの URL を表示してアクセスする

クラスタでコンポーネント ゲートウェイが有効になっている場合、Cloud Console 上のリンクをクリックして、クラスタの最初のマスターノードで実行されているコンポーネント ウェブ インターフェースに接続できます。また、コンポーネント ゲートウェイでは、endpointConfig.httpPorts に URL へのポート名のマップが設定されます。コンソールを使用する代わりに、gcloud コマンドライン ツールや Dataproc REST API を使用してこのマッピング情報を表示し、URL をコピーしてブラウザに貼り付けて、コンポーネントの UI に接続できます。

Console

Google Cloud Console で Dataproc の [クラスタ] フォームに移動し、クラスタを選択して [クラスタの詳細] フォームを開きます。[ウェブ インターフェース] タブをクリックすると、クラスタにインストールされているデフォルト コンポーネントとオプション コンポーネントのウェブ インターフェースへのコンポーネント ゲートウェイ リンクのリストが表示されます。いずれかのコンポーネントのリンクをクリックすると、クラスタのマスターノード上で実行されているそのコンポーネントのウェブ インターフェースがローカル ブラウザ内に開きます。

gcloud コマンド

ターミナル ウィンドウまたは Cloud Shell で、Cloud SDK の gcloud beta dataproc clusters describe コマンドをローカルに実行します。

    gcloud beta dataproc clusters describe cluster-name
    

出力例:

    ...
    config:
      endpointConfig:
        enableHttpPortAccess: true
        httpPorts:
          HDFS NameNode:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/hdfs/ MapReduce Job History:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/jobhistory/ Spark HistoryServer:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/sparkhistory/ YARN ResourceManager:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/yarn/ YARN Application Timeline:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/apphistory/ ...

REST API

ポート名と URL の endpointConfig.httpPorts マップを取得するには、clusters.get を呼び出します。

VPC-SC でのコンポーネント ゲートウェイの使用

コンポーネント ゲートウェイでは、VPC Service Controls がサポートされます。サービス境界の適用では、コンポーネント ゲートウェイを介したインターフェースへのリクエストは Dataproc API サーフェスの一部として処理され、dataproc.googleapis.com のアクセス許可を制御するアクセス ポリシーでもコンポーネント ゲートウェイの UI へのアクセスが制御されます。

また、コンポーネント ゲートウェイでは、外部 IP アドレスがない Dataproc クラスタへのプライベート Google 接続に依存する VPC-SC 構成もサポートされていますが、次のように、制限された Google 仮想 IP 範囲 199.36.153.4/30 を介して Dataproc マスター VM から *.dataproc.cloud.google.com へのアクセスを許可するようにネットワークを手動で構成する必要があります。

  1. 手順に従って、すべての Google API に対して、プライベート Google 接続を構成します。
  2. Cloud DNS によって DNS を構成するか、またはDataproc マスターノードでローカルに DNS を構成して、*.dataproc.cloud.google.com へのアクセスを許可します。

Cloud DNS によって DNS を構成する

*.dataproc.cloud.google.com を宛先とするトラフィックを、制限付きの Google API 仮想 IP 範囲にマッピングする Cloud DNS ゾーンを作成します。

  1. VPC ネットワーク用の非公開マネージド ゾーンを作成します。

        gcloud beta dns managed-zones create ZONE_NAME \
         --visibility=private \
         --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
         --description=DESCRIPTION \
         --dns-name=dataproc.cloud.google.com
         --project=PROJECT_ID
        
    • ZONE_NAME は、作成するゾーンの名前です。例: vpcこのゾーン名は、次の各ステップで使用されます。

    • PROJECT_ID は、VPC ネットワークをホストするプロジェクトの ID です。

    • NETWORK_NAME は VPC ネットワークの名前です。

    • DESCRIPTION は、人間が読める形式の説明です。これは指定しなくても構いません。

  2. トランザクションを開始します。

        gcloud dns record-sets transaction start --zone=ZONE_NAME
        
    • ZONE_NAME はゾーン名です。
  3. DNS レコードを追加します。

        gcloud dns record-sets transaction add --name=*.dataproc.cloud.google.com. \
            --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
            --zone=ZONE_NAME \
            --ttl=300
        
    • ZONE_NAME はゾーン名です。
        gcloud dns record-sets transaction add --name=dataproc.cloud.google.com. \
            --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
            --zone=ZONE_NAME \
            --ttl=300
        
    • ZONE_NAME はゾーン名です。
  4. トランザクションを実行します。

        gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
        
    • ZONE_NAME はゾーン名です。

    • PROJECT_ID は、VPC ネットワークをホストするプロジェクトの ID です。

初期化アクションで Dataproc マスターノードでローカルに DNS を構成する

dataproc.cloud.google.com へのプライベート接続を許可するように Dataproc マスターノードでローカルに DNS を構成できます。この手順は、短期的なテストと開発を目的としています。本番環境ワークロードでの使用は推奨されません。

  1. 初期化アクションを Cloud Storage にステージングします。

        cat <<EOF >component-gateway-vpc-sc-dns-init-action.sh
        #!/bin/bash
        readonly ROLE="$(/usr/share/google/get_metadata_value attributes/dataproc-role)"
    
        if [[ "${ROLE}" == 'Master' ]]; then
          readonly PROXY_ENDPOINT=$(grep "^dataproc.proxy.agent.endpoint=" \
            "/etc/google-dataproc/dataproc.properties" | \
            tail -n 1 | cut -d '=' -f 2- | sed -r 's/\\([#!=:])/\1/g')
    
          readonly HOSTNAME=$(echo ${PROXY_ENDPOINT} | \
            sed -n -E 's;^https://([^/?#]*).*;\1;p')
    
          echo "199.36.153.4 ${HOSTNAME}  # Component Gateway VPC-SC" >> "/etc/hosts"
        fi
        EOF
    
        gsutil cp component-gateway-vpc-sc-dns-init-action.sh gs://BUCKET/
        
    • BUCKET は、Dataproc クラスタからアクセスできる Cloud Storage バケットです。
  2. 初期化アクションがステージングされ、コンポーネント ゲートウェイが有効になっている Dataproc クラスタを作成します。

        gcloud beta dataproc clusters create OTHER_ARGS \
          --initialization-actions=gs://BUCKET/component-gateway-vpc-sc-dns-init-action.sh
          --enable-component-gateway
        
    • BUCKET は、上記のステップ 1 で使用される Cloud Storage バケットです。

次のステップ