E-MapReduce (EMR) コンソールで提供されているリンクを使用して、オープンソースコンポーネントの Web UI にアクセスできます。また、SSH トンネルを作成して、オープンソースコンポーネントの Web UI にアクセスすることもできます。SSH トンネルと SOCKS プロキシサーバーを使用すると、クラスタの内部ネットワーク構造を公開することなく、オープンソースコンポーネントの Web UI にアクセスできます。
オープンソースコンポーネントの Web UI にアクセスするために使用できるメソッドについては、「オープンソースコンポーネントの Web UI へのアクセス」をご参照ください。
前提条件
EMR クラスタが作成されていること。詳細については、「クラスタの作成」をご参照ください。
使用するクライアントが、目的の EMR クラスタのマスターノードに接続されていること。詳細については、「EIP を ECS インスタンスに関連付ける」をご参照ください。
ローカルポートフォワーディングを有効にするための SSH トンネルの作成
この方法を使用してオープンソースコンポーネントの Web UI にアクセスする場合、ジョブ詳細ページに移動することはできません。
ローカルポートフォワーディング方式を使用して、マスターノードのポート上のデータをローカルポートに転送し、マスターノードで実行されている Web アプリケーションインターフェイスにアクセスできます。
1. SSH トンネルの作成
オンプレミスマシンで CLI を開き、SSH モードで目的の EMR クラスタのマスターノードに接続します。EMR クラスタの作成時に構成したパスワードまたはキーを使用して、マスターノードに接続できます。
キーを使用してマスターノードに接続する
ssh -i <キーファイルのパス> -N -L <ローカルポート>:<マスターノードの名前>:<コンポーネントポート> root@<マスターノードのパブリック IP アドレス>パラメータの説明:
-i:身元認証に使用される秘密鍵ファイルのパス。-N:ポートフォワーディングを有効にし、コマンドを実行せずに SSH トンネルを作成するためにのみ使用されます。-L:ローカルポートフォワーディングが有効になります。ローカルポートを指定して、オンプレミスの Web サーバーのマスターノードでホストされているリモートポートにデータを転送できます。<キーファイルのパス>:キーファイルが保存されているパス。詳細については、「SSH キーペアの管理」をご参照ください。<ローカルポート>:オンプレミスサーバーの空いているポートを使用できます。例:8156。<マスターノードの名前>:マスターノードの [名前]。 [ノード] タブで名前を確認できます。例:master-1-1。詳細については、「ノードのパブリック IP アドレスと名前を取得する」をご参照ください。<コンポーネントポート>:オープンソースコンポーネントのポート。コンポーネントポートの詳細については、「オープンソースコンポーネントの共通ポート」をご参照ください。例:8088。<マスターノードのパブリック IP アドレス>:マスターノードの [パブリック IP アドレス]。クラスタの [ノード] タブでアドレスを確認できます。詳細については、「ノードのパブリック IP アドレスと名前を取得する」をご参照ください。
ユーザー名とパスワードを使用してマスターノードに接続する
ssh -N -L <ローカルポート>:<マスターノードの名前>:<コンポーネントポート> root@<マスターノードのパブリック IP アドレス>パラメータの説明:
-N:ポートフォワーディングを有効にし、コマンドを実行せずに SSH トンネルを作成するためにのみ使用されます。-L:ローカルポートフォワーディングが有効になります。ローカルポートを指定して、オンプレミスの Web サーバーのマスターノードでホストされているリモートポートにデータを転送できます。<ローカルポート>:オンプレミスサーバーの空いているポートを使用できます。例:8156。<マスターノードの名前>:マスターノードの [名前]。クラスタの [ノード] タブで名前を確認できます。例:master-1-1。詳細については、「ノードのパブリック IP アドレスと名前を取得する」をご参照ください。<コンポーネントポート>:オープンソースコンポーネントのポート。コンポーネントポートの詳細については、「オープンソースコンポーネントの共通ポート」をご参照ください。例:8088。<マスターノードのパブリック IP アドレス>:マスターノードの [パブリック IP アドレス]。クラスタの [ノード] タブでアドレスを確認できます。詳細については、「ノードのパブリック IP アドレスと名前を取得する」をご参照ください。
SSH トンネルを作成した後、オンプレミスサーバーを実行したままにしてください。応答は返されません。
2. オープンソースコンポーネントの Web UI へのアクセス
ブラウザのアドレスバーに http://localhost:<ローカルポート> と入力し、Enter キーを押して特定の Web UI にアクセスします。<ローカルポート> は、手順 1 で構成したローカルポートです。たとえば、YARN の Web UI にアクセスするには、http://localhost:8156 と入力します。
複数のオープンソースコンポーネントの Web UI に同時にアクセスする場合は、上記の手順を繰り返して、転送用の別のローカルポートを有効にする必要があります。
ダイナミックポートフォワーディングを有効にするための SSH トンネルの作成
オンプレミスサーバーのポートと EMR クラスタのマスターノード間の通信を許可する SSH トンネルを作成した後、ポートでリッスンする SOCKS プロキシサーバーを使用して、ポートデータを EMR クラスタのマスターノードに転送できます。その後、オンプレミスサーバーから EMR クラスタのマスターノードにあるオープンソースコンポーネントの Web UI にアクセスできます。
1. SSH トンネルの作成
オンプレミスマシンで CLI を開き、SSH モードで目的の EMR クラスタのマスターノードに接続します。EMR クラスタの作成時に構成したパスワードまたはキーを使用して、マスターノードに接続できます。
キーを使用してマスターノードに接続する
ssh -i <キーファイルのパス> -N -D <ポート> root@<マスターノードのパブリック IP アドレス>パラメータの説明:
-i:身元認証に使用される秘密鍵ファイルのパス。-N:ポートフォワーディングを有効にし、コマンドを実行せずに SSH トンネルを作成するためにのみ使用されます。-D:ダイナミックポートフォワーディングが有効になります。SOCKS プロキシプロセスを起動して、ポートでリッスンします。<キーファイルのパス>:キーファイルが保存されているパス。詳細については、「SSH キーペアの管理」をご参照ください。<ローカルポート>:オンプレミスサーバーの空いているポートを使用できます。例:8157。<マスターノードのパブリック IP アドレス>:マスターノードの [パブリック IP アドレス]。クラスタの [ノード] タブでアドレスを確認できます。詳細については、「ノードのパブリック IP アドレスと名前を取得する」をご参照ください。
ユーザー名とパスワードを使用してマスターノードに接続する
ssh -N -D <ポート> root@<マスターノードのパブリック IP アドレス>パラメータの説明:
-N:ポートフォワーディングを有効にし、コマンドを実行せずに SSH トンネルを作成するためにのみ使用されます。-D:ダイナミックポートフォワーディングが有効になります。SOCKS プロキシプロセスを起動して、ポートでリッスンします。<ローカルポート>:オンプレミスサーバーの空いているポートを使用できます。例:8157。<マスターノードのパブリック IP アドレス>:マスターノードの [パブリック IP アドレス]。クラスタの [ノード] タブでアドレスを確認できます。詳細については、「ノードのパブリック IP アドレスと名前を取得する」をご参照ください。
SSH トンネルを作成した後、オンプレミスサーバーを実行したままにしてください。応答は返されません。
2. Google Chrome ブラウザの構成
ダイナミックポートフォワーディングを有効にした後、次のいずれかの方法を使用してブラウザプロキシを構成できます。
CLI を使用する
オンプレミスマシンで CLI を開き、Google Chrome ブラウザクライアントのインストールディレクトリに移動します。
オペレーティングシステム
Google Chrome のデフォルトのインストールディレクトリ
macOS X
/Applications/Google\ Chrome.app/Contents/macOS
Linux
/usr/bin/google-chrome
Windows
64 ビットシステムと 32 ビットシステムの Google Chrome のデフォルトのインストールディレクトリ:
C:\Program Files\Google\Chrome\Application\
C:\Program Files (x86)\Google\Chrome\Application\
説明Google Chrome のデフォルトのインストールディレクトリは、オペレーティングシステムによって異なります。
手順 1 で SSH トンネルを作成したときに有効にしたポートを使用して、ローカル SOCKS プロキシを使用するように Google Chrome を構成し、Google Chrome ブラウザを起動します。
説明この例では、ポート 8157 を使用しています。
macOS X
./Google\ Chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/Linux
chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/Windows
chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=c:\\tmppath\\
Google Chrome 拡張機能を使用する
拡張機能を使用すると、Web ブラウザでプロキシを簡単に管理および使用できます。拡張機能を使用して Web ページを閲覧し、同時に Web UI にアクセスできます。
Google Chrome 拡張機能 SwitchyOmega を追加します。
SwitchyOmega ページで、左側のナビゲーションウィンドウの [新しいプロファイル] をクリックします。[新しいプロファイル] ダイアログボックスで、[プロファイル名] フィールドに SSH トンネルなどのプロファイル名を入力し、[PAC プロファイル] を選択して、[作成] をクリックします。
[PAC スクリプト] エディターに次の内容を入力します。
説明この例では、ポート 8157 を使用しています。
function regExpMatch(url, pattern) { try { return new RegExp(pattern).test(url); } catch (ex) { return false; } } function FindProxyForURL(url, host) { if (shExpMatch(url, "*localhost*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*emr-header*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*emr-worker*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*master*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*core*")) return "SOCKS5 localhost:8157"; return 'DIRECT'; }左側の [ナビゲーションウィンドウ] で、[変更を適用] をクリックして構成を完了します。
ブラウザの右上隅で、作成した SSH トンネル を選択します。
3. オープンソースコンポーネントの Web UI へのアクセス
ブラウザのアドレスバーに http://<マスターノードの名前>:<ポート> と入力し、Enter キーを押して特定の Web UI にアクセスします。たとえば、YARN の Web UI にアクセスするには、http://master-1-1:8088 と入力します。
パラメータの説明:
<マスターノードの名前>:マスターノードの [名前]。クラスタの [ノード] タブで名前を確認できます。例:master-1-1。詳細については、「ノードのパブリック IP アドレスと名前を取得する」をご参照ください。<ポート>:手順 1 で構成したローカルポート。
複数のオープンソースコンポーネントの Web UI に同時にアクセスする場合は、ポート番号を変更します。
参照
EMR コンソールでオープンソースコンポーネントの Web UI にアクセスする方法については、「EMR コンソールでオープンソースコンポーネントの Web UI にアクセスする」をご参照ください。
サービス関連の問題については、「よくある質問」をご参照ください。