Top

초보자를 위한 아파치 스파크 2 [스칼라와 파이썬을 활용한 대규모 분산 데이터 처리 애플리케이션 개발]

  • 원서명Apache Spark 2 for Beginners: Develop large-scale distributed data processing applications using Spark 2 in Scala and Python (ISBN 9781785885006)
  • 지은이라자나라야난 토투바이카투마나(Rajanarayanan Thottuvaikkatumana)
  • 옮긴이방호남
  • ISBN : 9791161751054
  • 30,000원
  • 2018년 01월 31일 펴냄
  • 페이퍼백 | 384쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

요약

스파크 2.0을 처음 접하는 초보자부터 고급 개발자까지 활용할 수 있는 예제 중심의 스파크 2.0 종합 입문서다.
빅데이터와 머신 러닝 시대를 맞아 안정적이고 빠른 데이터 처리 능력을 가진 분산 데이터 처리 플랫폼의 중요성이 부각되는 가운데 처리 속도, 안정성, 호환성을 모두 만족하는 오픈 소스 기반 프레임워크가 바로 스파크다. 새로 나온 스파크 2.0은 기존 스파크보다 더욱 빠른 데이터 처리 속도와 다양한 머신 러닝 라이브러리 지원을 바탕으로 전 세계에서 활용되고 있다.
특히 이 책은 스파크를 처음 접하는 초보자들이 내용을 쉽게 이해할 수 있도록 다양한 예제 중심으로 이뤄져 있다. 단순한 데이터 처리부터 복잡한 데이터 스트림, 메시지큐, 그래프 모델 등 다양한 난이도의 예제를 통해 스파크 2.0이 가진 장점을 모두 살펴볼 수 있을 것이다.

이 책에서 다루는 내용

█ 스칼라와 파이썬을 이용한 스파크 프로그래밍 모델과 스파크 2의 기초
█ 스파크 SQL 사용법과 스칼라와 파이썬을 이용한 데이터프레임 활용
█ R을 이용한 스파크 프로그래밍 기초
█ 파이썬을 활용한 그래프 및 차트 그리기, 스파크 데이터 처리
█ 스칼라와 파이썬을 이용한 스파크 스트림 처리
█ 스파크 MLib을 활용한 머신 러닝
█ 스파크 GraphX를 이용한 그래프 처리 기초
█ 배운 것들을 종합해 하나의 완벽한 스파크 애플리케이션 실전 예제 개발

이 책의 대상 독자

스파크의 데이터 처리 능력과 R 또는 데이터 및 스트림 처리, 머신 러닝, 그래프 처리를 결합해 상호 운용 가능한 하나의 프레임워크에서 스칼라나 파이썬을 지원하는 통합 API를 활용하는 데 관심이 있는 애플리케이션 개발자 및 데이터 과학자, 대규모 데이터 솔루션 아키텍처라면 이 책이 큰 도움이 될 것이다.

이 책의 구성

1장, ‘스파크 기초’에서는 스파크 프레임워크 기초와 API 그리고 함께 제공되는 라이브러리를 논의하고 스파크를 사용하는 데이터 처리 생태계 전체를 살펴본다.
2장, ‘스파크 프로그래밍 모델’에서는 스파크에서 사용되는 함수 프로그래밍 방법론을 기초로 스파크의 유니폼 프로그래밍 모델에 대해 설명하고 RDD(Resilient Distributed Data Sets) 및 스파크 변환, 스파크 액션의 기본 사항을 다룬다.
3장, ‘스파크 SQL’에서는 가장 강력한 스파크 라이브러리 중 하나인 스파크 SQL에 관해 논의하고 스파크 프로그램과 함께 어떠한 방식으로 동작하는지 살펴본다. 또한 데이터 처리를 위해 스파크 SQL을 사용해 다양한 데이터 소스에 액세스하는 방법과 여러 종류의 데이터 소스 통합에 관해 설명한다.
4장, ‘스파크 R 프로그래밍’에서는 스파크 R API인 SparkR과 R에 관해 설명한다. 이를 통해 R 사용자는 익숙한 데이터 프레임 추상화를 사용해 스파크의 데이터 처리 기능을 사용할 수 있다. 더불어 R 사용자가 스파크 데이터 처리 생태계에 익숙해질 수 있는 기초 지식도 제공한다.
5장, ‘파이썬을 활용한 스파크 데이터 분석’에서는 스파크를 이용한 데이터 처리 방법과 파이썬에서 스파크와 함께 활용할 수 있는 다양한 차트 및 그래프 라이브러리에 대해 설명한다. 또한 프로그래밍 언어로서 파이썬을 선택하고 스파크 애플리케이션을 파이썬과 결합해서 활용하는 방법에 대해 논의한다.
6장, ‘스파크 스트림 처리’에서는 스트림(stream) 형태로 수집한 데이터를 캡처하고 처리하는 가장 강력한 스파크 라이브러리 중 하나인 스파크 스트리밍에 대해 설명한다. 분산 메시지 브로커인 카프카(Kafka)와 카프카의 소비자로 작동하는 스파크 스트리밍 애플리케이션에 대해서도 논의한다.
7장, ‘스파크 머신 러닝’에서는 입문 수준에서 머신 러닝 애플리케이션 개발에 사용하는 가장 강력한 스파크 라이브러리 중 하나인 스파크 MLlib에 대해 설명한다.
8장, ‘스파크 그래프 처리’에서는 그래프 데이터 구조를 처리하는 가장 강력한 스파크 라이브러리 중 하나인 스파크 GraphX에 대해 설명하고 그래프로 데이터를 처리하는 수많은 알고리즘을 살펴본다. GraphX 기초와 GraphX에서 제공하는 알고리즘을 사용해 구현한 몇 가지 유스 케이스도 설명한다.
9장, ‘스파크 애플리케이션 설계’에서는 스파크의 다양한 기능을 다루는 스파크 데이터 처리 애플리케이션 설계 및 개발에 대해 설명한다. 9장에서 다루는 대부분의 내용은 이미 앞에서 다룬 내용이다.

저자/역자 소개

지은이의 말

스파크라 불리는 데이터 처리 프레임워크는, 하둡 맵리듀스 작업 성능이 낮은 부분에서도 반복적으로 데이터셋을 재사용함으로써 주목할만한 가치를 제공할 수 있음을 증명하기 위해 처음 개발됐다. 연구 논문 《Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center》는 스파크의 디자인 철학에 관해 이야기한다. 캘리포니아에 있는 버클리 대학 (University of California Berkeley) 연구진이 메소스를 테스트하기 위해 만든 매우 단순한 구현체는 후에 가장 활발한 아파치 프로젝트 중 하나가 됐다. 스파크는 처음부터 하둡 및 메소스, 독립형 모드와 같은 클러스터로 분산 데이터 처리를 수행하도록 디자인됐다. 스파크는 JVM 기반 데이터 처리 프레임워크이므로 JVM 기반 애플리케이션을 지원하는 대부분의 운영 체제에서 작동한다. 스파크는 UNIX 및 Mac OS X에 설치 가능하며 윈도우즈 환경에서도 사용률이 증가하고 있다.
스파크는 프로그래밍 언어 스칼라 및 자바, 파이썬, R을 포함하는 통일된 유니폼(uniform) 프로그래밍 모델을 제공한다. 즉, 스파크 애플리케이션을 개발할 때 거의 모든 언어에서 같은 스파크 API를 제공하므로 언어 선택을 손쉽게 할 수 있다. 이러한 방식으로 조직은 스파크를 새로 사용하더라도 이미 사용하고 있는 프로그래밍 언어로 스파크 프로그램을 개발할 수 있고, 필요에 따라 스파크 애플리케이션을 한 언어에서 다른 언어로 신속하게 포팅 (porting)할 수도 있다. 스파크의 대부분은 스칼라로 개발됐다. 스파크 프로그래밍 모델은 본질적으로 함수 프로그래밍을 지원한다. 가장 기본적인 스파크 데이터 추상화는 다른 모든 라이브러리가 기반으로 만들어진 탄력 분산 데이터 세트 RDD다. RDD 기반 스파크 프로그래밍 모델은 개발자가 데이터 처리 애플리케이션을 개발할 수 있는 가장 낮은 레벨 단계다.
스파크는 더 많은 데이터 처리 유스 케이스(use case)를 처리하기 위해 빠르게 성장했다. 제품 로드맵과 관련해서 앞을 내다보는 변화가 많아지면 비즈니스 사용자를 위해 더 높은 수준의 프로그래밍을 제공해야 하므로 요구 수준이 높아진다. 데이터프레임 추상화 기능을 갖춘 스파크 SQL 라이브러리는 스파크 코어에서 동작하고 널리 사용되는 SQL에 익숙한 대부분 개발자의 요구를 만족시킬 수 있도록 개발됐다.
데이터 과학자들은 계산 작업에 R을 사용한다. R의 가장 큰 한계는 처리해야 할 데이터의 크기가 R 프로그램을 실행 중인 컴퓨터의 메인 메모리 크기보다 작아야 한다는 것이다. 스파크 R API는 데이터프레임 추상화를 바탕으로 데이터 과학자에게 분산 데이터 처리의 신세계를 소개했다. 즉, 스파크 R API를 사용하면 하둡 또는 메소스에서 데이터를 병렬로 처리할 수 있으며 호스트 컴퓨터의 메모리 한계를 훨씬 뛰어 넘어서 데이터 처리 범위를 확장할 수 있다.
데이터를 수집하는 대규모 애플리케이션이 넘쳐나는 시대에서 데이터 소화 속도는 이전과 달리 매우 빨라졌다. 많은 애플리케이션 유스 케이스는 실시간 스트리밍 데이터 처리를 요구한다. 스파크 코어로 구축한 스파크 스트리밍 라이브러리는 이러한 유스 케이스 요구에 따라 실시간으로 스트리밍 데이터를 처리한다.
사용하지 않는 데이터 또는 스트리밍 중인 데이터는 머신 러닝 알고리즘에 입력해 데이터 모델을 학습시키고 이를 활용해 비즈니스 질문에 대한 대답을 제공한다. 스파크 이전에 개발한 모든 머신 러닝 프레임워크는 데이터를 처리하는 컴퓨터의 메모리 부족 및 병렬 처리 수행 불가, 읽기-쓰기의 불필요한 반복 등 많은 한계가 있었다. 스파크는 이러한 한계가 없기 때문에 스파크 코어와 데이터프레임을 바탕으로 구축된 스파크 MLlib 머신 러닝 라이브러리는 머신 러닝 액티비티와 데이터 처리 파이프라인을 함께 처리하는 최고의 머신 러닝 라이브러리로 널리 알려지게 되었다.
그래프는 특별한 유스 케이스에서 많이 사용하는 매우 유용한 데이터 구조다. 그래프 데이터 구조에서 데이터를 처리하는 데 사용하는 알고리즘은 계산 집약적이다. 스파크 이전에도 많은 그래프 처리 프레임워크가 존재했다. 대부분 처리 속도는 빠르지만 그래프 데이터 구조를 생성하기 위한 데이터를 사전 처리하는 것이 큰 병목 현상임이 드러났다. 스파크로 구축한 스파크 GraphX 라이브러리는 데이터 처리 및 그래프 처리를 하나의 연결된 액티비티로 묶어 처리하기 위해 그 격차를 크게 줄였다.
과거에 많은 데이터 처리 프레임워크가 존재했으며 그 중 대다수가 제품을 사용하는 고객들을 벤더 종속(lock-in) 의 함정에 빠뜨리려고 했다. 이에 반해 스파크는 라이센스 비용 없이 다양한 데이터 처리 요구를 해결하기 위한 매우 실용적인 대안을 제공하는 동시에 앞서가는 기업 다수의 지원을 받아 전문적인 제품 지원을 제공한다.

지은이 소개

라자나라야난 토투바이카투마나(Rajanarayanan Thottuvaikkatumana)

줄여서 Raj는 다양한 나라의 회사에서 약 23년간 소프트웨어 개발 기술자로 일했다. 인도 및 싱가포르, 미국 등에서 일을 해왔고 현재는 영국에서 지내고 있다. 아키텍처 및 디자인, 소프트웨어 애플리케이션 개발 경력이 있으며, 유명한 데이터베이스 및 애플리케이션 개발 플랫폼, 웹 기술, 빅데이터 기술을 이용하는 일을 해왔다. 2000년 이후로는 주로 자바 관련기술을 써왔고 자바와 스칼라를 이용한 서버 프로그래밍을 해왔다. 많은 양의 트랜잭션 처리 및 분산, 동시성 처리 문제를 다뤄왔으며, 현재는 차세대 하둡 YARN을 기반으로 한 데이터 처리 플랫폼과 스칼라 기반의 아파치 스파크를 이용한 애플리케이션 스위트(suite)를 개발하고 있다. 그는 수학과 컴퓨터 정보 처리 시스템 분야에서 모두 석사 학위를 보유하고 있고 수많은 ITIL 수료증을 받았다. 클라우드 컴퓨터 관련 수업도 이수했다. 『Cassandra Design Patterns - Second Edition』(Packt, 2015)의 저자이기도 하다. 한가할 때는 클래식 음악을 듣고 테니스를 즐긴다.

옮긴이의 말

요즘 컴퓨터 세계는 빅데이터와 머신 러닝의 시대라고 해도 과언이 아니다. 이 두 가지 기술이 맞물려 창출해 내는 부가가치와 잠재력은 분야를 막론하고 상상을 초월한다. 이러한 흐름에 발맞춰 머신 러닝이나 빅데이터 처리 프레임워크에 관심을 가지는 개발자가 점점 많아지고 있다. 한국에서도 이러한 스킬을 가지고 있는 고급 개발자들이 미국의 글로벌 IT회사로 이직하는 경우를 많이 봐왔다.
이러한 큰 흐름에 따라 무언가 시도해 보고는 싶은데 어디서부터 시작할지 모르는 입문자나, 머신 러닝 자체보다는 데이터 전처리나 파이프 라인 구축에 드는 많은 시간과 노력에 지친 데이터 과학자들에게 스파크는 매우 환영 받는 프레임워크다. 맵리듀스 같은 복잡한 프로그래밍 모델을 모르더라도 간단한 스크립팅과 파이썬, 스칼라 등의 프로그래밍 언어만 알면 누구나 손쉽게 머신 러닝과 빅데이터 공부를 시작할 수 있다. 스파크가 데이터 처리 프레임워크 세계에서 차지하는 비중은 매우 크다. 스파크는 미국 버클리 대학의 리서치 프로젝트로 시작해서 지금은 전 세계에서 가장 활발한 오픈 소스 기반 데이터 처리 프로젝트가 됐다. 처음부터 대규모 데이터 처리를 염두에 두고 디자인됐기 때문에 빅데이터 처리에 매우 최적화됐고 이름처럼 속도가 빠르다. 2.0부터는 다양한 머신 러닝 라이브러리 지원을 통해 머신 러닝 데이터 처리 프레임워크로도 각광받고 있다. 이뿐만 아니라 스칼라, 자바, 파이썬, R 등 다양한 프로그래밍 언어 지원을 통해 개발자가 언어의 제약 없이 손쉽게 접근할 수 있고 포팅이 쉽다는 장점이 있다.
이 책은 단순한 데이터 처리, 스트리밍 데이터, 그래프 모델 구성, 스파크를 이용한 데이터 차트 그리기를 넘어 MLlib를 활용한 머신 러닝 예제까지, 입문자와 고급 개발자 모두가 활용 할 수 있는 다양한 예제를 제공한다. 이렇게 누구나 쉽게 스파크를 배울 수 있도록 했다. 대부분의 예제는 스칼라뿐 아니라 파이썬, R 버전으로도 제공되기 때문에 독자에게 편한 언어로 학습할 수 있다.
번역 기간 내내 여러가지 일과 병행하느라 우여곡절이 많았지만, 바람이 있다면 이 책이 한국의 개발자들이 머신 러닝과 빅데이터 세계에 뛰어드는 데 조금이나마 밑거름이 됐으면 한다. 나아가 독자들이 전세계 글로벌 IT 기업에서 나와 직접 마주치는 재미있는 순간이 오길 기대한다.

옮긴이 소개

방호남

공대 남자 엔지니어 5명이서 함께한 결혼 관련 스타트업 창업을 시작으로, 한국 과학 기술 연구원, 실리콘밸리 스타트업을 거쳐 현재 시애틀에 있는 아마존 웹 서비스(AWS) 본사 EC2 서버 엔지니어로 일하고 있다.
서버부터 웹 프론트엔드, 안드로이드, 웹앱 등 다양한 분야에서 경력을 쌓아 왔고 요즘은 대규모 분산 처리 시스템 디자인과 운용을 주로 한다. 컴퓨터 한 대로 세상을 바꾸는 일이 가능한 시대에 개발자로 일할 수 있음에 늘 감사한다. 소프트웨어 자체보다 소프트웨어가 세상에 제공할 수 있는 가치를 탐구하는 것에 더 흥미를 느끼고 있다.

목차

목차
  • 1장. 스파크 기초
    • 아파치 하둡 소개
    • 스파크 분석
    • 스파크 설치
      • 파이선 설치
      • R 설치
      • 스파크 설치
      • 개발 도구 설치
      • 추가 소프트웨어 설치
        • IPython
        • RStudio
        • 아파치 제플린
    • 참고문헌
    • 요약

  • 2장. 스파크 프로그래밍 모델
    • 스파크 함수 프로그래밍
    • 스파크 함수 프로그래밍
      • 스파크 RDD 불변성
      • 스파크 RDD 분산 용이성
      • 스파크 RDD 메모리 상주
      • 스파크 RDD의 강력한 데이터 타입 지원
    • 스파크 RDD를 이용한 데이터 변환과 액션
    • 스파크 모니터링
    • 스파크 프로그래밍 기초
      • 맵리듀스
      • 조인
      • 추가 액션
    • 파일에서 RDD 생성
      • 스파크 라이브러리 스택
    • 참고문헌
    • 요약

  • 3장. 스파크 SQL
    • 데이터 구조
    • 왜 스파크 SQL인가?
    • 스파크 SQL 해부
    • 데이터프레임 프로그래밍
      • SQL 프로그래밍
      • 데이터프레임 API 프로그래밍
    • 스파크 SQL 집계
    • 스파크 SQL을 사용한 다중 데이터 소스 연결
    • 데이터셋
    • 데이터 카탈로그
    • 참고문헌
    • 요약

  • 4장. 스파크 R 프로그래밍
    • SparkR의 필요성
    • R 언어의 기초
    • R 데이터프레임과 스파크
    • R을 이용한 스파크 데이터프레임 프로그래밍
      • SQL 프로그래밍
      • R 데이터프레임 API를 이용한 프로그래밍
    • 스파크 R을 이용한 집계
    • SparkR을 이용한 다중 데이터 소스 조인
    • 참고문헌
    • 요약

  • 5장. 파이선과 함께하는 스파크 데이터 분석
    • 차트 및 그래프 작성 라이브러리
    • 데이터셋 설정
    • 데이터 분석 유스 케이스
    • 차트와 그래프
      • 히스토그램
      • 밀도 그래프
      • 막대 차트
        • 누적 막대형 차트
      • 파이 차트
        • 도넛 차트
      • 상자 그래프
      • 수직 막대 그래프
      • 산점도
        • 강화된 산점도
      • 라인 그래프
    • 참고문헌
    • 요약

  • 6장. 스파크 스트림 처리
    • 데이터 스트림 처리
    • 마이크로 배치 데이터 처리
      • DStream 프로그래밍
    • 로그 이벤트 처리기
      • 넷캣 서버 시작
      • 파일 정리
      • 스파크 클러스터 작업 제출
      • 애플리케이션 모니터링
      • 스칼라 애플리케이션 구현
      • 애플리케이션 컴파일 및 실행
      • 출력 결과물 처리
      • 파이선 애플리케이션 실행
    • 구간 데이터 처리
      • 스칼라 애플리케이션 로그 이벤트 메시지 빈도수 세기
      • 파이선 애플리케이션 로그이벤트 메시지 빈도수 세기
    • 추가 처리 옵션
    • 카프카 스트림 처리
      • 주키퍼와 카프카 시작하기
      • 스칼라 애플리케이션 구현
      • 파이선 애플리케이션 구현
    • 실제 스파크 스트리밍 작업
      • 스파크 데이터 처리 애플리케이션 실패-내구성 구현
      • 구조 데이터 스트리밍
    • 참고문헌
    • 요약

  • 7장. 스파크 머신 러닝
    • 머신 러닝
    • 스파크가 머신 러닝에 적합한 이유
    • 와인 품질 예측
    • 모델 저장
    • 와인 분류
    • 스팸 필터링
    • 특징 알고리즘
    • 동의어 찾기
    • 참고문헌
    • 요약

  • 8장. 스파크 그래프 처리
    • 그래프와 사용 사례 이해
    • 스파크 GraphX 라이브러리
      • GraphX overview
      • 그래프 분할
      • 그래프 처리
      • 그래프 구조 처리
    • 테니스 토너먼트 분석
    • 페이지랭크 알고리즘 적용
    • 연결된 구성 요소 알고리즘
    • 그래프프레임
    • 그래프프레임 쿼리
    • 참고문헌
    • 요약

  • 9장. 스파크 애플리케이션 디자인
    • 람다 아키텍처
    • 람다 아키텍처 마이크로블로깅
      • SfbMicroBlog 오버뷰
      • 데이터 이해
      • 데이터 사전 설정
    • 람다 아키텍처 구현
      • 배치 레이어
      • 서빙 레이어
      • 스피드 레이어
        • 쿼리
    • 스파크 애플리케이션 작업
    • 코딩 스타일
    • 소스 코드 셋업
    • 데이터 소화
    • 뷰와 쿼리 생성
    • 커스텀 데이터 처리 이해
    • 참고문헌

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안