본문 바로가기
리뷰/도서

[리뷰] 스파크 완벽 가이드

by Remover 2020. 11. 19.
반응형

책소개

스파크 창시자가 알려주는 스파크 활용과 배포, 유지 보수의 모든 것 

오픈소스 클러스터 컴퓨팅 프레임워크인 스파크의 창시자가 쓴 스파크에 대한 종합 안내서입니다. 스파크 사용법부터 배포, 유지 보수하는 방법까지 포괄적으로 익힐 수 있습니다.

스파크 2의 개선점과 새로운 기능을 자세히 설명합니다. 구조화된 스파크 API의 특징과 공통 기능은 물론이고, 엔드 투 엔드 스트리밍 애플리케이션을 구축하는 새로운 고수준 API인 구조적 스트리밍을 함께 살펴봅니다.

이 책을 읽으면 스파크를 모니터링, 튜닝, 디버깅하는 데 필요한 기본 지식을 습득할 수 있습니다. 나아가 스파크의 확장 머신러닝 라이브러리인 MLlib을 사용하는 방법과 시나리오를 익힐 수 있습니다.

 

www.hanbit.co.kr/store/books/look.php?p_code=B6709029941

 

스파크 완벽 가이드

오픈소스 클러스터 컴퓨팅 프레임워크인 스파크의 창시자가 쓴 스파크에 대한 종합 안내서입니다. 스파크 사용법부터 배포, 유지 보수하는 방법까지 포괄적으로 익힐 수 있습니다. 스파크 2의

www.hanbit.co.kr

목차

더보기

Part 1 빅데이터와 스파크 간단히 살펴보기

 

CHAPTER 1 아파치 스파크란

1.1 아파치 스파크의 철학

1.2 스파크의 등장 배경

1.3 스파크의 역사

1.4 스파크의 현재와 미래

1.5 스파크 실행하기

1.6 정리

 

CHAPTER 2 스파크 간단히 살펴보기

2.1 스파크의 기본 아키텍처

2.2 스파크의 다양한 언어 API

2.3 스파크 API

2.4 스파크 시작하기

2.5 SparkSession

2.6 DataFrame

2.7 트랜스포메이션

2.8 액션

2.9 스파크 UI

2.10 종합 예제

2.11 정리

 

CHAPTER 3 스파크 기능 둘러보기

3.1 운영용 애플리케이션 실행하기

3.2 Dataset: 타입 안정성을 제공하는 구조적 API

3.3 구조적 스트리밍

3.4 머신러닝과 고급 분석

3.5 저수준 API

3.6 SparkR

3.7 스파크의 에코시스템과 패키지

3.8 정리

 

Part 2 구조적 API: DataFrame, SQL, Part 2Dataset

 

CHAPTER 4 구조적 API 개요

4.1 DataFrame과 Dataset

4.2 스키마

4.3 스파크의 구조적 데이터 타입 개요

4.4 구조적 API의 실행 과정

4.5 정리

 

CHAPTER 5 구조적 API 기본 연산

5.1 스키마

5.2 컬럼과 표현식

5.3 레코드와 로우

5.4 DataFrame의 트랜스포메이션

5.5 정리

 

CHAPTER 6 다양한 데이터 타입 다루기

6.1 API는 어디서 찾을까

6.2 스파크 데이터 타입으로 변환하기

6.3 불리언 데이터 타입 다루기

6.4 수치형 데이터 타입 다루기

6.5 문자열 데이터 타입 다루기

6.6 날짜와 타임스탬프 데이터 타입 다루기

6.7 null 값 다루기

6.8 정렬하기

6.9 복합 데이터 타입 다루기

6.10 JSON 다루기

6.11 사용자 정의 함수

6.12 Hive UDF

6.13 정리

 

CHAPTER 7 집계 연산

7.1 집계 함수

7.2 그룹화

7.3 윈도우 함수

7.4 그룹화 셋

7.5 사용자 정의 집계 함수

7.6 정리

 

CHAPTER 8 조인

8.1 조인 표현식

8.2 조인 타입

8.3 내부 조인

8.4 외부 조인

8.5 왼쪽 외부 조인

8.6 오른쪽 외부 조인

8.7 왼쪽 세미 조인

8.8 왼쪽 안티 조인

8.9 자연 조인

8.10 교차 조인(카테시안 조인)

8.11 조인 사용 시 문제점

8.12 스파크의 조인 수행 방식

8.13 정리

 

CHAPTER 9 데이터소스

9.1 데이터소스 API의 구조

9.2 CSV 파일

9.3 JSON 파일

9.4 파케이 파일

9.5 ORC 파일

9.6 SQL 데이터베이스

9.7 텍스트 파일

9.8 고급 I/O 개념

9.9 정리

 

CHAPTER 10 스파크 SQL

10.1 SQL이란

10.2 빅데이터와 SQL: 아파치 하이브

10.3 빅데이터와 SQL: 스파크 SQL

10.4 스파크 SQL 쿼리 실행 방법

10.5 카탈로그

10.6 테이블

10.7 뷰

10.8 데이터베이스

10.9 select 구문

10.10 고급 주제

10.11 다양한 기능

10.12 정리

 

CHAPTER 11 Dataset

11.1 Dataset을 사용할 시기

11.2 Dataset 생성

11.3 액션

11.4 트랜스포메이션

11.5 조인

11.6 그룹화와 집계

11.7 정리

 

Part 3 저수준 API

 

CHAPTER 12 RDD

12.1 저수준 API란

12.2 RDD 개요

12.3 RDD 생성하기

12.4 RDD 다루기

12.5 트랜스포메이션

12.6 액션

12.7 파일 저장하기

12.8 캐싱

12.9 체크포인팅

12.10 RDD를 시스템 명령으로 전송하기

12.11 정리

 

CHAPTER 13 RDD 고급 개념

13.1 키-값 형태의 기초(키-값 형태의 RDD)

13.2 집계

13.3 cogroup

13.4 조인

13.5 파티션 제어하기

13.6 사용자 정의 직렬화

13.7 정리

 

CHAPTER 14 분산형 공유 변수

14.1 브로드캐스트 변수

14.2 어큐뮬레이터

14.3 정리

 

Part 4 운영용 애플리케이션

 

CHAPTER 15 클러스터에서 스파크 실행하기

15.1 스파크 애플리케이션의 아키텍처

15.2 스파크 애플리케이션의 생애주기(스파크 외부)

15.3 스파크 애플리케이션의 생애주기(스파크 내부)

15.4 세부 실행 과정

15.5 정리

 

CHAPTER 16 스파크 애플리케이션 개발하기

16.1 스파크 애플리케이션 작성하기

16.2 스파크 애플리케이션 테스트

16.3 개발 프로세스

16.4 애플리케이션 시작하기

16.5 애플리케이션 환경 설정하기

16.6 정리

 

CHAPTER 17 스파크 배포 환경

17.1 스파크 애플리케이션 실행을 위한 클러스터 환경

17.2 클러스터 매니저

17.3 기타 고려사항

17.4 정리

 

CHAPTER 18 모니터링과 디버깅

18.1 모니터링 범위

18.2 모니터링 대상

18.3 스파크 로그

18.4 스파크 UI

18.5 디버깅 및 스파크 응급 처치

18.6 정리

 

CHAPTER 19 성능 튜닝

19.1 간접적인 성능 향상 기법

19.2 직접적인 성능 향상 기법

19.3 정리

 

Part 5 스트리밍

 

CHAPTER 20 스트림 처리의 기초

20.1 스트림 처리란

20.2 스트림 처리의 핵심 설계 개념

20.3 스파크의 스트리밍 API

20.4 정리

 

CHAPTER 21 구조적 스트리밍의 기초

21.1 구조적 스트리밍의 기초

21.2 핵심 개념

21.3 구조적 스트리밍 활용

21.4 스트림 트랜스포메이션

21.5 입력과 출력

21.6 스트리밍 Dataset API

21.7 정리

 

CHAPTER 22 이벤트 시간과 상태 기반 처리

22.1 이벤트 시간 처리

22.2 상태 기반 처리

22.3 임의적인 상태 기반 처리

22.4 이벤트 시간 처리의 기본

22.5 이벤트 시간 윈도우

22.6 스트림에서 중복 데이터 제거하기

22.7 임의적인 상태 기반 처리

22.8 정리

 

CHAPTER 23 운영 환경에서의 구조적 스트리밍

23.1 내고장성과 체크포인팅

23.2 애플리케이션 변경하기

23.3 메트릭과 모니터링

23.4 알림

23.5 스트리밍 리스너를 사용한 고급 모니터링

23.6 정리

 

Part 6 고급 분석과 머신러닝

 

CHAPTER 24 고급 분석과 머신러닝 개요

24.1 고급 분석에 대한 짧은 입문서

24.2 스파크의 고급 분석 툴킷

24.3 고수준 MLlib의 개념

24.4 MLlib 실제로 사용하기

24.5 모델 배포 방식

24.6 정리

 

CHAPTER 25 데이터 전처리 및 피처 엔지니어링

25.1 사용 목적에 따라 모델 서식 지정하기

25.2 변환자

25.3 전처리 추정자

25.4 고수준 변환자

25.5 연속형 특징 처리하기

25.6 범주형 특징 처리하기

25.7 텍스트 데이터 변환자

25.8 특징 조작하기

25.9 특징 선택

25.10 고급 주제

25.11 정리

 

CHAPTER 26 분류

26.1 활용 사례

26.2 분류 유형

26.3 MLlib의 분류 모델

26.4 로지스틱 회귀

26.5 의사결정트리

26.6 랜덤 포레스트와 그래디언트 부스티드 트리

26.7 나이브 베이즈

26.8 분류와 자동 모델 튜닝을 위한 평가기

26.9 세부 평가지표

26.10 일대다 분류기

26.11 다층 퍼셉트론

26.12 정리

 

CHAPTER 27 회귀

27.1 활용 사례

27.2 MLlib에서 제공하는 회귀 모델

27.3 선형 회귀

27.4 일반화 선형 회귀

27.5 의사결정트리

27.6 랜덤 포레스트와 그래디언트 부스티드 트리

27.7 고급 방법론

27.8 평가기와 모델 튜닝 자동화

27.9 평가지표

27.10 정리

 

CHAPTER 28 추천

28.1 활용 사례

28.2 교차최소제곱 알고리즘을 사용하여 협업 필터링 구현하기

28.3 추천을 위한 평가기

28.4 성과 평가지표

28.5 빈발 패턴 마이닝

28.6 정리

 

CHAPTER 29 비지도 학습

29.1 활용 사례

29.2 모델 확장성

29.3 k-평균

29.4 이분법 k-평균

29.5 가우시안 혼합 모델

29.6 잠재 디리클레 할당

29.7 정리

 

CHAPTER 30 그래프 분석

30.1 그래프 작성하기

30.2 그래프 쿼리하기

30.3 모티프 찾기

30.4 그래프 알고리즘

30.5 정리

 

CHAPTER 31 딥러닝

31.1 딥러닝이란

31.2 스파크에서 딥러닝을 사용하는 방법

31.3 딥러닝 라이브러리

31.4 딥러닝 파이프라인을 사용한 간단한 예제

31.5 정리

 

Part 7 에코시스템

 

CHAPTER 32 언어별 특성: 파이썬(PySpark)과 R(SparkR, sparklyr)

32.1 PySpark

32.2 R로 스파크 사용하기

32.3 정리

 

CHAPTER 33 에코시스템과 커뮤니티

33.1 스파크 패키지

33.2 커뮤니티

33.3 정리

 

부록 A 스파크 설치 및 실행 

부록 B 더블린 원정대: 스파크 서밋 2017 더블린 참관기

리뷰

 

이번에 리뷰하게 된 책은 '스파크 완벽 가이드' 입니다.

데이터 분석을 위해 Apache Spark를 많이 사용하는데요. 물론 제가 근무하는 네이버에서도 많이 사용하고 있습니다. 저 또한 분석을 위해 사용하고 있는 만큼 책이 굉장히 두껍습니다. 그만큼 많은 데이터를 다루는 방식에 여러가지가 있기 때문입니다. 

 

이 책은 2.x를 기반으로 하고 있습니다. 아쉽게도.

Spark의 최신 버전은 3.x 버전이고 2.x와는 다르게 개선된 내용들이 많으니 3.x DOC(spark.apache.org/news/spark-3-0-1-released.html)를 확인해보시는것도 좋을 것 같습니다.

 

 

스파크의 내용을 자세하게 다루고 있는 책입니다. 두꺼운 만큼 상세하게 잘 설명되어 있는데요. 제가 가장 마음에 들었던 부분은 설치하는 부분에 있어서 Dockerfile을 제공하고 있다는 점입니다. 스파크 설정과 기타 등등을 한꺼번에 해주기 때문에 설치가 편리했습니다. 최근에는 Windows에서도 WSL2를 지원하면서 Docker에 사용이 간편해졌으니 어렵지 않게 설치하실 수 있을 것이라고 생각합니다.

 

사실상 스파크는 배치 혹은 스트리밍한 데이터를 처리하기 위해 많이 사용합니다. Log를 집계하여 계산하는 영역, Batch를 통해 데이터를 집계하는 등 두 가지 처리가 많이 일어나고 구조적인 내용부터 천천히 설명을 시작합니다.

 

코드는 Python도 존재하지만 scala로도 소스가 존재합니다. 언어를 두가지나 지원해주는 점에서 상당히 배려심 있는 책이라고 생각이 들었습니다. 저 같은 경우에는 Scala로도 작성하지만 Java로도 작성해서 사용하기 때문에 익숙하신 언어로 공부하시면 될 것 같네요. 배려심이 많은 만큼 책이 두꺼웠단 생각이 듭니다.

 

스파크의 기본 문법에 대한 설명, RDD를 시작하여 SQL, parquet 등 여러가지 기본적인 내용들을 상세하게 설명해줍니다. SELECT, UPDATE 등 스파크는 기본적으로 SQL 문처럼 사용할 수 있는데요. DataSet, DateFrame 구조도 상세하게 설명하고 있습니다.

 

스파크의 강점 중 하나는 머신러닝에 사용할 수 있다는 건데요. 데이터를 처리하는 과정에서 분산처리를 활용하는 것은 시간 철약에 큰 역할을 하기도 하죠. 머신러닝에 관련된 내용은 파트4부터 나옵니다. 장으로는 25장부터 시작됩니다. 머신러닝에 있어서 가장 중요한 것은 데이터 입니다. 데이터 전처리를 시작으로 피처 엔지니어링, 분류, 하이퍼 파라미터, 회귀, 비지도 학습에 대한 내용들을 다루고 있습니다. 최근에는 텐서플로우를 많이 사용하지만 데이터가 정말 크다면 스파크를 통해 데이터를 분석해보는 것도 재미있을 것 같습니다.

 

 

- 한빛미디어로부터 책을 지원 받아 작성 된 리뷰 입니다.

댓글