Spark 履歴サーバーの起動 - AWS Glue

Spark 履歴サーバーの起動

EC2 インスタンスでサーバーをホストする AWS CloudFormation テンプレートを使用して Spark 履歴サーバーを起動するか、Docker を使用してローカルで起動できます。

AWS CloudFormation を使用した Spark 履歴サーバーの起動と Spark UI の表示

AWS CloudFormation テンプレートを使用して Apache Spark 履歴サーバーを起動し、Spark ウェブ UI を表示できます。これらのテンプレートは、要件に応じて変更する必要があるサンプルです。

AWS CloudFormation を使用して Spark 履歴サーバーを起動し、Spark UI を表示するには

  1. 次の表に示す起動スタックボタンの 1 つを選択します。これにより、AWS CloudFormation コンソールでスタックが起動されます。

    リージョン Glue 1.0/2.0の起動 Glue 3.0 の起動
    米国東部 (オハイオ)
    米国東部(バージニア北部)
    米国西部(北カリフォルニア)
    米国西部 (オレゴン)
    アフリカ (ケープタウン)

    最初に、リージョンへのコンソールアクセスを有効にする必要があります。

    アジアパシフィック (香港)

    最初に、リージョンへのコンソールアクセスを有効にする必要があります。

    アジアパシフィック (ムンバイ)
    アジアパシフィック (大阪)
    アジアパシフィック (ソウル)
    アジアパシフィック (シンガポール)
    アジアパシフィック (シドニー)
    アジアパシフィック (東京)
    カナダ(中部)
    欧州(フランクフルト)
    ヨーロッパ (アイルランド)
    ヨーロッパ (ロンドン)
    ヨーロッパ (ミラノ)

    最初に、リージョンへのコンソールアクセスを有効にする必要があります。

    欧州 (パリ)
    ヨーロッパ (ストックホルム)
    中東 (バーレーン)

    最初に、リージョンへのコンソールアクセスを有効にする必要があります。

    南米 (サンパウロ)
  2. [Specify template (テンプレートの指定)] ページで、[次へ] を選択します。

  3. [Specify stack details (スタック詳細の指定)] ページで、[Stack name (スタック名)] に入力します。パラメータの下に追加情報を入力します。

    1. Spark UI の設定

      以下の情報を指定します。

      • IP アドレス範囲 – Spark UI の表示に使用できる IP アドレス範囲。特定の IP アドレス範囲からのアクセスを制限する場合は、カスタム値を使用する必要があります。

      • 履歴サーバーポート – Spark UI のポート。デフォルト値を使用できます。

      • イベントログディレクトリ – AWS Glue ジョブまたは開発エンドポイントから保存された Spark イベントログの場所を選択します。イベントログのパススキームとして s3a:// を使用する必要があります。

      • Spark パッケージの場所 – デフォルト値を使用できます。

      • キーストアパス – HTTPS の SSL/TLS キーストアパス。カスタムキーストアファイルを使用する場合は、ここで S3 パス s3://path_to_your_keystore_file を指定できます。このパラメータを空のままにすると、自己署名証明書ベースのキーストアが生成されて使用されます。

        注記

        自己署名証明書ベースのキーストアでは、Spark UI に接続する前に生成済みの証明書を信頼するように、Spark UI に接続する各ローカルマシンを設定する必要があります。また、生成された証明書が期限切れになったら、新しい証明書を生成し、その証明書がすべてのローカルマシンで信頼される必要があります。セットアップの詳細については、「自己署名証明書」を参照してください。詳細については、Wikipedia の「Self-signed certificate」を参照してください。

      • キーストアパスワード – HTTPS 用の SSL/TLS キーストアパスワードを入力します。

    2. EC2 インスタンスの設定

      以下の情報を指定します。

      • インスタンスタイプ – Spark 履歴サーバーをホストする Amazon EC2 インスタンスのタイプ。このテンプレートによってアカウントで Amazon EC2 インスタンスが起動されるため、Amazon EC2 のコストがアカウントに別個に課金されます。

      • 最新の AMI ID – Spark 履歴サーバーインスタンスの Amazon Linux 2 の AMI ID。デフォルト値を使用できます。

      • VPC ID – Spark 履歴サーバーインスタンスの Virtual Private Cloud (VPC) の ID。アカウントで利用可能な VPC のいずれかを使用できます。デフォルトの VPC と デフォルトのネットワーク ACL を使用することは推奨されません。詳細については、Amazon VPC ユーザーガイド の「デフォルト VPC とデフォルトサブネット」および「VPC を作成する」を参照してください。

      • サブネット ID – Spark 履歴サーバーインスタンスの ID。VPC 内の任意のサブネットを使用できます。クライアントからサブネットのネットワークにアクセスできる必要があります。インターネット経由でアクセスする場合は、ルートテーブルにインターネットゲートウェイがあるパブリックサブネットを使用する必要があります。

    3. [Next] を選択します。

  4. [Configure stack options] ページで、CloudFormation がスタック内のリソースを作成、変更、または削除する方法を決定するために現在のユーザー認証情報を使用する場合は、[Next] をクリックします。アクセス許可セクションを使用して、現在のユーザー権限の代わりに使用するロールを指定し、[次へ] を選択します。

  5. [確認] ページで、テンプレートを確認します。

    [I acknowledge that AWS CloudFormation might create IAM resources] (AWS CloudFormation によって IAM リソースが作成される場合があることを承認します) を選択し、[Create stack] (スタックの作成) を選択します。

  6. スタックが作成されるまで待ちます。

  7. [Outputs (出力)] タブをクリックします。

    1. パブリックサブネットを使用している場合は、 SparkUiPublicUrl の URL をコピーします。

    2. プライベートサブネットを使用している場合は、 SparkUiPrivateUrl の URL をコピーします。

  8. ウェブブラウザを開き、URL を貼り付けます。これにより、指定したポートで HTTPS を使用してサーバーにアクセスできます。ブラウザがサーバーの証明書を認識しない場合があります。この場合、保護を上書きして続行する必要があります。

Docker を使用した Spark 履歴サーバーの起動と Spark UI の表示

ローカルアクセスを希望する (Apache Spark 履歴サーバーの EC2 インスタンスを使用しない) 場合は、Docker を使用して Apache Spark 履歴サーバーを起動し、Spark UI をローカルに表示することもできます。この Dockerfile は、要件に応じて変更する必要があるサンプルです。

前提条件

ラップトップに Docker をインストールする方法については、Docker Engine community を参照してください。

Docker を使用して Spark 履歴サーバーを起動し、Spark UI をローカルに表示するには

  1. GitHub からファイルをダウンロードします。

    Dockerfileとpom.xml を [AWS Glueコードサンプル]からダウンロードします。

  2. アクセス AWS にユーザー認証情報を使用するか、フェデレーティッドユーザー認証情報を使用するかを決定します。

    • 現在のユーザー認証情報を使用してアクセスを AWS にするには、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY で使用する値を docker run コマンドで取得します。詳細については、IAM ユーザーガイドの「IAM ユーザーのアクセスキーの管理」を参照してください。

    • SAML 2.0 フェデレーティッドユーザーを使用して AWS にアクセスするには、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN で値を取得します。詳細については、「一時的なセキュリティ認証情報のリクエスト」を参照してください。

  3. docker run コマンドで使用するイベントログディレクトリの場所を決定します。

  4. ローカルディレクトリ内のファイルを使用して、名前 glue/sparkui とタグ latest を指定して、Docker イメージを構築します。

    $ docker build -t glue/sparkui:latest .
  5. Docker コンテナを作成してスタートします。

    次のコマンドでは、ステップ 2 および 3 で事前に取得した値を使用します。

    1. ユーザー認証情報を使用して docker コンテナを作成するには、次のようなコマンドを使用します。

      docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=s3a://path_to_eventlog -Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID -Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY" -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
    2. 一時的な認証情報を使用して Docker コンテナを作成するには、org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider をプロバイダとして指定し、ステップ 2 で取得した認証情報値を指定します。詳細については、「一時的な AWSCredentialsProvider でのセッション資格情報の使用Hadoop: Amazon Web Services との統合」のドキュメント を参照してください。

      docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=s3a://path_to_eventlog -Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID -Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY -Dspark.hadoop.fs.s3a.session.token=AWS_SESSION_TOKEN -Dspark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
    注記

    これらの設定パラメータは、Hadoop-AWS モジュールに由来します。場合によっては、ユースケースに基づいて特定の設定を追加する必要があります。たとえば、隔離されたリージョンのユーザーは、spark.hadoop.fs.s3a.endpoint を設定する必要があります。

  6. ブラウザで http://localhost:18080 を開き、Spark UI をローカルに表示します。