러닝 스파크 - 2장

Jajuna_99·2023년 3월 27일
0

러닝 스파크

목록 보기
3/8

2장 아파치 스파크 다운로드 및 시작

이 장은 스파크를 다운로드 해보고 소규모 데이터셋으로 간단한 애플리케이션을 만든다.

1단계: 아파치 스파크 다운로드

spark download! p.20 참고

스파크의 디렉터리와 파일들

  • bin : 스파크 셸들을 포함해서(spark-sql, pyspark, spark-shell, sparkR) 스파크와 상호 작용할 수 있는 대부분의 스크립트르 갖고 있다.

  • sbin : 다양한 배포 모드에서 클러스터의 스파크 컴포넌트들을 시작하고 중지하기 위한 관리 목적의 스크립트.

  • kubernetes : 도커 이미지 제작을 위한 Dockerfile들을 담고 있다.

  • data : MLlib, 정형화 프로그래밍, GraphX 등에서 입력으로 사용되는 *.txt 파일이 있다.

  • examples : 입문 예제 코드들과 이해하기 좋은 문서들이 있는 디렉토리

2단계: 스칼라 혹은 파이스파크 셸 사용

skip

3단계: 스파크 애플리케이션 개념의 이해

  • 애플리케이션 : API를 써서 스파크 위에서 돌아가는 사용자 프로그램, 드라이버 프로그램과 클러스터의 샐행기로 이루어짐

  • SparkSession : 스파크 코어 기능들과 상호 작용할 수 있는 진입점을 제공, 그 API로 프로그래밍을 할 수 있게 해주는 객체

  • 잡(job) : 스파크 액션(save(), collect())에 대한 응답으로 생성되는 여러 태스크로 이루어진 병렬 연산

  • 스테이지(stage) : 각 잡은 스테이지라 불리는 서로 의존성을 가지는 다수의 태스크 모음으로 나뉜다

  • 태스크(task) : 스파크 이그제큐터로 보내지는 작업 샐행의 가장 기본적인 단위

트랜스포메이션, 액션, 지연 평가

분산 데이터의 스파크 연산은 트랜스모이션액션으로 구분된다.

  • 스파크 연산의 특징 : 이미 불변성의 특징을 가진 원본 데이터를 수정하지 않고 하나의 스파크 데이터 프레임을 새로운 데이터 프레임으로 변형해서 반환한다. (select(), filter())

계보(lineage)라는 곳에 따로 저장하고 트랜스포메이션은 가장 마지막에 실행되며, 액션은 먼저 수행된다. 트랜스포메이션이 지연 연산되는 이유는 마지막에 다른 트랜스포메이션 연산과 합치거나 순서를 정해 최적화하기 위함이다.

좁은/넓은 트랜스포메이션

의존성으로 좁은, 넓은 트랜스포메이션을 나눌 수 있다.

filter()나 contains() 같은 트래스포메이션들은 하나의 입력 파티션만 연산하여 하나의 결과만 내놓기 때문에 의존성이 크지 않아 좁은 트랜스포메이션이다.

반면 groupBy()나 orderBy()는 다른 파티션으로부터 입력 받아 연산하고 여러 결과를 내놓기 때문에 넓은 트랜스포메이션이다.

스파크 UI

스파크 UI, GUI를 통해 스파크 애플리케이션 상태를 볼 수 있다.

  • 스케줄러의 스테이지와 태스크 목록
  • RDD 크기와 메모리 사용의 요약
  • 환경 정보
  • 실행 중인 이그제큐터 정보
  • 모든 스파크 SQL 쿼리
profile
Learning bunch, mostly computer and language

0개의 댓글