[AWS_4] AWS EMR

EMR 개괄

  • 1) EMR: Amazon Elastic MapReduce, Apach Hadoop/Spark 등 대용량 데이터 Framework 실행을 간소화하는 관리형 Cluster Platform (그림: aws_doc.pdf p.106)

  • 2) EMR로 Spark 운용

  • 3) EMR 구성: Master Node, Core and Task
    • Master Node, Core 쌍이 반드시 있어야.
    • Worker Node: Core and Task
    • Core: 자체 HDFS, Temp folder로 활용. multiple Core을 resize할 때는 HDFS의 replica를 고려(저장할 용량없으면 terminate안됨)
    • Task Node: compting 위함. eg. 1000개 instance 생성해서 computing 가능
  • 4) 복수의 EMR cluster를 동일한 S3(HDFS처럼 활용) 데이터 참조하게 할 수 있음. (vs Hadoop은 아님)
    • Bucket에 전처리된/raw data두고 각 EMR에서 활용 가능
    • 작업중 EMR terminate시 해당 Core의 HDFS만 사라짐. 즉 S3의 Data는 영향받지 않음

EMR 실행

  • 1) Software Config
    • Hadoop
    • Ganglia: Spark 리소스를 모니터링. 각 서버 상황 실시간 체크.
    • Zeppline
    • Livy: remote로 spark에 명령 전달
    • Flink: real분석. 키네시스 내부에 flink있음
    • zoo keeprer: 클러스터 간 관리
    • oozie: ETL job은 선행 후행작업이 있으므로 이걸 관리(Airflow 사용추천)
  • 2) AWS Glue Data Catalog(아래 참조): 사용
  • 3) Instance Type
    • Maste & Corer: r3(메모리 집중). 안정성 위해 On-demand.
  • 4) keypair
  • 5) Security Group: My IP 추가
  • 6) Hardware tab에서 Scale-out/in 가능

EMR 활용

  • 1) Zeppline Notebook: Browser에서 Python, Scala, R 등의 언어로 분석코드 표현. 실행결과 바로 확인. 데이터 visualization 가능
    • Spark SQL을 통해 CSV/Json/RDBMS/ParquetData 등 하나의 DataFrame으로 만들 수 있음.(데이터 형식에 구애받지 않고 R/W 모두 가능)
  • 2) AWS Glue (link): ETL Workflow를 정의하고 관리 가능
    • Data catalog: 영구적 Metadata Store(The AWS Glue Data Catalog is an index to the location, schema, and runtime metrics of your data)
    • Crawler 사용하여 Table구성 및 Sequel사용환경 구성
    • 활용 (link): 정제되지 않은 데이터 빠르게 query 사용 가능하게 정제
      • Queries Against an Amazon S3 Data Lake: S3 data 를 분석 가능 상태로 변환
      • Analyze Log Data in the Data Warehouse: Semi-structured된 데이터로 schema 생성해줌

  • 1) 여러 대의 컴퓨터를 연결하여 하나의 시스템처럼 동작하는 컴퓨터들의 집합 (아래: Master/Slave 구성)
  • 2) cluster 구성요소
    • 클러스터 노드: processing resource 제공
    • 클러스터 관리자: 노드를 서로 연결하여 단일 시스템처럼 보이게 만드는 로직 제공
  • AWS Glue는 Service 자체를 뜻하는 듯. Console로 필요 API들을 Orchestrate하는 듯. 아래는 AWS Glue environment.(AWS Glue is a fully managed ETL (extract, transform, and load) service that makes it simple and cost-effective to categorize your data, clean it, enrich it, and move it reliably between various data stores. AWS Glue consists of a central metadata repository known as the AWS Glue Data Catalog, an ETL engine that automatically generates Python or Scala code, and a flexible scheduler that handles dependency resolution, job monitoring, and retries. AWS Glue is serverless, so there’s no infrastructure to set up or manage.link)
  • 1) 생성된 테이블과 데이터 베이스는 모두 AWS Glue의 obj. Data catalog는 Metadata를 지닐 뿐, Data자체를 저장하지는 않음.(Tables and databases in AWS Glue are objects in the AWS Glue Data Catalog. They contain metadata; they don’t contain data from a data store.)
  • 2) AWS Glue를 통해 데이터 원본에서 ETL작업 -> 원하는 데이터로 만듦. (You define jobs in AWS Glue to accomplish the work that’s required to extract, transform, and load (ETL) data from a data source to a data target. You typically perform the following actions:)
    • Crawler가 Data catalog를 채움 with table definition. (You define a crawler to populate your AWS Glue Data Catalog with metadata table definitions. You point your crawler at a data store, and the crawler creates table definitions in the Data Catalog.)
    • Data catalog는 data transform에 사용될 Metadata도 지님. (In addition to table definitions, the AWS Glue Data Catalog contains other metadata that is required to define ETL jobs. You use this metadata when you define a job to transform your data.
    • … and etc
  • 3) AWS Glue Data Catalog: AWS 계정마다 하나 존재. AWS Glue의 영구적 Metadata store. (The persistent metadata store in AWS Glue. Each AWS account has one AWS Glue Data Catalog. It contains table definitions, job definitions, and other control information to manage your AWS Glue environment.)
  • 4) Crawler: Data store(S3…) 등에 접속하고, classfier을 통해 스키마 결정하고 Data catalog에 Metadata 생성 (A program that connects to a data store (source or target), progresses through a prioritized list of classifiers to determine the schema for your data, and then creates metadata in the AWS Glue Data Catalog.)
< !-- add by yurixu 替换Google的jquery并且添加判断逻辑 -->