빅데이터 분석을 위한 스칼라와 스파크 (대용량 빅데이터 분석과 머신 러닝까지 활용하는)

빅데이터 분석을 위한 스칼라와 스파크 (대용량 빅데이터 분석과 머신 러닝까지 활용하는)

$55.94
Description
2019년 대한민국학술원 우수학술도서 선정도서

스파크를 이용해 데이터 분석 방법을 배우려는 사람에게 매우 유용한 책이다. 가장 먼저 스칼라를 소개하고, 스칼라 애플리케이션 개발에 필요한 객체지향 개념과 함수형 프로그래밍 개념을 설명한다. 스파크에 초점을 맞춰 RDD와 데이터 프레임을 사용한 기본 추상화를 다룬다.
그 다음 스파크 SQL, GraphX, 스파크 구조화 스트리밍을 사용해 구조화된 데이터와 구조화되지 않은 데이터를 분석하고 모니터링, 설정, 디버깅, 테스팅, 배포와 같은 고급 주제를 살펴본다. 또한 SparkR 및 PySpark API를 사용한 스파크 애플리케이션을 개발하는 방법, 아파치 제플린(Zeppelin)을 사용한 대화식 데이터 분석, Alluxio를 함께 사용해 인메모리 데이터를 처리하는 방법을 다룬다.
이 책을 다 살펴본 후, 스파크를 완벽하게 이해하고 풀 스택 데이터 분석을 수행할 수 있을 것이다. 이 책은 최신 2.3.2 버전을 기준으로 작성됐다. 기존의 원서에서 제공하는 코드의 오타와 호환성을 수정한 옮긴이의 github 저장소를 제공한다.

■ 스칼라의 객체지향 개념과 함수형 프로그래밍 개념 이해
■ 스칼라 컬렉션 API 이해
■ 스파크의 핵심 추상화를 알기 위해 RDD와 데이터 프레임으로 작업하기
■ 스파크 SQL과 GraphX를 사용해 구조 데이터와 구조화되지 않은 데이터 분석
■ 스파크 구조화 스트리밍을 사용해 확장 가능하고 내결함성 있는 스트리밍 애플리케이션 개발
■ 스파크 MLlib과 스파크 ML에서 많이 사용되는 알고리즘으로 예측 모델을 구축할 수 있는 분류, 회귀 분석, 차원 감소, 추천 시스템과 같은 머신 러닝 모범 사례
■ 방대한 양의 데이터를 클러스터링하는 클러스터링 모델 구축
■ 스파크 애플리케이션 튜닝, 디버깅, 모니터링 이해
■ 실제 독립형(Standalone), 메소스(Mesos), 얀(YARN), 쿠버네티스(Kubernetes) 모드의 클러스터에 스파크 애플리케이션 배포

스파크를 이용해 데이터 분석 방법을 배우려는 사람에게 매우 유용한 책이다. 스파크나 스칼라에 대한 지식은 없더라도 이전 프로그래밍 경험(특히 다른JVM 언어)이 있다면 스파크나 스칼라에 대한 개념을 이해하는 데 매우 유용하다.
스칼라는 지난 몇 년 동안 특히 데이터 과학과 분석 분야에서 꾸준히 증가하고 있다. 스파크는 스칼라로 작성됐고 분석 분야에서 널리 사용되고 있다. 이 책은 빅데이터를 잘 다룰 수 있는 스파크를 설명한다.
저자

레자울카림

독일프라운호퍼(Fraunhofer)의FIT연구과학자다.독일아헨(Aachen)의RWTH아헨공과대학교에서박사학위를받았다.컴퓨터과학학사,석사학위도취득했다.
프라운호퍼FIT에입사하기전에아일랜드의InsightCenter(아일랜드최대규모의데이터분석센터이자세계최대의시맨틱웹연구소)의연구원으로일하면서데이터분석업무를맡았다.그전에는한국,인도,베트남,터키,방글라데시에위치한삼성전자의R&D센터에서리드엔지니어,한국의경희대학교데이터베이스연구소에서연구조교로일했다.또한방글라데시다카의i2SoftTechnology에서소프트웨어엔지니어,비엠테크21월드와이드(BMTech21Worldwide)에서R&D엔지니어로도근무했다.
빅데이터기술(스파크,카프카,DC/OS,도커,메소스(Mesos),제플린(Zeppelin),하둡,맵리듀스(MapReduce))과딥러닝(텐서플로,DeepLearning4j,H2O-SparkingWater)중심의C/C++,자바,스칼라,R,파이썬알고리즘과데이터구조에대한확실한지식을바탕으로연구개발분야에서8년이상의경력을쌓았다.연구관심사는머신러닝,딥러닝,시맨틱웹,링크데이터,빅데이터,바이오인포믹스등이다.팩트출판사에서출간한『대용량머신러닝과스파크』(에이콘,2018)와『텐서플로로구현하는딥러닝과강화학습』(에이콘,2017)의저자다.

목차

지은이소개
기술감수자소개
옮긴이소개
옮긴이의말
들어가며

1장스칼라소개
2장객체지향언어,스칼라
3장함수형프로그래밍개념
4장컬렉션API
5장스파크로빅데이터다루기
6장스파크로REPL과RDD작업
7장특수RDD연산
8장스파크SQL
9장스파크스트리밍
10장GraphX
11장머신러닝학습:스파크MLlib와ML
12장고급머신러닝모범사례
13장나이브베이즈
14장스파크MLlib으로데이터클러스터링
15장스파크ML을이용한텍스트분석
16장스파크튜닝
17장클러스터에스파크배포
18장스파크테스팅과디버깅
19장PySpark와SparkR

부록AAlluxio로스파크의처리성능높이기
부록B아파치제플린에서대화형데이터분석

찾아보기

출판사 서평

1장,‘스칼라소개’에서는스파크의스칼라기반API를사용해빅데이터를분석한다.시작점으로스파크내부가스칼라로작성됐음을설명하고자연스럽게스칼라의역사,목적,윈도우/리눅스/맥OS에스칼라를설치하는방법과같은기본내용등스칼라에대해간단히설명한다.그리고스칼라웹프레임워크에대해간략히설명한다.그다음자바와스칼라를비교분석한다.마지막에스칼라를시작하기위해스칼라프로그래밍을살펴본다.
2장,‘객체지향언어,스칼라’에서는객체지향프로그래밍(OOP)패러다임이완전히새로운추상화계층을제공한다고설명한다.간단히말해OOP언어의가장큰장점인탐색가능성,모듈성,확장성을설명한다.특히스칼라에서변수를처리하는방법을살펴본다.스칼라에서변수,메소드,클래스,객체뿐아니라패키지,패키지객체,트레이트,트레이트선형화,자바와의상호호환성등을다룬다.
3장,‘함수형프로그래밍개념’에서는스칼라의함수형프로그래밍개념을소개한다.스칼라가데이터과학자에게무기가되는이유,스파크패러다임/순수함수/고차함수를배우는것이중요한이유와같은몇가지주제를다룬다.고차함수를사용하는실제사용사례도함께소개한다.그다음스칼라표준라이브러리를사용해컬렉션외부의고차함수에서예외를처리하는방법을살펴본다.마지막으로함수형스칼라가객체의가변성에어떤영향을주는지살펴본다.
4장,‘컬렉션API’에서는스칼라사용자가가장큰흥미를얻는기능중하나인컬렉션API를소개한다.스칼라컬렉션API는매우강력하고유연하며결합된많은연산을갖고있다.그리고스칼라컬렉션API의기능을소개할뿐아니라다양한타입의데이터를수용하고다양한문제를해결할때컬렉션API의사용방법을소개한다.마지막으로스칼라컬렉션API,타입과계층구조,성능특성,자바상호운용성,스칼라암시를설명한다.
5장,‘스파크로빅데이터다루기’에서는데이터분석과빅데이터에대해설명한다.빅데이터에서제기되는도전과제,분산컴퓨팅처리방법,함수형프로그래밍접근방식을살펴본다.구글의맵리듀스,아파치하둡,아파치스파크를소개하고,해당오픈소스의접근방법과기술의사용방법을살펴본다.아파치스파크가처음만들어졌던이유와빅데이터분석및처리시부딪혔던도전과제등아파치스파크의진화과정을살펴본다.
6장,‘스파크로REPL과RDD로작업’에서는스파크작동방법을다룬다.그다음아파치스파크의기본추상화인RDD를소개하고단순히스칼라와유사한API를제공하는분산컬렉션인지확인한다.아파치스파크의배포옵션을살펴보고스파크셸을사용해로컬에서실행한다.아파치스파크의내부구조,RDD의개념,DAG,RDD계보,트랜스포메이션,액션을다룬다.
7장,‘특수RDD연산’에서는다양한요구사항을RDD가어떻게충족시키는지,어떻게RDD가새로운기능(위험성도갖고있다)을제공하는지에대해중점적으로다룬다.또한브로드캐스트변수와스파크에서제공하는누산기와같은유용한객체를살펴본다.마지막으로셔플링과집계를다룬다.
8장,‘스파크SQL’에서는RDD의하이레벨추상화인스파크SQL로구조화된데이터를분석하는방법과스파크SQLAPI로구조화된데이터를간단하면서도견고하게쿼리하는방법을소개한다.또한데이터셋을소개하고데이터셋,데이터프레임,RDD간의차이점을살펴본다.마지막으로데이터프레임API를사용해복잡한데이터분석을수행할수있는조인연산과윈도우함수를살펴본다.
9장,‘스파크스트리밍’에서는스파크스트리밍을소개하고,스파크API를사용해데이터스트림을스파크스트리밍으로처리하는방법을설명한다.또한트위터에글을트윗하고처리하는실제사례를사용해서실시간데이터스트림을처리하는다양한방법을다룬다.실시간처리를위해아파치카프카와통합하는방법도살펴본다.마지막으로애플리케이션에서실시간쿼리를제공할수있는구조화스트리밍을살펴본다.
10장,‘GraphX’에서는그래프를사용해얼마나많은실제문제를모델링하고해결할수있는지살펴본다.페이스북을예로들어그래프이론,스파크의그래프처리라이브러리GraphX,VertexRDD와EdgeRDD,그래프연산자,aggregateMessages,triangleCount,PregelAPI,페이지랭크알고리즘과같은사용사례를살펴본다.
11장,‘머신러닝학습:스파크MLlib과ML’에서는통계머신러닝에대한개념적인소개를제공한다.스파크의머신러닝API인스파크MLlib과스파크ML을집중적으로다룬다.디시전트리(decisiontree)와랜덤포레스트알고리즘(randomforestalgorithm)을이용한분류작업을해결하는방법과선형회귀알고리즘을이용한회귀문제를해결한다.
또한분류모델을훈련하기전에피처추출에서원핫(one-hot)인코딩과차원축소알고리즘을사용함으로써얻을수있는이점을보여준다.그다음에는협업필터링기반영화추천시스템을개발하는단계별예제를보여준다.
12장,‘고급러닝머신모범사례’에서는스파크를사용한머신러닝고급주제에대한이론과실용적인측면을살펴본다.그리드검색,교차검증,하이퍼파라미터튜닝을사용해성능을최적화하는머신러닝모델튜닝방법을배운다.그리고모델기반의추천알고리즘중인하나인ALS를사용해확장가능한추천시스템개발방법을다룬다.마지막으로주제모델링애플리케이션은텍스트클러스터링기법을활용한다.
13장,‘나이브베이즈’에서는빅데이터분야의머신러닝이학계와산업계모두의연구분야에큰영향을미친급진적인결합이라고말한다.빅데이터는실제가치를찾기위해ML,데이터분석툴,알고리즘에어려운과제를부과한다.그러나거대한데이터셋을기반으로미래를예측하는것은결코쉬운일이아니다.미래예측과관련해ML을자세히살펴보고,간단하지만강력한방법으로다항분류,베이지안추론,나이브베이즈,디시전트리,나이브베이즈와디시전트리의비교분석등확장가능한분류모델과개념을구축하는방법을알아본다.
14장,‘스파크MLlib으로데이터클러스터링’에서는스파크의기본아키텍처기반으로스파크가클러스터모드에서어떻게동작하는지설명한다.이전여러장에서다양한스파크API를사용해실제애플리케이션의개발방법을살펴봤다면14장에서는클러스터에전체스파크애플리케이션을배포하는방법뿐아니라기존하둡을설치했는지또는설치하지않았는지확인한다.
15장,‘스파크ML을이용한텍스트분석’에서는스파크ML을사용해텍스트분석을설명한다.텍스트분석은머신러닝의넓은분야며,정서분석,채팅봇,이메일스팸탐지,자연어처리등과같은많은사용사례에서유용하다.10,000개의트위터샘플데이터셋을텍스트분류사용사례에중점을둔텍스트분석에스파크를사용하는방법을살펴본다.또한실제텍스트를잘모르는상태에서문서에서주제를생성하는인기있는기술인LDA를살펴보고,LDA가잘동작하는지트위터데이터를기반으로텍스트분류를구현한다.
16장,‘스파크튜닝’에서는스파크내부를깊이있게살펴본다.그리고스파크를사용하는것이스칼라컬렉션을사용하는것처럼느껴지지만실제스파크가분산시스템에서실행된다는것을잊지말아야한다.또한스파크잡모니터링,스파크설정,스파크애플리케이션개발시발생하는일반적인실수,최적화기술에대해설명한다.
17장,‘클러스터에스파크배포’에서는스파크가기본아키텍처를기반으로클러스터모드에서어떻게동작하는지살펴본다.클러스터에서스파크아키텍처,스파크생태계,클러스터관리를살펴보고독립형,메소스(Mesos),얀(Yarn),쿠버네티스(kubernetes)에스파크애플리케이션을배포하는방법을살펴본다.마지막으로클라우드기반AWS클러스터에스파크애플리케이션을배포하는방법도살펴본다.
18장,‘스파크테스팅과디버깅’에서는분산배포된애플리케이션의테스팅에대한어려움을설명하고,테스팅을해결할방법을살펴본다.분산환경에서테스팅을수행하는방법과스파크애플리케이션을테스팅하고디버깅하는방법을다룬다.
19장,‘PySpark과SparkR’에서는파이썬과R을사용해스파크코드를작성하는데사용되는두API,즉PySpark와SparkR을설명한다.먼저PySpark를시작하는방법을설명한후PySpark로데이터프레임API와UDF에상호작용하는방법을설명한다.
그리고PySpark를사용해데이터분석을수행한다.그다음에SparkR을시작하는방법을설명한다.또한데이터처리과조작방법,SparkR을사용한RDD와데이터프레임을사용하는방법,마지막으로SparkR을사용하는일부데이터시각화방법을살펴본다.
부록A,‘Alluxio로스파크의처리성능높이기’에서는Alluxio를스파크와함께사용해처리속도를향상시키는방법을보여준다.Alluxio는스파크를포함한여러플랫폼에서많은애플리케이션의속도를높여주는오픈소스분산메모리저장시스템이다.
Alluxio의가능성을살펴보고Alluxio을스파크와통합해스파크잡을실행할때마다메모리에데이터를캐시할필요없이더좋은성능을보여주는부분을보여준다.
부록B,‘아파치제플린에서대화형데이터분석’에서는데이터과학관점에서데이터분석의대화형,시각적효과가중요함을설명한다.제플린은여러백엔드와인터프리터가있는대화형,대규모데이터분석을위한웹기반노트북이다.그리고백엔드에서인터프리터로스파크를사용해대규모데이터를분석할수있게아파치제플린을사용하는방법을설명한다.

★옮긴이의말★

하둡맵리듀스(HadoopMapReduce)프로그래밍은최근몇년동안잘사용되고있습니다.또한데이터가저장된하둡분산파일시스템을기반으로하는분석,추천프로그래밍은하둡내부에서만가능했기에개발자들이하둡인터페이스를사용해개발해야했습니다.그러나일반개발자가이해하기어려운개념과인터페이스가있어하둡과하둡맵리듀스를잘이해하는개발자가전문적으로개발하곤했습니다.일반개발자들이쉽게분석할수있도록아파치하이브(Hive)등다양한하둡관련프레임워크가사용되기시작했습니다.그러나여전히유연하지않을뿐더러하둡맵리듀스개발은변화되지않았고,테스트코드개발역시쉽지않았습니다.하둡프로그래밍의약점은대용량데이터에대한실시간처리입니다.따라서하둡대신실시간데이터를처리하는메시징큐(예,카프카)를사용하고있습니다.그러다보니스트리밍처리를처리하기위해아파치스톰(ApacheStorm),스파크스트리밍(SparkStreaming),아파치플링크(ApacheFlink)등많은오픈소스가쓰이고있습니다.
저는현업개발자이지만다양한NoSQL,대용량,비즈니스에관심이많습니다.저는스칼라/스파크를사용해애플리케이션을개발했고,메소스/마라톤및쿠버네티스에서애플리케이션에서도애플리케이션을개발했습니다.따라서하둡맵리듀스프로그래밍은스파크로대체될것이라는굳은믿음이있습니다.누구나스칼라를제대로알수있다면하둡맵리듀스프로그래밍을스칼라기반의스파크프로그래밍으로대체및보완할수있을것이라확신합니다.
저뿐아니라많은개발자가하둡맵리듀스프로그래밍,기존파이프라인프로그래밍및머신러닝프로그래밍을점차스파크프로그래밍으로대체되고보완하고있습니다.스트리밍처리,대용량분석처리,추천시스템개발,인메모리병렬처리,머신러닝까지여러분야의애플리케이션을스파크하나만알면어느정도진행할수있습니다.따라서람다아키텍처를스파크로쉽게처리할수있습니다.스파크는CNN과같은딥러닝을지원하지않지만텐서플로(Tensorflow)와쉽게연동할수있습니다.그리고스파크는자바,스칼라,파이썬,R언어를지원하기때문에언어에대한부담이가장덜합니다.
특히스칼라의함수형언어의특징과데이터프레임을추상화한스칼라기반의스파크를활용함으로써빅데이터를논리적인프로그래밍으로쉽게처리할수있습니다.많은개발자가스스로공부하며빅데이터,머신러닝의