使用 SSH 連接至主節點 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 SSH 連接至主節點

Secure Shell (SSH) 是一種網路協定,您可用來建立對遠端電腦的安全連線。建立連線後,本機電腦上的終端機就會像在遠端電腦上執行一樣。您在本機發出的命令會在遠端電腦上執行,而且從遠端電腦的命令輸出會出現在您的終端機視窗。

搭配使用 SSH 時 AWS,您會連線到 EC2 執行個體,這是在雲端中執行的虛擬伺服器。使用 Amazon EMR 時,最常見的 SSH 用法是連接到 EC2 執行個體,它可充當叢集的主節點。

使用 SSH 連接到主節點可讓您監控叢集並與其互動。您可以在主節點上發出 Linux 命令、以互動方式執行應用程式 (如 Hive 和 Pig)、瀏覽目錄、閱讀日誌檔案等。也可以在 SSH 連線中建立一個通道來檢視主節點上託管的 Web 介面。如需詳細資訊,請參閱 檢視 Amazon EMR 叢集上託管的 Web 介面

若要使用 SSH 連接到主節點,您需要主節點的公有 DNS 名稱。此外,關聯到主節點的安全群組必須擁有傳入規則,以允許來自包含 SSH 連線起源用戶端之來源的 SSH (TCP 連接埠 22) 流量。您可能需要新增規則來允許來自您用戶端的 SSH 連接。如需有關修改安全群組規則的詳細資訊使用安全群組控制網路流量,請參閱 Amazon EC2 使用者指南中的和向安全群組新增規則

擷取主節點的公有 DNS 名稱

可以使用 Amazon EMR 主控台和 AWS CLI來擷取主要公有 DNS 名稱。

注意

我們已重新設計 Amazon EMR 主控台,可讓您更輕鬆地使用。請參閱 Amazon EMR 控制台 以了解新舊主控台體驗之間的差異。

New console
若要使用新主控台擷取主節點的公有 DNS 名稱
  1. 登入 AWS Management Console,然後開啟 Amazon EMR 主控台,網址為 https://console.aws.amazon.com/emr

  2. 在左側導覽窗格的 EMR on EC2 下,選擇叢集,然後選取您要在其中擷取公有 DNS 名稱的叢集。

  3. 請記下叢集詳細資訊頁面之摘要區段中的主節點公有 DNS 值。

Old console
若要使用舊主控台擷取主節點的公有 DNS 名稱
  1. 導覽至新的 Amazon EMR 主控台,然後從側邊導覽選取切換至舊主控台。如需有關切換至舊主控台時預期情況的詳細資訊,請參閱使用舊主控台

  2. Cluster List (叢集清單) 頁面中,選取您叢集的連結。

  3. 請記下叢集詳細資訊頁面之摘要區段中的主要公有 DNS 值。

    注意

    也可以選擇 SSH 連結,以獲取有關使用主節點來建立 SSH 連線的說明。

CLI
若要擷取主節點的公用 DNS 名稱,請使用 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": "My cluster"
  2. 若要列出叢集執行個體 (包括叢集的公有 DNS 名稱),請輸入以下其中一個命令。使用之前命令傳回的叢集 ID 取代 j-2AL4XXXXXX5T9

    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 金鑰對私有金鑰。如需存取 key pair 的詳細資訊,請參閱 Amazon EC2 使用者指南中的 Amazon EC2 金鑰配對

在預設情況下,您的 Linux 電腦很可能包含 SSH 用戶端。例如,大多數的 Linux、Unix 和 macOS 作業系統都會安裝 OpenSSH。您可以藉由在命令列鍵入 ssh 來檢查 SSH 用戶端。如果您的電腦無法識別該命令,請安裝 SSH 用戶端以連接至主節點。OpenSSH 專案提供 SSH 工具完整套件的免費實作。如需詳細資訊,請參閱 OpenSSH 網站。

以下說明演示了在 Linux、Unix 和 Mac OS X 上開啟 Amazon EMR 主節點的 SSH 連線。

若要設定金鑰對私有金鑰檔案權限

在使用 Amazon EC2 金鑰對私密金鑰來建立 SSH 連線之前,必須設定 .pem 檔案的許可,以便只有金鑰擁有者能夠存取檔案。若要使用終端機或建立 SSH 連線,這是必要的 AWS CLI。

  1. 確保已允許傳入 SSH 流量。如需說明,請參閱連線之前:授權傳入流量

  2. 尋找您的 .pem 檔案。這些說明假設檔案名為 mykeypair.pem 且存放在目前的使用者主目錄中。

  3. 輸入以下命令來設定權限。將 ~/mykeypair.pem 取代為金鑰對私有金鑰檔案的完整路徑和檔案名稱。例如:C:/Users/<username>/.ssh/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 檔案的完整路徑和檔案名稱。例如:C:/Users/<username>/.ssh/mykeypair.pem

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

    在連接到 Amazon EMR 主節點時必須使用登入名稱 hadoop;否則,您可能會看到與 Server refused our key 類似的錯誤。

  3. 警告說明系統無法驗證您正要在連接之主機的真實性。輸入 yes 以繼續。

  4. 當您完成處理主節點時,輸入下列命令來關閉 SSH 連線。

    exit

如果在使用 SSH 以連接到主節點時遇到困難,請參閱對執行個體連線進行疑難排解

在 Windows 中使用 SSH 來連接至主節點

Windows 使用者可以使用 SSH 用戶端 (例如 PuTTY) 連接到主節點。連接到 Amazon EMR 主節點之前,應該下載並安裝 PuTTY 和 PuTTYgen。可以從 PuTTY 下載頁面中下載這些工具。

PuTTY 原生並不支援 Amazon EC2 所產生的金鑰對私有金鑰檔案格式 (.pem)。可使用 PuTTYgen 將金鑰檔案轉換為所需的 PuTTY 格式 (.ppk)。必須將金鑰轉換為此格式 (.ppk),再嘗試使用 PuTTY 連接至主節點。

如需有關轉換金鑰的詳細資訊,請參閱 Amazon EC2 使用者指南中的使用 PuTTYgen 轉換私密金鑰

使用 PuTTY 連接至主節點
  1. 確保已允許傳入 SSH 流量。如需說明,請參閱連線之前:授權傳入流量

  2. 打開 putty.exe. 也可以從 Windows 程式清單啟動 PuTTY。

  3. 必要時,選擇 Category (類別) 清單中的 Session (工作階段)

  4. 針對主機名稱 (或 IP 位址),輸入 hadoop@ MasterPublicDNS。例如:hadoop@ec2-###-##-##-###.compute-1.amazonaws.com

  5. Category (類別) 清單中選擇 Connection > SSH (連線 > SSH)Auth

  6. 針對 Private key file for authentication (要身分驗證的私密金鑰檔案),選擇 Browse (瀏覽) 並選取您產生的 .ppk 檔案。

  7. 選擇開啟,然後選擇,關閉 PuTTY 安全提醒。

    重要

    登入主節點類型時,如果系統提示您輸入使用者名稱,請輸入 hadoop

  8. 當您完成處理主節點時,可以透過關閉 PuTTY 來關閉 SSH 連線。

    注意

    為避免 SSH 連線逾時,可以選擇類別清單中的連線,並選取選項 Enable TCP_keepalives。如果您在 PuTTY 中擁有作用中的 SSH 工作階段,可以開啟 PuTTY 標題列的內容 (按一下滑鼠右鍵) 並選擇變更設定來變更設定。

如果在使用 SSH 以連接到主節點時遇到困難,請參閱對執行個體連線進行疑難排解

使用 AWS CLI連接至主節點

您可以使用 Windows 和 Linux、Unix 和 Mac OS X AWS CLI 上的與主節點建立 SSH 連線,無論平台為何,您都需要主節點的公開 DNS 名稱和 Amazon EC2 key pair 私密金鑰。如果您在 Linux、Unix 或 Mac OS X AWS CLI 上使用,您還必須設定私密金鑰 (.pem.ppk) 檔案的權限,如中所示若要設定金鑰對私有金鑰檔案權限

若要使用連線至主節點 AWS CLI
  1. 確保已允許傳入 SSH 流量。如需說明,請參閱連線之前:授權傳入流量

  2. 若要擷取叢集識別符,輸入:

    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"
  3. 輸入下列命令以開啟主節點的 SSH 連線。在下列範例中,將 j-2AL4XXXXXX5T9 取代為叢集 ID,將 ~/mykeypair.key 取代為 .pem 檔案 (適用於 Linux、Unix 和 Mac OS X) 或 .ppk 檔案 (適用於 Windows) 的完整路徑和檔案名稱。例如:C:\Users\<username>\.ssh\mykeypair.pem

    aws emr ssh --cluster-id j-2AL4XXXXXX5T9 --key-pair-file ~/mykeypair.key
  4. 當您在主節點上完成工作時,請關閉 AWS CLI 視窗。

    如需詳細資訊,請參閱 AWS CLI中的 Amazon EMR 命令。如果在使用 SSH 以連接到主節點時遇到困難,請參閱對執行個體連線進行疑難排解