[AWS EMR Hadoop 실습] EMR 클러스터 웹 인터페이스

Hyunjun Kim·2025년 8월 14일
0

Data_Engineering

목록 보기
129/153

4 EMR 클러스터 웹 인터페이스

Hadoop 의 다양한 도구를 패키지로 설치했다. 각 컴포넌트별로 접근하는 인터페이스가 다르다. EMR로 구성한 경우 다음 매뉴얼로 확인한다.

매뉴얼

EMR 대시보드에서 Applications 를 누르면 접근할 수 있는 url 주소와 포트가 나열되어있다.



4.1 로컬에서 웹인터페이스에 접근 하는 방법

EMR의 primary의 기본 보안 그룹으로 설정했다면 로컬 환경에서 단순히 public address 로 해당 포트로 접근할 수 없을 것이다. 해결방법은 두가지가 있다.

  1. 보안그룹을 수정해서, inbound 에 자신의 IP address 또는 모든 IP 에 대해서 해당 port 로 진입을 허용하는 방법.

    ❗ 주의. EMR에서 사용하는 security groups에 inbound allow all (0.0.0.0/0) 하는 포트가 22말고 추가로 있다면, cluster 생성시에는 validation error 로 생성에 실패한다.
  2. 포트포워딩을 통해서 pem 파일 인증을 통해서 연결하기

    1. 매뉴얼 을 참고한다.
    2. 불편하지만 보안적으로 안전한 방법이다. 프로덕션이라면 이 방법을 추천한다.

위 가이드를 이용해서 hadoop namenode 의 웹인터페이스로 접속해보자.



4.2 SSH turnnel + dynamic por forwarding + proxy 로 웹인터페이스 redirect 가능하게 하기

다음은 Yarn 작업 웹인터페이스이다.

(위 그림에서 빨간색) Node 정보와 같이, cluster 가 서로를 알고 있는 주소는 AWS의 VPC 내부의 private dns 주소이다.

(위 그림에서 초록색) 웹인터페이스에는 다른 정보를 보기위한 링크들이 많은데, 이때 redirect 되는 주소는 저 private 주소를 기반으로한 주소이다. 4.1 에 언급한 방식으로 연결한다면, 이렇게 redirect 를 할 때마다

  • port forwarding 을 한 경우, 포트가 달라질때마다 포트포워딩을 추가해야 한다.
  • security group 으로 한경우, redirect된 private dns 를 public dns 로 수동으로 매번 바꿔야한다.

ssh turnneling 을 이용한 dynamic port forwarding과 proxy 플러그인을 이용해서 이런 불편함을 해결하고, 보안을 해치지 않을 수 있다.

4.2.1 SSH turnnel 을 이용한 dynamic port forwarding

매뉴얼

ssh -i $key_file -N -D 8157 hadoop@$your_ec2_public_dns
  • 8157 을 원하는 포트로 바꿔도된다.

4.2.2 브라우저 플러그인을 이용한 proxy 설정

매뉴얼

  1. Chrome

  2. https://chrome.google.com/webstore/category/extensions 접속

  3. Proxy SwitchyOmega 설치

  4. emr-socks-proxy 라는 프로파일 생성

  5. PAC profile 선택

  6. 아래 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';
    }
  7. Apply changes

위 세팅을 마쳤으면, 다시 redirect url 을 클릭했을때 private dns 주소를 못찾을 때, Proxy SwitchyOmega 를 선택하고 emr-socks-proxy 를 선택하면 설정한 프로파일로 proxy할 수 있다.

  • 꼭 ssh turnnel dynamic port forwarding 맺어진 상태여야한다.
profile
Data Analytics Engineer 가 되

0개의 댓글