Amazon EMR
管理ガイド

SSH を使用してマスターノードに接続する

セキュアシェル(SSH)とは、リモートコンピュータとの安全な接続を確立するために使用できるネットワークプロトコルです。接続後、ローカルコンピュータ上のターミナルは、リモートコンピュータで実行されているかのように動作します。ローカルで発行したコマンドがリモートコンピュータで実行され、リモートコンピュータからのコマンドの出力はターミナルウィンドウに表示されます。

AWS で SSH を使用する場合は、クラウドで実行される仮想サーバーである EC2 インスタンスに接続します。SSH を Amazon EMR で使用する場合の最も一般的な使い方は、クラスターのマスターノードとして動作する EC2 インスタンスに接続するというものです。

SSH を使用してマスターノードに接続すると、クラスターを監視し、操作できます。たとえば、マスターノードで Linux コマンドを発行したり、Hive や Pig などのアプリケーションをインタラクティブに実行したりできます。また、ディレクトリのブラウズやログファイルの読み取りなども可能です。SSH 接続にトンネルを作成して、マスターノードでホストされるウェブインターフェイスを表示することもできます。詳細については、「Amazon EMR クラスターでホストされているウェブサイトの表示」を参照してください。

SSH を使用してマスターノードに接続するには、マスターノードのパブリック DNS 名が必要です。また、マスターノードに関連付けられるセキュリティグループには、SSH 接続元のクライアントを含むソースからの SSH (TCP ポート 22) トラフィックを許可するインバウンドルールがある必要があります。クライアントからの SSH 接続を許可するルールの追加が必要になる場合があります。セキュリティグループのルールの変更の詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「セキュリティグループを使用してネットワークトラフィックを制御する」および「セキュリティグループへのルールの追加」を参照してください。

マスターノードのパブリック DNS 名の取得

マスターパブリック DNS 名は、Amazon EMR コンソールと AWS CLI を使用して取得できます。

Amazon EMR コンソールを使用して、マスターノードのパブリック DNS 名を取得するには

  1. Amazon EMR コンソール (https://console.aws.amazon.com/elasticmapreduce/) を開きます。

  2. [Cluster List] ページで、クラスターのリンクを選択します。

  3. [Cluster Details] ページの上部に表示される [Master public DNS] の値を書き留めます。

    
									マスターパブリック DNS 名の取得

    注記

    マスターパブリック DNS 名の横にある [SSH] リンクを選択して、マスターノードへの SSH 接続を作成する手順を表示することもできます。

    
										SSH の作成手順

AWS CLI を使用して、マスターノードのパブリック DNS 名を取得するには

  1. クラスター識別子を取得するには、次のコマンドを入力します。

    aws emr list-clusters

    出力には、クラスター ID を含むクラスターのリストが表示されます。接続しているクラスターのクラスター ID を書き留めます。

    "Status": { "Timeline": { "ReadyDateTime": 1408040782.374, "CreationDateTime": 1408040501.213 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 4, "Id": "j-2AL4XXXXXX5T9", "Name": "My cluster"
  2. クラスターのマスターパブリック DNS 名を含むクラスターインスタンスのリストを表示するには、次のいずれかのコマンドを入力します。j-2AL4XXXXXX5T9 の部分を、前のコマンドで返されたクラスター ID に置き換えてください。

    aws emr list-instances --cluster-id j-2AL4XXXXXX5T9

    または:

    aws emr describe-cluster --cluster-id j-2AL4XXXXXX5T9

    出力には、DNS 名と IP アドレスを含むクラスターインスタンスのリストが表示されます。PublicDnsName の値を書き留めます。

    "Status": { "Timeline": { "ReadyDateTime": 1408040779.263, "CreationDateTime": 1408040515.535 }, "State": "RUNNING", "StateChangeReason": {} }, "Ec2InstanceId": "i-e89b45e7", "PublicDnsName": "ec2-###-##-##-###.us-west-2.compute.amazonaws.com" "PrivateDnsName": "ip-###-##-##-###.us-west-2.compute.internal", "PublicIpAddress": "##.###.###.##", "Id": "ci-12XXXXXXXXFMH", "PrivateIpAddress": "###.##.#.###"

詳細については、AWS CLI の Amazon EMR コマンドを参照してください。

Linux、Unix、Mac OS X で SSH および Amazon EC2 プライベートキーを使用してマスターノードに接続する

プライベートキーファイルで認証された SSH 接続を作成するには、クラスター起動時に Amazon EC2 キーペアのプライベートキーを指定する必要があります。コンソールからクラスターを起動する場合、Amazon EC2 キーペアのプライベートキーは、[Create Cluster] ページの [Security and Access] セクションで指定されます。キーペアへのアクセスの詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「Amazon EC2 キーペア」を参照してください。

ほとんどの場合、Linux コンピュータにはデフォルトで SSH クライアントがあります。たとえば、ほとんどの Linux、Unix、および Mac OS オペレーティングシステムには OpenSSH がインストールされています。SSH クライアントがあるかどうかを確認するには、コマンドラインで ssh と入力します。ご使用のコンピュータでこのコマンドが認識されない場合、マスターノードに接続するために SSH クライアントをインストールします。OpenSSH プロジェクトが、SSH ツールの完全なスイートの無料実装を提供しています。詳細については、OpenSSH のウェブサイトを参照してください。

以下の手順では、Linux、Unix、および Mac OS X で、Amazon EMR マスターノードへの SSH 接続を開く方法を示します。

キーペアのプライベートキーのファイルアクセス許可を設定するには

Amazon EC2 キーペアのプライベートキーを使用して SSH 接続を作成する前に、キー所有者のみがファイルへのアクセス権限を持つように .pem ファイルに対するアクセス許可を設定しておく必要があります。これは、ターミナルまたは AWS CLI を使用して SSH 接続を作成するために必要です。

  1. .pem ファイルを見つけます。この手順では、ファイル名が mykeypair.pem であり、現在のユーザーのホームディレクトリに保存されていることを想定しています。

  2. 次のコマンドを入力してアクセス許可を設定します。~/mykeypair.pem の部分を、キーペアのプライベートキーファイルの場所とファイル名に置き換えてください。

    chmod 400 ~/mykeypair.pem

    .pem ファイルに対するアクセス許可を設定していない場合、キーファイルが保護されておらず、キーが拒否されることを示すエラーが表示されます。接続するためにキーペアのプライベートキーファイルに対するアクセス許可を設定する必要があるのは、このファイルを最初に使用するときだけです。

ターミナルを使用してマスターノードに接続するには

  1. ターミナルウィンドウを開きます。Mac OS X で、[Applications] > [Utilities] > [Terminal] を選択します。他の Linux ディストリビューションでは、ターミナルは通常、[Applications] > [Accessories] > [Terminal] にあります。

  2. マスターノードへの接続を確立するには、次のコマンドを入力します。ec2-###-##-##-###.compute-1.amazonaws.com はクラスターのマスターパブリック DNS 名に、~/mykeypair.pem.pem ファイルの場所とファイル名に置き換えます。

    ssh hadoop@ec2-###-##-##-###.compute-1.amazonaws.com -i ~/mykeypair.pem

    重要

    Amazon EMR マスターノードに接続するときには、ログイン名 hadoop を使用する必要があります。このログイン名を使用しない場合、Server refused our key のようなエラーが表示されることがあります。

  3. 警告は、接続先ホストの正当性を検証できないことを示しています。yes を入力して、操作を続けます。

  4. マスターノードに対する操作が終了したら、次のコマンドを入力して SSH 接続を閉じます。

    exit

AWS CLI を使用したマスターノードへの接続

Windows でも、Linux、Unix、および Mac OS X でも、AWS CLI を使用してマスターノードへの SSH 接続を作成できます。プラットフォームに関係なく、マスターノードのパブリック DNS 名と、Amazon EC2 キーペアのプライベートキーが必要です。Linux、Unix、Mac OS X などで AWS CLI を使用している場合は、「キーペアのプライベートキーのファイルアクセス許可を設定するには」に示されているように、プライベートキー (.pem または .ppk) ファイルに対するアクセス権限も設定する必要があります。

AWS CLI を使用してマスターノードに接続するには

  1. クラスター識別子を取得するには、次のように入力します。

    aws emr list-clusters

    出力には、クラスター ID を含むクラスターのリストが表示されます。接続しているクラスターのクラスター ID を書き留めます。

    "Status": { "Timeline": { "ReadyDateTime": 1408040782.374, "CreationDateTime": 1408040501.213 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 4, "Id": "j-2AL4XXXXXX5T9", "Name": "AWS CLI cluster"
  2. マスターノードへの SSH 接続を開くには、次のコマンドを入力します。次の例で、j-2AL4XXXXXX5T9 をクラスター ID に、~/mykeypair.key.pem ファイル (Linux、Unix、および Mac OS X の場合) または .ppk ファイル (Windows の場合) の場所とファイル名に置き換えてください。

    aws emr ssh --cluster-id j-2AL4XXXXXX5T9 --key-pair-file ~/mykeypair.key
  3. マスターノードに対する操作が終了したら、AWS CLI ウィンドウを閉じます。

    詳細については、AWS CLI の Amazon EMR コマンドを参照してください。

Windows で SSH を使用してマスターノードに接続する

Windows ユーザーの場合は、PuTTY などの SSH クライアントを使用して、マスターノードに接続できます。Amazon EMR マスターノードに接続する前に、PuTTY および PuTTYgen をダウンロードしてインストールする必要があります。これらのツールは、PuTTY ダウンロードページからダウンロードできます。

PuTTY は、Amazon EC2 によって生成されるキーペアのプライベートキーファイルの形式 (.pem) をネイティブでサポートしていません。PuTTYgen を使用して、キーファイルを必要な PuTTY 形式 (.ppk) に変換します。PuTTY を使用してマスターノードへの接続を試みる前に、キーをこの形式 (.ppk) に変換する必要があります。

キーの変換の詳細については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「PuTTYgen を使用したプライベートキーの変換」を参照してください。

PuTTY を使用してマスターノードに接続するには

  1. オープン putty.exe.Windows のプログラムの一覧から PuTTY を起動することもできます。

  2. 必要に応じて、[Category] リストで、[Session] を選択します。

  3. [Host Name (or IP address)] に、「hadoop@MasterPublicDNS」と入力します。たとえば、「hadoop@ec2-###-##-##-###.compute-1.amazonaws.com」と入力します。

  4. [Category] リストで、[Connection]、[SSH] の順に選択し、[Auth] を選択します。

  5. [Private key file for authentication] では、[Browse] をクリックし、以前に生成した .ppk ファイルを選択します。

  6. [Open (開く)] を選択し、[Yes (はい)] をクリックして PuTTY のセキュリティ警告を閉じます。

    重要

    マスターノードにログインするときに、ユーザー名の入力を求められた場合は、「hadoop」と入力します。

  7. マスターノードに対する操作が終了したら、PuTTY を閉じることによって SSH 接続を閉じることができます。

    注記

    SSH 接続のタイムアウト防止には、[Category] リストで [Connection] をクリックし、[Enable TCP_keepalives] オプションを選択します。PuTTY でアクティブな SSH セッションがある場合は、PuTTY のタイトルバーのコンテキストを開いて (右クリックして)、[Change Settings (設定の変更)] を選択することによって設定を変更できます。