본문 바로가기
  • This is Russell - the most handsome and the smartest.
AWS/EMR

EMR 기본 설명 및 생성 방법

by sundelion 2022. 1. 19.

EMR ?

- Elastic MapReduce 의 줄임

- AWS 에서 제공하는, 빅데이터 플랫폼 구축 및 운영에 최적화 된 클라우드 서비스

- 아파치의 스파크, 하이브, 프레스토, 그리고 이외의 빅데이터 플랫폼들을 실행 및 관리하기 위한 서비스

 

사용 사례

- 빅데이터 분석 수행

- 확장 가능한 데이터 파이프라인 구축

- 실시간 데이터 스트림 처리

- 데이터 과학 및 기계 학습 채택 가속화

 

내가 이해한 것,

빅데이터가 떠오르면서 많이 들어본 프로젝트들의 일부의 이름을 나열하자면 다음과 같다.

 

-Apache Spark, Apache Hive, HDFS, MapReduce, Elastic Search, Sqoop, Kafka ...

 

각각의 개념과 어떤 일을 하는지 설명하기엔 너무 길고, 간단히 이야기 하자면, 대부분 오픈소스 프레임워크이고 그것을 직접 다운 받아서 컴퓨터에 하나하나 설정을 해주어야 한다는 것 이다.

 

구축해본 경험이 있거나 이런 오픈 소스들 사용에 익숙한 사람이라면 직접 컴퓨터에 무료로 구축하여 사용할 수 있을 것이다. 하지만 DevOps 라는 분야가 따로 있듯이 대다수의 사람들이 이런 오픈소스에 익숙하지 않다.

 

이것을 쉽고 간단하게 해주는 AWS 서비스가 EMR 이다.

 

UI 로 클러스터를 쉽게 추가할 수 있고, 필요 없으면 언제든 쉽게 제거할 수 있다. 원하는 오픈 프레임워크를 체크만 하면 바로 생성 가능하다. AWS 서비스답게 옵션을 많이 줘서 자유롭게 설정 가능하다.

예를 들어, 원하는 언어, (예를 들자면 R 같은 것들)이 UI 설정 화면에 선택할 수 있는 리스트에 없는 경우, Advanced 세팅 UI 페이지에 가서 추가 가능하다. 

 

또한 클라우드 기반 서비스 답게 CPU, 저장용량 등 원하는 만큼 확장했다가 줄였다 할 수 있다. 매우 큰 장점이다. 

빅데이터를 다루는 프레임워크이니 만큼 CPU의 사용량이 어떨 땐 매우 컸다가 어떨땐 매우 작았다가 한다. 이때, AWS 에서 제공하는 AutoScaling (EMR 에서도 제공한다) 을 사용하면 사용량이 높을 땐 CPU 를 하나씩 추가해주고 아닐 땐 줄여주는 아주 효과적으로 비용 절감을 할 수 있다.

 

EMR 은 EC2 기반이기 때문에 웬만한 것들은 스크립트를 작성하여 추가 할 수 있다.

 

물론, 목적에 따라서 AWS 에 다른 서비스를 사용해야 할 때도 있다. (예를 들어, Kafka 의 경우, Amazon MSK 를 사용한다던지, 혹은 Elastic Search 의 경우 AWS Elastic Search 를 이용한다던지.)

 

* EMR 은 하둡 기반의 AWS 서비스이다.

* Apache Hadoop MapReduce 에서 시작되었다고 한다. 

 

알아두면 좋은 빅데이터 관련 개념

MapReduce

* Map reduce는 분산 프로그래밍 모델, 소프트웨어 프레임워크이다. 분산되어있는 데이터들을 종류별로 모으고 (Map 부분. Key - Value 형태로 분류하는 작업) Map 한 데이터를 중복값을 제거하는 등, 필요한 데이터만 뽑아낸다. (Reduce)
* 처음에 막 출시되었을 땐 엄청 핫 했으나 구축하는게 엄청 귀찮다. 특히나 경험이 없는 초심자에겐 어렵다.
(이런게 있다~ 정도만 알고, 자세한 포스팅은 나중에 해야겠다.)

Example of MapReduce

클러스터 (Cluster)

포스팅의 밑에서 설명할 EMR 생성방법에서 나올 개념들을 정리해봤다.

작은 단위부터 시작하자면, 노드 (node) 는 하나의 컴퓨터를 이야기한다. 30~40개의 노드는 랙(rack) 이 된다. 이 rack 들이 모여서 하나의 Hadoop Cluster 를 구축하게 된다.

Hadoop Cluster Architecture

Master Node / Core Node / Task Node

EMR 생성 방법

1. 클러스터 목록에서 “클럭스터 생성" ("Create cluster") 버튼을 클릭 한다.

2. 일반 옵션의 경우,

 

2-1. 클러스터의 이름, 로그를 저장할거면 로그를 저장할 S3 의 경로, EMR 버전과 사용하고자 하는 어플리케이션을 선택한다.

2-2. 사용할 Ec2 의 타입 (성능에 따라 선택하면 되지만 CPU의 성능같은 경우, 나중에 Task node 를 추가함으로서 조절 가능하다)

그리고 Ec2 key pair (EMR 은 EC2 에 설정하는 서비스이기 때문에, ssh 프로토콜과 Keypair 를 사용해서 Ec2 에 접근하는것과 같게 접근 가능하다) 등 설정해준다.

2-3. 하단의 Create cluster 를 사용하기 누르면 끝이다. Ec2 에 빅데이터 프레임워크를 하나 구축했다. 쏘 심플하다.

 

3. 고급 버전을 사용할 경우,

3-1. 상단의 "Go to advanced options" 를 선택한다. 소프트웨어 옵션부터 훨신 많아진 것을 확인할 수 있다.

3-2. 사용하기를 원하는 옵션들을 전부 선택해준다. 

3-3. 균일한 인스턴스 그룹을 선택 후, 네트워크에서 VPC, EC2 서브넷에서 “public”을 선택 후 다음으로 넘어 간다. (이 서브넷은 본인이 원하는, 만약 다른 gateway instance 에서 접근 가능하길 원하다면 그 gateway의 EC2 와 같은 서브넷이라던지.. 등등)

돈에 대한 폭탄을 원하지 않는다면 이것이 좋겠다...

3-4. 로깅을 위한 S3 폴더를 선택 후 “종료 보호"를 선택 하고 다음으로 넘어 간다. (Prevents accidental termination of the cluster - 안전한게 최고다)

3-5. 노드 타입 별 security group 까지 다 설정하고 완료. (사실 고급설정을 할 정도라면 다들 본인들이 뭘 원하는 지 알 것 같아서 - 중간에 현타왔다 - 자세한 설명은 생략한다.)

 

사실 모든 설정들이 Ec2를 사용해본 사람들이라면 다들 알법한 내용들이라서 설명할 것이 많지 않다.

 

추가 정보

EMR 을 사용하면 좋은 점 추가는, 이것을 사용하면 CLI 와 거리두기가 가능하다는 점이다. 실제 위와 같이 클러스터를 설정하면 클러스터 디테일 란에서 DNS로 제공을 하던, 링크로 제공을 하던 하여 바로 프레임워크가 제공하는 UI를 열 수 있다. 

유튜브에서 가져왔다. From AWS Youtube video. 링크는 아래 있다.

 

실제 유스케이스들을 잘 정리해둔 유튜브 링크를 첨부하며 갑자기 분위기 마무리 하겠다.

(촉박)

'AWS > EMR' 카테고리의 다른 글

EMR - 오토스케일링  (0) 2022.01.20

댓글