[BigData] Elastic MapReduce(EMR) 개요 정리
1. 정리 목적
- EMR이 무엇인지 살펴 본다.
- EMR 설정 및 실행 방법을 살펴 본다.
2. EMR이란?
EMR이 무엇인지 실펴보면 다음과 같다.
- Elastic MapReduce의 줄임말이 EMR이다.
- AWS에서 제공하는 빅데이터 플랫폼 구축 및 운영에 최적화 된 클라우드 서비스를 지원한다.
- Spark, Hive, Hadoop 등 빅데이터 플랫폼들을 실행 및 관리하기 위한 서비스이다.
빅데이터 플랫폼들이 많은데 이 오픈소스 프레임워크들을 직접 다운 받아서 설치하여 설정을 해주는 것은 너무나도 귀찮...또는 힘든 부분이다.
구축을 해 봤거나 이러한 오픈소스 사용에 거부감이 없다면 무료로 구축하여 사용하겠지만 일반 사람들이나 다른 분야 사람들은 진입장벽이 있다는 것은 명백한 일이다.
이러한 부분을 쉽고 간단하게 해주는 서비스가 AWS EMR이다.
EMR을 더 살펴보기 전에 기본적인 빅데이터 관련 개념을 몇 가지 살펴 본다.
2.1 MapReduce
MapReduce는 대용량의 데이터 분산, 병렬 컴퓨팅 관경에서 처리하기 위해 제작된 데이터 처리 모델이다.
- 큰 양의 데이터가 들어왔을 때 데이터를 특정 크기의 블록으로 나누고 각 블록에 대해 Map, Reduce 작업을 수행
- Map과 Reduce 작업은 입력과 출력으로 Key-Value 구조를 사용
- Map은 데이터를 Key-Value의 형태로 묶는 작업을 의미
- Map에서 묶은 Key-Value형태의 데이터들을 List형태로 반환
- Reduce는 Map으로 처리한 데이터에서 중복된 Key 값을 지니는 데이터를 제거하거나 합치고, 원하는 데이터를 추출하는 작업을 수행
MapReduce 처리 과정
MapReduce 처리 과정에 대해 예를 들어 설명하자면 다음과 같다.
캡처에 나와있는 텍스트 파일에서 단어의 개수를 count 하는 문제를 해결한다고 했을 때 과정은 아래와 같다.
- 단어의 개수를 세기 위한 텍스트 파일들을 Hadoop(HDFS)에 업로드하고 각각의 블록 단위로 나누어 저장한다.
- 순차적으로 블록을 입력으로 받는데 Splitting 과정을 통해 블록 안의 텍스트 파일을 한 줄로 분할한다.
- Line을 공백 기준으로 분리하고 Map 연산을 통해 단어와 개수 리스트를 반환한다.
- Shuffling 과정을 통해 연관성있는 데이터들끼리 모아 정렬한다.
- Reduce를 수행하여 각 블록에서 특정 단어가 몇 번 나왔는지 계산한다.
- 이후의 결과를 합산하여 Hadoop(HDFS)에 파일로 결과를 저장한다.
2.2 Cluster
EMR 생성할 때 나오는 단어들을 설명하자면 다음과 같다.
작은 단위부터 시작하면 노드(Node)는 하나의 컴퓨터라고 생각하면 된다.
30~40개의 노드는 랙(Rack)이 되며 이 rack들이 모여서 하나의 Hadoop Cluster를 구축하게 된다.
Hadoop Cluster Archtecture
노드 종류 | 내용 |
Master Node | - YARN 역할 - HDFS Name Node 역할 - 다른 Node간의 데이터 및 작업 분배를 조정 - Cluster를 관리 - Cluster 상태 모니터링 |
Core Node | - Cluster의 HDFS에 작업을 실행 - 데이터 저장 - HDFS와 NodeManager 동작 |
Task Node | - 데이터에 대한 병렬 계산 작업 - Task를 돌리기 위한 Node |
3. EMR 설정
실행 방법에 대해서는 각각 다를 수 있으므로 잘 선택하여 진행하도록 한다.
지금 진행되는 설정 방법은 필수는 아니니 상황에 맞게 진행한다.
(AWS 에서 EMR 시작하는 자세한 부분은 구글링을 통해 진행하며 아래 설정 방법은 참고로만 봐두면 될 듯 하다.)
✔ EMR 실행 방법은 하기 URL 참고
- https://dandelion.tistory.com/3
- https://yaboong.github.io/spark/2018/01/18/run-spark-on-aws-emr/
-
- AWS Console에 로그인 후 EMR을 클릭한다. (위에 EMR이 없는 경우 바로 위 검색에 EMR로 검색 한다.)
- 클러스터 생성을 클릭한다.
- EMR 이름을 입력한다.
- EMR 릴리스 버전을 입력한다.
- 애플리케이션 번들을 선택한다. (난 Custom을 선택, 편한 애플리케이션을 선택하면 된다.)
- 필요하거나 사용할 부분을 선택한다.
- 인스턴스 그룹을 선택한다.
- 프라이머리 EC2 인스턴스 유형 선택을 한다. (주의!! 성능이 좋을 수록 가격이 높다)
- 코어 인스턴스 유형 선택을 한다. (주의!! 마찬가지로 성능이 좋을 수록 가격이 높다)
- Worker 이름을 작성한다.
- Worker EC2 인스턴스 유형 선택을 한다. (주의!! 마찬가지로 성능이 좋을 수록 가격이 높다)
- 수동으로 클러스터 크기 설정 선택 한다.
- 각각의 인스턴스 크기를 설정한다. (1로 진행해도 상관 없다. 현재 상황에 맞게 설정하면 된다.)
- 설정이 끝났으면 클러스터 생성을 클릭한다.
다음에는 Local PC에서 진행한 작업과 EMR 진행한 작업에 대해 성능 비교 하는 부분을 확인해 봐야겠다..
※ 참조 url :
- https://yaboong.github.io/spark/2018/01/18/run-spark-on-aws-emr/
Spark 시작하기 1.3 - AWS EMR 로 인스턴스 5대 클러스터링 해서 Spark 돌려보기
소스 받기 $ git pull https://github.com/yaboong/spark-study-project.git
yaboong.github.io
- https://dandelion.tistory.com/3
EMR 기본 설명 및 생성 방법
EMR ? - Elastic MapReduce 의 줄임 - AWS 에서 제공하는, 빅데이터 플랫폼 구축 및 운영에 최적화 된 클라우드 서비스 - 아파치의 스파크, 하이브, 프레스토, 그리고 이외의 빅데이터 플랫폼들을 실행 및
dandelion.tistory.com
- https://mangkyu.tistory.com/129
[Hadoop] Hadoop의 구조와 MapReduce
1. Hadoop의 개념과 아키텍쳐 [ Hadoop이란? ] Hadoop은 Reliable, Scalable하게 분산 처리를 하기 위한 오픈 소스 소프트웨어이다. Hadoop은 Map-Reduce라는 단순한 데이터 처리 모델을 사용함으로써 여러 대의
mangkyu.tistory.com