[Spark] 8. Spark with AWS

2024. 12. 3. 23:34·데이터/Spark

Spark with AWS

  • AWS에서 Spark를 실행하기 위해서는 *EMR(Elastic MapReduce) 위에서 실행하는 것이 일반적
  • *EMR?
    • AWS의 Hadoop 서비스
      • Hadoop(Yarn), Spark, Hive, Notebook 등이 설치되어 제공되는 서비스
      • EC2 서버들을 worker node로 사용하고 S3를 HDFS로 사용
      • AWS 내의 다른 서비스와 연동이 쉽다!

Spark on EMR

  • AWS의 EMR 클러스터 생성
  • EMR 생성 시 Spark를 소프트웨어로 선택

생성 방법

  1. EMR 클러스터 생성
    • EMR 콘솔로 이동 및 Create Cluster 선택
    • Cluster Name 지정
    • 소프트웨어 구성
      • Spark가 포함된 EMR 릴리즈 선택
      • Spark 및 필요 애플리케이션이 포함된 애플리케이션 선택
    • 하드웨어 구성
      • Master Node 선택 -> AWS의 Instance type
      • Core Node 입력 -> Number of instances
    • Create Cluster!
  2. Master Node 포트 설정
    • EMR 클러스터 Summary 탭 -> Security groups for Master 선택
    • Security Groups 페이지에서 마스터 노드의 security group ID를 클릭
    • Edit inbound rules 버튼 클릭 후 Add rule 버튼 선택
    • 포트번호로 22를 입력, Anywhere IPv4 선택, Save rules 버튼 선택
  3. 정상 실행 확인!
    • Spark History Server 접속 및 확인

PySpark Job 실행 예제

  1. 입력 데이터를 S3로 로딩
    • Stackoverflow 2022년 개발자 서베이 CSV 파일을 S3 버킷으로 업로드
    • 경로 : 's3://spark-tutorial-dataset/survey_results_public.csv'
  2. 입력 데이터 ELT
    • 입력 CSV 파일을 분석하여 결과를 S3에 다시 저장
    • PySpark 잡 코드 
    • from pyspark.sql import SparkSession from pyspark.sql.functions import col S3_DATA_INPUT_PATH = 's3://spark-tutorial-dataset/survey_results_public.csv' S3_DATA_OUTPUT_PATH = 's3://spark-tutorial-dataset/data-output' spark = SparkSession.builder.appName('Tutorial').getOrCreate() df = spark.read.csv(S3_DATA_INPUT_PATH, header=True) print('# of records {}'.format(df.count())) learnCodeUS = df.where((col('Country') == 'United States of America')).groupby('LearnCode').count() learnCodeUS.write.mode('overwrite').csv(S3_DATA_OUTPUT_PATH) # parquet learnCodeUS.show() print('Selected data is successfully saved to S3: {}'.format(S3_DATA_OUTPUT_PATH))
  1. PySpark 잡 실행 및 확인
    • Spark 마스터 노드에 ssh로 로그인하여 spark-submit을 통해 실행
      • $ ssh -i {앞서 다운로드 받은 프라이빗 키}.pem hadoop@{마스터 노드 호스트 이름}
      • $ spark-submit --master yarn stackoverflow.py
    • S3에서 PySpark Job 실행 결과 확인
저작자표시 (새창열림)

'데이터 > Spark' 카테고리의 다른 글

[Spark] 7. Partitioning & Bucketing  (0) 2024.12.03
[Spark] 6. Spark Execution Plan  (1) 2024.12.03
[Spark] 5. File Format  (0) 2024.12.03
[Spark] 4. Database & Table  (2) 2024.12.03
[Spark] 3. Spark SQL  (1) 2024.12.02
'데이터/Spark' 카테고리의 다른 글
  • [Spark] 7. Partitioning & Bucketing
  • [Spark] 6. Spark Execution Plan
  • [Spark] 5. File Format
  • [Spark] 4. Database & Table
김줘
김줘
김줘와 같이 데이터, 컴퓨터, IT 공부
  • 김줘
    초보개발자 김줘의 코딩일기
    김줘
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 데이터 엔지니어링 데브코스
      • 데이터
        • Airflow
        • Spark
        • Kafka
        • dbt
      • TroubleShooting
      • Docker
      • AWS
      • 크롤링, 스크래핑, 시각화
        • Selenium
        • 시각화
      • 코딩테스트
        • 프로그래머스
        • 입출력과 사칙연산
        • 정렬
      • Django
      • 자바 공부
      • 끄적끄적
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    데이터 엔지니어링 데브코스
    cloud
    aws
    Python
    에어플로우
    초보개발자
    Java
    Airflow
    데브코스
    프로그래머스
    티스토리챌린지
    프로그래밍
    데이터 엔지니어
    자바
    부트캠프
    파이썬
    데이터 엔지니어링 데브코스 4기
    Azure
    TiL
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
김줘
[Spark] 8. Spark with AWS
상단으로

티스토리툴바