Top

Spark로 하는 고속 빅데이터 분석과 처리 [분산 클라우드 환경의 고속 클러스터 컴퓨팅]

  • 원서명Fast Data Processing with Spark (ISBN 9781782167068)
  • 지은이홀든 카로(Holden Karau)
  • 옮긴이조효성
  • ISBN : 9788960776524
  • 15,000원
  • 2014년 12월 30일 펴냄
  • 페이퍼백 | 144쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 데이터 과학

책 소개

예제 코드
요약

이 책은 하둡의 처리속도보다 최대 100배 이상 빨라진 고속의 범용 클러스터 컴퓨팅 시스템을 제공하는 아파치 스파크(Spark)의 입문서이다. 스파크 시스템을 이용하면 SQL과 같은 데이터를 처리하는 툴 사용, 구조화된 데이터 처리, 머신 러닝, 그래프 데이터 프로세싱을 할 수 있다. 웹 개발자에게 익숙한 자바, 스칼라, 파이썬을 이용해서 로컬 환경뿐 아니라 클러스터 환경에서 고속의 데이터 분석을 할 수 있으므로 빅데이터를 학습하는 학생부터 현장에서 근무하는 엔지니어까지 좋은 지침서로 활용할 수 있다.

이 책에서 다루는 내용

■ 스파크의 인터랙티브 셸을 이용한 분산 애플리케이션의 프로토타이핑 방법

■ 스파크의 분산 대표 데이터(RDD)를 이용해서 통신할 수 있는 다양한 방법

■ 다양한 데이터 소스에서 데이터를 로드하는 방법

■ SQL과 같은 쿼리 문법을 이용해서 스파크에게 쿼리하는 방법

■ 분산 소프트웨어를 효과적으로 테스트하는 방법

■ 스파크 설치를 튜닝하는 방법

■ 클러스터에 스파크를 설치하고 환경 설정하는 방법

■ 대규모의 데이터를 효과적으로 처리하는 방법

이 책의 대상 독자

이 책은 스파크를 이용해서 분산 프로그램을 개발하는 방법을 배우고자 하는 소프트웨어 개발자를 위한 것이다. 과거에 분산 프로그래밍을 해본 경험이 꼭 필요한 것은 아니다. 단, 이 책은 개발자가 자바, 스칼라, 파이썬에 관한 배경지식이 있다고 가정한다.

이 책의 구성

1장, ‘스파크 설치와 클러스터 설정’ 다양한 머신에서 스파크를 설치하는 방법과 클러스터 설정 방법을 다룬다. 개발 환경에 적합한 로컬 단일 노드 배포부터 EC2 클러스터에 대한 셰프(Chef)가 관리하는 대규모 클러스터까지 모두 아울러 설명한다.

2장, ‘스파크 셸 사용’ 상호작용 모드에서 첫 번째로 스파크 잡을 동작시킨다. 스파크 셸은 빠르고 유용한 디버깅 도구로서, 특히 스파크를 처음 접할 때 상당히 편리하다.

3장, ‘스파크 앱 개발과 실행’ 스파크 클러스터 환경에서 프로덕션 목적에 적합한 독립적인 잡의 구성 방법을 설명한다. 스파크 셸이 빠른 프로토타입 구성에 적합한 도구일지라도 독립적인 잡의 구성이 스파크와 상호작용하는 방법의 대부분이 될 것이다.

4장, ‘스파크컨텍스트 생성’ 스파크 클러스터와 연결하는 방법을 설명한다. 스파크컨텍스트(SparkContext)는 프로그램을 위한 스파크 클러스터의 시작점이다.

5장, ‘스파크에 데이터 로딩과 저장’ RDD(Resilient Distributed DataSet)의 생성과 저장 방법을 설명한다. 스파크는 하둡 데이터 소스에서 RDD 로딩을 지원한다.

6장, ‘RDD 조작’ 스파크를 이용해 데이터를 분산환경에서 사용하는 방법을 설명한다. 흥미로운 내용이 가득한 단원이다.

7장, ‘샤크-하이브와 스파크의 연동’ 스파크가 설치된 HiveQL과 호환성이 있는 시스템인 샤크(Shark)의 설치방법과 스파크 잡을 하이브(Hive) 쿼리에 결합하는 방법을 설명한다.

8장, ‘테스팅’ 스파크 잡의 테스트 방법을 다룬다. 분산 태스크의 디버깅은 상당히 까다롭기 때문에 테스팅 과정은 매우 중요하다.

9장, ‘팁과 요령’ 스파크 태스크의 성능 향상 방법을 살펴본다.

저자/역자 소개

저자 서문

이 책은 스파크를 이용해 분산 맵리듀스(MapReduce) 스타일의 프로그램을 작성하는 방법에 대해 설명한다. 이 책은 클러스터에 잡(job)을 할당하고, 용도에 맞게 튜닝하기 위해 분산 프로그램을 효과적으로 작성하는 방법과 스파크 API 내용을 설명한다. 이 책은 다양한 환경(독립적인 하나의 머신, EC2 등)에서 스파크 클러스터를 설정하는 방법과 통신 가능한 분산 코드를 작성하기 위해 인터랙티브 셸(interactive shell)의 사용 방법을 설명한다. 인터랙티브 셸을 사용할 수 있다면, 자바, 스칼라, 파이썬을 이용해서 분산 잡을 구현하고 할당할 수 있는 방법까지 학습할 수 있다. 다음으로 인터랙티브 셸을 사용해서 빠르게 분산 프로그램의 프로토타이핑하는 방법을 살펴보고, 스파크 API를 배운다. 샤크(Shark)를 이용한 SQL과 같은 쿼리 문법을 사용하기 위해 스파크를 하이브(Hive)와 함께 사용할 수 있는 방법도 살펴보면서 RDD(Resilient Distributed Dataset)를 수정해 본다.

저자 소개

홀든 카로 (Holden Karau)

캐나다 출신의 성전환자 소프트웨어 개발자이며 현재는 샌프란시스코에 거주한다. 2009년 캐나다 워터루 대학에서 컴퓨터 과학 분야에서 수학을 전공했다. 현재 구글에서 소프트웨어 개발 엔지니어로 일하고 있다. 스칼라(Scala)를 초창기에 사용했던 포스퀘어(Foursquare)에서 근무했으며, 아마존(Amazon)에서는 검색과 분류 문제 해결 분야에서 일했다. 어릴 적에는 오픈 소스 개발에 많은 열정을 바쳤고, 그 당시의 많은 프로젝트가 슬래시닷(Slashdot) 사이트를 통해 공개되었다. 프로그래밍 외에도 불, 용접, 춤을 즐긴다. 홀든의 웹사이트(http://www.holdenkarau.com), 블로그(http://blog.holdenkarau.com)와 깃허브(https://github.com/holdenk)에 가면 그녀에 대해 좀 더 많은 것을 알 수 있다.

옮긴이의 말

스파크는 대규모 데이터 처리에 효과적인 범용 고속 엔진이다. 스파크는 하둡(Hadoop), 메소스(Mesos)와 연동하거나 독립적으로 클라우드 환경에서 동작할 수 있으며 HDFS, 카산드라(Cassandra), HBase, S3를 포함한 다양한 데이터 소스에 접근할 수 있다. 스파크는 자바, 스칼라, 파이썬 API를 지원하며 개발자는 EC2 환경에서 제품용으로 1,000개 노드까지 확장할 수 있고, 연구 목적은 최대 2,000개의 노드까지 확장할 수 있다. 자세한 자료는 https://en.wikipedia.org/wiki/Apache_Spark를 참고하자.

스파크는 오픈 소스 형태로 누구나 다운로드할 수 있으며 아파치 라이선스 2.0으로 공개되어 있으므로 라이센스 규정을 준수해야 한다. GPL 3.0 버전과 호환성을 이루지만 GPL 1.0과 GPL 2.0과는 호환성을 제공하지 않는다. 아파치 인큐베이터에 통합되기 전 버전인 0.7 이전 버전은 BSD 라이센스로 배포되었다.

기존의 빅데이터 처리 엔진과는 달리 스파크는 두 단계로 구성된 맵리듀스 패러다임을 과감히 버렸으며, 일부 애플리케이션에게 하둡 맵리듀스의 데이터 처리 속도보다 100배까지 빠른 성능을 보장하고 있다. 또한 야후, 인텔 등을 포함해서 30여 곳이 넘는 기업들이 코드 공헌(code contribution)을 지속적으로 유지하고 있어 안정성도 가히 우수하다.

빅데이터를 이용해서 의미 있는 사업을 모색하는 기업이나 개인에게 스파크는 분명 좋은 기회를 제공할 것이다.

옮긴이 소개

조효성

광운대학교 전자공학과를 졸업하고 동대학원 임베디드 소프트웨어 공학과에서 안드로이드와 블루투스를 전공했다. 현재는 오비고에서 웹 개발자로 활동하고 있는 노드에 관심이 많은 행복 개발자다. 행복한 HMI WebApp 개발팀에서 차량용 플랫폼에 올라가는 웹 앱을 개발하면서 많은 경험과 실력을 쌓고 있다. 번역 작업을 통해, 책을 읽는 모든 사람에게 꼭 도움이 되기를 바라는 마음을 늘 품고 있다. 에이콘출판사에서 출간한 『노드로 하는 웹 앱 테스트 자동화』(2013), 『익스프레스 프레임워크로 하는 노드 웹 앱 프로그래밍』(2014), 『Storm 실시간 빅데이터 분석 플랫폼』(2014), 『안드로이드 음성 인식 애플리케이션 개발』(2014)을 번역했다.

목차

목차
  • 1장 스파크 설치와 클러스터 설정
    • 싱글 머신에서 스파크 구동
    • EC2 환경에서 스파크 구동
      • EC2 환경에서 스크립트를 이용한 스파크 구동
    • 탄력적 맵리듀스에서 스파크 사용
    • Chef를 연동한 스파크 배치(opscode)
    • Mesos에서 스파크 사용
    • YARN에서 구동하는 스파크 사용
    • SSH를 통한 머신 집합 사용
    • 링크와 레퍼런스
    • 요약

  • 2장 스파크 셸 사용
    • 텍스트 파일 로딩
    • 로지스틱 회귀 분석을 위한 스파크 셸 사용
    • S3 데이터의 양단간 로딩
    • 요약

  • 3장 스파크 앱 개발과 실행
    • sbt를 이용한 스파크 프로젝트 생성
    • 메이븐을 이용한 스파크 잡 빌드
    • 기타 다른 빌드 시스템을 이용한 스파크 잡 빌드
    • 요약

  • 4장 스파크컨텍스트 생성
    • 스칼라
    • 자바
    • 공유 자바와 스칼라 API
    • 파이썬
    • 링크와 참조
    • 요약

  • 5장 스파크에 데이터 로딩과 저장
    • RDDs
    • RDD에 데이터를 로딩
    • 데이터 저장
    • 링크와 참조
    • 요약

  • 6장 RDD 조작
    • 스칼라와 자바를 이용한 RDD 조작
      • 스칼라 RDD 메소드
      • PairRDD 메소드를 결합하는 메소드
      • 그밖의 PairRDD 메소드
      • DoubleRDD 메소드
      • 일반 RDD 메소드
      • 자바 RDD 메소드
      • 스파크 자바 메소드 클래스
        • 공통 자바 RDD 메소드
      • JavaPairRDD 메소드를 조합하는 메소드
        • JavaPairRDD 메소드
    • 파이썬을 이용한 RDD 수정
      • 표준 RDD 함수
      • PairRDD 메소드
    • 링크와 참조
    • 요약

  • 7장 샤크-하이브와 스파크의 연동
    • 하이브/샤크 사용 이유
    • 샤크 설치
    • 샤크 구동
    • 데이터 로딩
    • 스파크 프로그램에서 하이브 쿼리 사용
    • 링크와 참조
    • 요약

  • 8장 테스팅
    • 자바와 스칼라로 테스트하기
      • 테스트 가능성을 위한 코드 리팩토링
      • 스파크컨텍스트의 인터렉션 테스팅
    • 파이썬을 이용한 테스팅
    • 링크와 참조
    • 요약

  • 9장 팁과 요령
    • 로그 저장 위치
    • 동시 실행 제약사항
    • 메모리 사용과 가비지 콜렉션
    • 직렬화
    • IDE 통합
    • 다른 언어로 스파크 사용
    • 보안에 대한 간단한 노트
    • 메일링 리스트
    • 링크와 참조
    • 요약

도서 오류 신고

도서 오류 신고

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

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

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