Hadoop 의 다양한 도구를 패키지로 설치했다. 각 컴포넌트별로 접근하는 인터페이스가 다르다. EMR로 구성한 경우 다음 매뉴얼로 확인한다.
EMR 대시보드에서 Applications 를 누르면 접근할 수 있는 url 주소와 포트가 나열되어있다.
EMR의 primary의 기본 보안 그룹으로 설정했다면 로컬 환경에서 단순히 public address 로 해당 포트로 접근할 수 없을 것이다. 해결방법은 두가지가 있다.
보안그룹을 수정해서, inbound 에 자신의 IP address 또는 모든 IP 에 대해서 해당 port 로 진입을 허용하는 방법.
❗ 주의. EMR에서 사용하는 security groups에 inbound allow all (0.0.0.0/0) 하는 포트가 22말고 추가로 있다면, cluster 생성시에는 validation error 로 생성에 실패한다.포트포워딩을 통해서 pem 파일 인증을 통해서 연결하기
위 가이드를 이용해서 hadoop namenode 의 웹인터페이스로 접속해보자.
다음은 Yarn 작업 웹인터페이스이다.
(위 그림에서 빨간색) Node 정보와 같이, cluster 가 서로를 알고 있는 주소는 AWS의 VPC 내부의 private dns 주소이다.
(위 그림에서 초록색) 웹인터페이스에는 다른 정보를 보기위한 링크들이 많은데, 이때 redirect 되는 주소는 저 private 주소를 기반으로한 주소이다. 4.1 에 언급한 방식으로 연결한다면, 이렇게 redirect 를 할 때마다
ssh turnneling 을 이용한 dynamic port forwarding과 proxy 플러그인을 이용해서 이런 불편함을 해결하고, 보안을 해치지 않을 수 있다.
ssh -i $key_file -N -D 8157 hadoop@$your_ec2_public_dns
Chrome
Proxy SwitchyOmega 설치
emr-socks-proxy
라는 프로파일 생성
PAC profile 선택
아래 PAC 스크립트를 입력
function FindProxyForURL(url, host) {
if (shExpMatch(url, "*ec2*.amazonaws.com*")) return 'SOCKS5 localhost:8157';
if (shExpMatch(url, "*ec2*.compute*")) return 'SOCKS5 localhost:8157';
if (shExpMatch(url, "http://10.*")) return 'SOCKS5 localhost:8157';
if (shExpMatch(url, "*10*.compute*")) return 'SOCKS5 localhost:8157';
if (shExpMatch(url, "*10*.amazonaws.com*")) return 'SOCKS5 localhost:8157';
if (shExpMatch(url, "*.compute.internal*")) return 'SOCKS5 localhost:8157';
if (shExpMatch(url, "*ec2.internal*")) return 'SOCKS5 localhost:8157';
return 'DIRECT';
}
Apply changes
위 세팅을 마쳤으면, 다시 redirect url 을 클릭했을때 private dns 주소를 못찾을 때, Proxy SwitchyOmega 를 선택하고 emr-socks-proxy
를 선택하면 설정한 프로파일로 proxy할 수 있다.