SSH를 사용하여 Amazon EMR 클러스터 프라이머리 노드에 연결
SSH(Secure Shell)는 원격 컴퓨터에 대한 보안 연결을 만드는 데 사용할 수 있는 네트워크 프로토콜입니다. 연결을 하면 로컬 컴퓨터의 터미널이 마치 원격 컴퓨터에서 실행 중인 것처럼 작동합니다. 로컬로 실행하는 명령은 원격 컴퓨터에서 실행되고 원격 컴퓨터의 명령 출력은 터미널 창에 나타납니다.
AWS에서 SSH를 사용하면 클라우드에서 실행되는 가상 서버인 EC2 인스턴스에 연결됩니다. Amazon EMR로 작업할 때 SSH를 사용하는 가장 일반적인 방법은 클러스터의 프라이머리 노드 역할을 하는 EC2 인스턴스에 연결하는 것입니다.
SSH를 사용하여 프라이머리 노드에 연결하면 클러스터를 모니터링하고 클러스터와 상호 작용할 수 있습니다. 프라이머리 노드에 Linux 명령을 사용하고 Hive 및 Pig 같은 애플리케이션을 대화형으로 실행하며 디렉터리를 검색하고 로그 파일을 읽을 수 있습니다. 또한 SSH 연결에 터널을 만들어 프라이머리 노드에서 호스팅되는 웹 인터페이스를 볼 수도 있습니다. 자세한 내용은 Amazon EMR 클러스터에 호스팅된 웹 인터페이스 보기 단원을 참조하십시오.
SSH를 사용하여 프라이머리 노드에 연결하려면 프라이머리 노드의 퍼블릭 DNS 이름이 필요합니다. 또한 프라이머리 노드와 연결된 보안 그룹에는 SSH 연결이 시작된 클라이언트를 포함하는 소스로부터 SSH(TCP 포트 22) 트래픽을 허용하는 인바운드 규칙이 있어야 합니다. 클라이언트에서 SSH 연결을 할 수 있도록 허용하는 규칙을 추가해야 할 수도 있습니다. 보안 그룹 규칙 수정에 대한 자세한 내용은 Amazon EC2 사용 설명서에서 Amazon EMR 클러스터의 보안 그룹으로 네트워크 트래픽 제어 및 보안 그룹에 규칙 추가를 참조하세요.
프라이머리 노드의 퍼블릭 DNS 이름 검색
Amazon EMR 콘솔 및 AWS CLI를 사용하여 기본 퍼블릭 DNS 이름을 검색할 수 있습니다.
Linux, Unix 및 Mac OS X에서 SSH 및 Amazon EC2 프라이빗 키를 사용하여 프라이머리 노드에 연결
프라이빗 키 파일을 통해 인증된 SSH 연결을 생성하려면 클러스터를 시작할 때 Amazon EC2 키 페어 프라이빗 키를 지정해야 합니다. 키 페어 액세스에 대한 자세한 내용은 Amazon EC2 사용 설명서에서 Amazon EC2 키 페어를 참조하세요.
Linux 컴퓨터에는 기본적으로 SSH 클라이언트가 포함되어 있을 가능성이 높습니다. 예를 들어 OpenSSH는 대부분의 Linux, Unix 및 macOS 운영 체제에 설치되어 있습니다. 명령줄에 ssh를 입력하여 SSH 클라이언트가 있는지 확인할 수 있습니다. 컴퓨터가 명령을 인식하지 못하는 경우 SSH 클라이언트를 설치하여 프라이머리 노드에 연결합니다. OpenSSH 프로젝트는 전체 SSH 도구 스위트의 무료 구현을 제공합니다. 자세한 내용은 OpenSSH
다음 지침에서는 Linux, Unix 및 Mac OS X의 Amazon EMR 프라이머리 노드에 대한 SSH 연결을 여는 것을 보여줍니다.
키 페어 프라이빗 키 파일 권한을 구성하려면
Amazon EC2 키 페어 프라이빗 키를 사용하여 SSH 연결을 생성하려면 먼저 키 소유자만 .pem
파일에 액세스할 수 있는 권한을 갖도록 해당 파일에 대한 권한을 설정해야 합니다. 이는 터미널 또는 AWS CLI를 사용하여 SSH 연결을 생성하는 데 필요합니다.
-
인바운드 SSH 트래픽을 허용했는지 확인합니다. 지침은 Amazon EMR에 연결하기 전: 인바운드 트래픽 권한 부여 단원을 참조하십시오.
-
.pem
파일을 찾습니다. 이 지침에서는 파일 이름이mykeypair.pem
이고 현재 사용자의 홈 디렉터리에 저장되어 있다고 가정합니다. -
다음 명령을 입력하여 권한을 설정합니다.
~/mykeypair.pem
을 키 페어 프라이빗 키 파일의 전체 경로 및 파일 이름으로 바꿉니다. 예:C:/Users/<username>/.ssh/mykeypair.pem
.chmod 400
~/mykeypair.pem
.pem
파일에 대한 권한을 설정하지 않으면 키 파일이 보호되지 않고 키가 거부된다는 오류가 표시됩니다. 연결하려면 키 페어 프라이빗 키 파일을 처음 사용할 때만 해당 파일에 대한 권한을 설정하면 됩니다.
터미널을 사용하여 프라이머리 노드에 연결하는 방법
-
터미널 창을 엽니다. Mac OS X에서 애플리케이션 > 유틸리티 > 터미널을 선택합니다. 다른 Linux 배포에서는 일반적으로 Applications > Accessories > Terminal(애플리케이션 > 보조프로그램 > 터미널)에서 터미널을 찾을 수 있습니다.
-
프라이머리 노드에 대한 연결을 설정하려면 다음 명령을 입력합니다.
ec2-###-##-##-###.compute-1.
을 클러스터의 마스터 퍼블릭 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
와 유사한 오류가 표시될 수 있습니다. -
경고에 연결 중인 호스트의 신뢰성은 확인할 수 없다고 표시됩니다.
yes
를 입력하여 계속 진행합니다. -
프라이머리 노드에서 작업을 마쳤으면 다음 명령을 입력하여 SSH 연결을 닫습니다.
exit
SSH를 사용하여 프라이머리 노드에 연결하는 데 문제가 있는 경우 인스턴스 연결 문제 해결을 참조하세요.
Windows에서 SSH를 사용하여 프라이머리 노드에 연결
Windows 사용자는 PuTTY와 같은 SSH 클라이언트를 사용하여 프라이머리 노드에 연결할 수 있습니다. Amazon EMR 프라이머리 노드에 연결하기 전에 PuTTY 및 PuTTYgen을 다운로드하여 설치해야 합니다. PuTTY 다운로드 페이지
PuTTY에서는 기본적으로 Amazon EC2에서 생성된 키 페어 프라이빗 키 파일 형식(.pem
)을 지원하지 않습니다. PuTTYgen을 사용하여 키 파일을 필수 PuTTY 형식(.ppk
)으로 변환합니다. PuTTY를 사용하여 프라이머리 노드에 연결하기 전에 키를 이 형식(.ppk
)으로 변환해야 합니다.
키 변환에 대한 자세한 내용은 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.htmlAmazon EC2 사용 설명서에서 PuTTYgen을 사용하여 프라이빗 키 변환을 참조하세요.
PuTTY를 사용하여 프라이머리 노드에 연결하는 방법
-
인바운드 SSH 트래픽을 허용했는지 확인합니다. 지침은 Amazon EMR에 연결하기 전: 인바운드 트래픽 권한 부여 단원을 참조하십시오.
-
putty.exe
를 엽니다. Windows 프로그램 목록에서도 PuTTY를 시작할 수 있습니다. -
필요한 경우 Category(범주) 목록에서 Session(세션)을 선택합니다.
-
Host Name (or IP address)(호스트 이름 또는 IP 주소)에
hadoop@
MasterPublicDNS
를 입력합니다. 예:hadoop@
ec2-###-##-##-###.compute-1.amazonaws.com
. -
Category(범주) 목록에서 Connection > SSH(연결 > SSH), Auth(인증)를 선택합니다.
-
Private key file for authentication(인증을 위한 프라이빗 키 파일)에서 Browse(찾아보기)를 선택하고 생성한
.ppk
파일을 선택합니다. -
열기를 선택하고 예를 선택하여 PuTTY 보안 알림을 해제합니다.
중요
프라이머리 노드에 로그인할 때 사용자 이름을 묻는 메시지가 표시되면
hadoop
을 입력합니다. -
프라이머리 노드에서 작업을 완료하면 PuTTY를 닫아 SSH 연결을 닫을 수 있습니다.
참고
SSH 연결 제한 시간이 초과되는 것을 방지하려면 카테고리 목록에서 연결을 선택하고 TCP_KeepAlives 활성화 옵션을 선택하면 됩니다. PuTTY에 활성 SSH 세션이 있는 경우 PuTTY 제목 표시줄에 대한 컨텍스트 메뉴를 열고(마우스 오른쪽 버튼 클릭) 설정 변경을 선택하여 설정을 변경할 수 있습니다.
SSH를 사용하여 프라이머리 노드에 연결하는 데 문제가 있는 경우 인스턴스 연결 문제 해결을 참조하세요.
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를 사용하여 프라이머리 노드에 연결하는 방법
-
인바운드 SSH 트래픽을 허용했는지 확인합니다. 지침은 Amazon EMR에 연결하기 전: 인바운드 트래픽 권한 부여 단원을 참조하십시오.
-
클러스터 식별자를 검색하려면 다음을 입력합니다.
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"
-
다음 명령을 입력하여 프라이머리 노드에 대한 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
-
프라이머리 노드에서 작업을 완료하면 AWS CLI 창을 닫습니다.
자세한 내용은 AWS CLI에서 Amazon EMR 명령을 참조하세요. SSH를 사용하여 프라이머리 노드에 연결하는 데 문제가 있는 경우 인스턴스 연결 문제 해결을 참조하세요.