[AWS EMR] 30. EMR

2020. 6. 4. 13:53AWS

반응형

ㅇ EMR?

    > Elastic Map Reduce의 줄임말로, 빅데이터 프레임워크(ex. Hadoop, Spark) 실행을 간소화하는 관리형 클러스터 플랫폼

        * Map Reduce: 흩어져있는 데이터를 Key, Value 형태로 연관 데이터끼리 묶는 Map단계와 Map화한 작업 중 중복 데이터를 제거하고 원하는 데이터를 추출하는 Reduce 단계로 처리 과정을 나누어 작업하는 것

 

ㅇ EMR 구성요소

    1) Master 노드

        > 클러스터를 관리하며 분산 애플리케이션의 마스터 구성 요소 실행(ex. YARM Resource Manager Service, HDFS NameNode)

        > 클러스터로 전송된 작업의 상태 추적 및 모니터링

 

    2) Core 노드

        > 실제 작업 및 저장 공간

        > HDFS와 NodeManager 동작

 

    3) Task 노드

        > CPU, 메모리 리소스 추가하여 Hadoop, Spark 데이터에 대한 병렬 계산 작업 수행 기능 추가 가능

        > HDFS가 없고, 오직 Task를 돌리기 위한 노드

        * EMR은 VPC 외부에 있으며, VPC 내부에 있는 노드들은 DNS 조회를 통해 서로 통신함

 

ㅇ EMR 생성

    > [EMR 서비스] - [클러스터 생성] 선택

 

    > [고급 옵션으로 이동] 선택 후 소프트웨어 선택

 

    > EMR이 생성될 VPC 및 서브넷 선택

 

        * 별다른 설정을 하지 않은 기본 VPC에 생성할 경우 "오류로 종료 상태 - 유효성 검사 오류" 에러 발생

 

    > 노드의 인스턴스 유형 선택

 

    > 클러스터 이름 및 로그가 저장될 버킷 지정

 

    > 키페어 선택

 

ㅇ EMR 테스트

    > EMR을 이용한 단어 갯수 파악 프로그램을 제작

    > 퍼블릭 인스턴스에 Python3 설치

        yum install -y python3

 

    > 파이썬 설치 경로 확인

        which python

 

    > 파일 생성

        * mapper.py: 특수문자, 공백 등을 제거해 정제된 단어를 포함한 줄만 출력하는 프로그램

        * reducer.py: 출현한 단어와 그 빈도를 출력하는 프로그램

        * book.txt: 단어, 출현연도, 총 출현 횟수, 출현한 책 갯수가 순차 기입된 텍스트 파일

 

    > 쉘 테스트

        cat book.txt | ./mapper.py | sort -k1,1 | ./reducer.py | sort -k2,2n

        * ERROR: bad interpreter: Permission Denied 발생 시

            > 파이썬 코드 최상단에 위치한 매직넘버로 기입된 경로 설정이 잘못된 것

 

    > 클러스터 생성 후, CLI 접속

        * ERROR: Could not connect to the endpoint URL 발생 시

            > aws configure 실행 시, Default Region을 공백이 아닌, EMR이 있는 위치로 설정

 

    > 명령어를 통해 클러스터 상태 확인

        * 처음에는 STARTING상태로, WAITING 상태가 되어야 클러스터가 사용 가능

        aws emr list-clusters --active

 

    > 스텝 추가

        * 출력 S3 위치에 해당하는 디렉토리는 S3에 동일한 이름의 폴더가 없어야함

 

    > describe-step 명령어를 통해 해당 스텝의 상태 확인

        aws emr describe-step --cluster-id (클러스터 ID) --step-id (스텝 ID)

 

    > 결과값이 저장되었는지 확인하기 위해 S3 버킷 검사

 

    > EMR 사용 시, part-00000 ~ part-00006으로 분할된 파일로 S3에 output으로 지정한 폴더에 저장됨

 

ㅇ 결과 비교

    > sort 명령어를 통해 두 번째 인자인 숫자 기준으로 정렬

 

    > diff 명령어를 통해 두 텍스트 파일 비교

 

    > 해당 데이터는 약 4백만 줄로 쉘 스크립트 돌리는 것만으로도 짧은 시간 내에 작업 가능하지만, 훨씬 더 큰 데이터를 Input으로 사용할 경우 EMR이 더 빠를 것

반응형

'AWS' 카테고리의 다른 글

[AWS IAM] 32. 정책 세부내용 확인  (0) 2020.06.16
[AWS] 31. 2Tier-Architecture  (0) 2020.06.08
[AWS ElastiCache] 29. ElastiCache  (0) 2020.05.26
[AWS EFS] 28. EFS  (0) 2020.05.25
[AWS VPC] 26. Peering Connection  (0) 2020.05.13