Amazon EMR クラスターでホストされている Apache Spark ウェブインターフェイスを表示したいと考えています。
解決方法
Spark History Server は、EMR クラスターで実行中の Spark ジョブと完了した Spark ジョブのステータスを表示できる Web UI です。
パブリックおよびプライベートサブネットでホストされている Spark UI にアクセスする一般的な方法は次のとおりです。
- 永続的なアプリケーションユーザーインターフェイス
- クラスター上のアプリケーションユーザーインターフェイス
永続的なアプリケーションユーザーインターフェイス
EMR クラスターでは、apppusher デーモンが定期的に Spark イベントログを Amazon EMR の本番バケットに送信します。永続的な Spark UI は、イベントログを使用して Spark アプリケーションを表示します。
この機能は、アプリケーションのイベントログディレクトリが HDFS 内である場合に機能します。デフォルトでは、Amazon EMR は HDFS の /var/log/spark/apps ディレクトリにイベントログを保存します。デフォルトディレクトリを Amazon Simple Storage Service (Amazon S3) などの別のファイルシステムに変更すると、これは機能しません。詳細については、「考慮事項と制約事項」を参照してください。
アクティブなクラスターと終了したクラスターのアプリケーション履歴および関連するログファイルにアクセスできます。ログは、アプリケーションの終了後 30 日間利用できます。詳細については、「View persistent application user interfaces」(永続アプリケーションのユーザーインターフェイスを表示する) を参照してください。
クラスター上のアプリケーションユーザーインターフェイス
クラスター上のユーザーインターフェイスはプライマリノードでホストされ、ウェブサーバーへの SSH 接続を必要とします。
クラスター上の UI にアクセスするには、次を実行します。
1. SSH を使用してプライマリノードに接続します。
2. SSH トンネリングを動的ポート転送で設定します。
3. SOCKS プロキシ設定を管理するには、Firefox の FoxyProxy や Chrome の SwitchyOmega などのアドオンを使用するようにインターネットブラウザを設定します。
この方法では、テキストパターンに基づいて自動的に URL をフィルタリングします。また、この方法は、プライマリノードの DNS 名の形式と一致するドメインにプロキシ設定を制限します。
ssh -i ~/mykeypair.pem -N -L 8157:ec2-###-##-##-###.compute-1.amazonaws.com:18080 hadoop@ec2-###-##-##-###.compute-1.amazonaws.com
詳細については、「Option 1: Set up an SSH tunnel to the primary node using local port forwarding」(オプション 1: ローカルポート転送を使用してプライマリノードへの SSH トンネルをセットアップする) を参照してください。
プライベートサブネットのクラスター上の UI には、VPN 接続または AWS Direct Connect を通じてローカルネットワークを使用しない限り、直接アクセスできません。また、通信が AWS とローカルネットワークにまたがるようにルートを設定する必要があります。
または、パブリックサブネットでホストされている踏み台またはジャンプサーバーを使用してプライベートサブネットに接続できます。その後、動的ポート転送で SSH トンネリングを作成します。
詳細については、「Securely access web interfaces on Amazon EMR launched in a private subnet」(プライベートサブネットで起動された Amazon EMR のウェブインターフェイスに安全にアクセスする) を参照してください。