AWS EMR 고급활용기법

2019-10-31

.

Data_Engineering_TIL_(20191031)

[학습한 Contents]

1) 주제 : AWS summit 2017 세미나 / Amazon EMR 고급 활용 기법 - 홍준혁 솔루션즈 아키텍트(AWS 코리아), 오재혁 팀장(하이퍼커넥트)

2) URL : https://www.youtube.com/watch?v=sMB6x7B2Q-w

[필기노트]

본 세션의 주요주제

1) AWS EMR과 함께 다양한 어플리케이션 활용

2) EMR 운영 모범사례

3) HYPERCONNECT 고객 활용사례

1) AWS EMR과 함께 다양한 어플리케이션 활용

  • 효율적인 데이터 파이프라인 구현을 위한 조건

1) 안전하고 비용 효율적인 단일 데이터 저장소 구축

단일 스토리지로 여러 업무들이 공유하고 결과를 다시 저장함으로써 업무의 연속성, 스피드를 끌어올릴 수 있어야 한다.

아래 그림과 같이 AWS는 여러 수집채널로부터 s3 단일저장 공간에 저장이 가능하다.

1

2) 데이터에 대한 SQL 인터페이스 제공

SQL 인터페이스를 제공함으로써 보다 쉽게 데이터를 탐색하고 분석의 결과를 도출할 수 있어야 한다.

위의 그림과 같이 S3에 데이터가 저장된 후에는 우리가 원하는 형태로 데이터를 가져와서 다양한 형태의 데이터 처리가 가능하다.

예를들어서 그런 과정에서 EMR의 피그로 실제 맵리듀스 작업이나 데이터 정형화 작업이 가능하고, 이런 작업을 마친 결과물을 S3에 다시 저장하고, 이 결과물을 EMR의 하이브를 통해 SQL 인터페이스로 탐색할 수 있다.

아래 그림처럼 하이브의 EXTERNAL 테이블을 활용해 S3의 데이터를 가져와서 탐색할 수 있다.

2

3) 분석 워크로드간 독립성 유지

데이터 파이프라인 워크로드 단계 별로 서로 간섭이 없어야 한다.

4) 목적에 맞는 데이터 분석, 시각화 도구 활용

이렇게 여러단계의 과정을 거쳐서 저장한 데이터를 소비할 수 있게 되는데 BI 레포팅을 할 수도 있고, 프레스토(분산기반의 인메모리 SQL) 같은 툴을 이용하여 빠른 시퀄로 데이터 사이언티스트들이 접근해 조건절에 따른 다양한 뷰를 볼 수도 있다.

대화형 SQL을 활용한 분석을 수행한다면 하이브 보다는 프레스토가 매우 좋은 옵션이 될 것이다.

3

5) 새로운 분석 워크로드 지원(스트림이나 통계 등)

4

또한 스파크와 R등을 인테그레이션하여 데이터 사이언티스트를 위한 아키텍처 확장 가능

이렇게 스파크와 R을 인테그레이션 함으로써 R의 통계 기능까지도 사용할 수 있다.

또한 EMR 클러스터 구성 시 부트스트랩 기능을 사용하여 EMR 구성 시 R 등 원하는 소프트웨어 패키지를 설치할 수 있다. 아래 그림은 S3의 특정 로케이션에 내가 이 EMR 클러스터를 구성할 때 어떤 소프트웨어 패키지를 설치할 것인가에 대한 쉘을 저장해 놓았고, 그 쉘을 실행할 것이다 라는 것을 부트스트랩 기능으로 설정하는 모습이다. 또한 그 쉘이 수행될때 필요한 파라미터 값이 어떠한 것인지 옵셔널 아규먼트에 명시해두었다.

5

2) EMR 운영 모범사례

  • EMR Instance Fleets을 활용해볼 것을 추천

과거에는 EMR 인스턴스를 생성할때 각 그룹별 인스턴스 타입을 서로 다르게 선택할 수 없었다. 따라서 불필요하게 리소스를 과도하게 할당받는 경우가 발생하였다. 따라서 예상치 못한 비용이 발생하기도 하였다.

6

  • 데이터 처리상황에 맞는 인스턴스 선택을 권장

데이터 처리상황에 맞는 인스턴스 선택으로 관리적으로나 비용적으로 이점을 가져갈 수 있다.

또한 오트스케일 기능도 가능하고, 얀의 메모리가 얼마나 가용한지, 혹은 내가 수행시킨 잡이 지금 현재 얼마나 컨테이너 상에서 팬딩이 걸려있는지의 비율에 따라 클러스터 규모를 자유롭게 관리할 수도 있다.

7

  • 메타스토어를 관리하는 것을 권장

EMR의 인스턴스는 스타트와 터미네이트 두가지의 라이프사이클 밖에 존재하지 않기 때문에 기존의 인스턴스처럼 정지 시킬수가 없다. 따라서 우리가 S3가 되었던 어디가 되었던 데이터를 잘 저장하고 관리하고 있었는데 EMR 인스턴스가 사라지는 경우 기존에 우리가 EMR에 저장해두었던 정보들이 모두 날아가버리게 된다. 그러한 정보들이 대부분 하이브의 메타스토어에 저장되는 경우가 많은데 따라서 우리는 EMR 인스턴스를 생성할때 메타데이터를 별도로 저장할 곳을 RDS 같은 곳으로 빼두는 것을 권장한다.

예를들어서 아래 그림과 같이 제이슨파일에 어느곳의 RDS를 활용할지, 혹은 어느곳에 있는 DB를 활용할지 선택을 해주고, EMR 인스턴스를 생성할때 configuration 옵션을 활용하여 생성한다면 이미 생성되어있는 또는 처음으로 생성하려고 하는 메타스토어를 RDS 혹은 외부의 데이터베이스로 뺄 수 있다.

8

  • 다양한 데이터 포맷을 활용하는 것을 권장

성능적인 측면과 데이터를 저장할 용량적인 측면을 고려하여 데이터 포맷을 결정하는 것이 좋다.

3) HYPERCONNECT 고객 활용사례

  • 아자르라는 소셜네트워크 운영 스타트업 회사

  • 하이퍼컨넥트의 데이터 분석 플랫폼 구축목표

1) 다양한 분석수요에 따른 데이터 추출 / 변환 / 적재

2) 데이터 플로우 기획 / 제작 / 관리

3) 대시보드 / 레포트 / EDA 도구 제공

4) 이상행동 탐지, 매칭상대 추천 등 데이터 기반 서비스 제공

9

EMR 사용 시 꼭 기억하자

1) S3를 활용하여 안전하고 비용 효과적인 저장소를 구축할 것

2) 분석 워크로드간 독립성을 유지할 것

3) 다양한 데이터 분석, 시각화 도구를 활용해볼 것

4) Spot fleets를 활용하여 비용을 절감할 것

5) 관리자동화를 위해 오토스케일을 설정할 것