간편결제, 신용카드 청구할인
네이버페이 1%
(네이버페이 결제 시 적립)
NH(올원페이)카드 12% (22,180원)
(3만원 이상 결제/최대 1만원 할인)
북피니언 롯데카드 30% (17,640원)
(최대할인 3만원 / 3만원 이상 결제)
하나SK 북&카드 30% (17,640원)
(최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (20,160원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (22,680원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (23,440원)
(최대할인 3만원 / 3만원 이상 결제)
Close

하이 퍼포먼스 스파크 : 클러스터 규모 확장을 위한 우수 사례와 아파치 스파크 최적화

원제 : High Performance Spark

2013년 9월 9일 이후 누적수치입니다.

판매지수 351
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

28,000원

  • 25,200 (10%할인)

    1,400P (5%적립)

배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서(11)

  • 사은품(3)

책소개

아파치 스파크의 성능 최적화를 위한 코드 작성법!

모든 것이 잘 동작할 때 아파치 스파크는 놀라운 성능을 보여주지만, 아직 기대한 만큼의 성능을 보지 못했거나 스파크를 실무에 적용할 만한 확신을 얻지 못하고 있다면 이 책은 당신을 위한 것이다. 저자들은 적은 자원을 쓰면서도 더 빠르고 더 큰 데이터를 다룰 수 있도록 아파치 스파크의 성능 최적화를 잘 보여준다.

출판사 서평

아파치 스파크의 성능 최적화를 위한 코드 작성법!

모든 것이 잘 동작할 때 아파치 스파크는 놀라운 성능을 보여주지만, 아직 기대한 만큼의 성능을 보지 못했거나 스파크를 실무에 적용할 만한 확신을 얻지 못하고 있다면 이 책은 당신을 위한 것이다. 저자들은 적은 자원을 쓰면서도 더 빠르고 더 큰 데이터를 다룰 수 있도록 아파치 스파크의 성능 최적화를 잘 보여준다. 대규모 데이터를 다루는 소프트웨어 엔지니어, 데이터 엔지니어, 개발자, 시스템 관리자에게 더할 나위 없는 이 책은 데이터 인프라 비용과 개발 시간을 줄여주는 기술을 소개한다. 스파크를 깊게 이해함과 동시에 스파크의 독보적인 성능을 어떻게 끌어내는지 배울 수 있을 것이다.

이 책의 주요 내용
- 스파크 SQL의 새로운 인터페이스 성능을 향상시키는 방법
- 코어 스파크와 스파크 SQL에서의 조인 종류 선택
- 기본 RDD 트랜스포메이션을 최대한 활용하는 방법
- 키/값 페어 패러다임에서의 성능 이슈
- 스칼라나 JVM 없이 고성능 스파크 코드를 작성하는 방법
- 제시된 성능 향상을 위해 기능과 성능을 테스트하는 방법
- 스파크 MLlib 및 스파크 ML 머신러닝 라이브러리 사용 방법
- 스파크의 스트리밍 컴포넌트와 외부 커뮤니티 패키지

목차

CHAPTER 01 고성능 처리를 위한 스파크 시작하기 1
스파크는 무엇이며 성능은 왜 중요한가? 1
이 책에서 얻을 수 있는 것은 무엇인가? 2
스파크 버전 규칙 3
왜 스칼라인가? 4
스파크 전문가가 되고 싶다면 어쨌든 약간이라도 스칼라를 알아야 한다 4
스파크의 스칼라 API는 자바 API보다 훨씬 사용하기 쉽다 5
스칼라는 파이썬보다 성능이 더 뛰어나다 5
꼭 스칼라를 써야만 하는가? 5
스칼라 배우기 6
요약 7

CHAPTER 02 스파크는 어떻게 동작하는가? 8
스파크는 빅데이터 생태계에서 어떻게 자리 잡고 있는가? 9
스파크 컴포넌트 10
스파크의 병렬 연산 모델: RDD 12
지연 평가 13
메모리 영속화와 메모리 관리 16
불변성과 RDD 인터페이스 17
RDD의 종류 19
RDD의 함수들: 트랜스포메이션 vs. 액션 20
넓은 종속성 vs. 좁은 종속성 21
스파크 잡 스케줄링 23
애플리케이션 간의 자원 할당 23
스파크 애플리케이션 23
스파크 잡의 해부 25
DAG 26
잡 27
스테이지 27
태스크 28
요약 30

CHAPTER 03 DataFrame, Dataset와 스파크 SQL 31
SparkSession(혹은 HiveContext 또는 SQLContext)으로 시작하기 33
스파크 SQL 의존성 35
스파크 의존성 관리 36
하이브 JAR 회피 37
스키마의 기초 38
DataFrame API 42
트랜스포메이션 42
다중 DataFrame 트랜스포메이션 54
전통적인 SQL 질의/하이브 데이터와 상호 연동하기 54
DataFrame과 Dataset에서의 데이터 표현 55
텅스텐 55
데이터 적재/저장 함수들 57
DataFrameWriter와 DataFrameReader 57
포맷들 58
저장 모드 68
파티션(복구 및 쓰기) 68
Dataset 69
RDD, DataFrame, 로컬 컬렉션과의 상호 운용성 70
컴파일 타임의 강력한 타입 체크 71
더욱 쉬운(RDD와 ‘유사한’) 함수형 트랜스포메이션 71
관계형 트랜스포메이션 72
여러 Dataset에 대한 관계형 트랜스포메이션 72
Dataset에서의 그룹 연산 72
사용자 정의 함수와 사용자 집계 연산 함수(UDF, UDAF) 74
질의 옵티마이저 76
논리적/물리적 계획 76
코드 생성 77
큰 규모의 질의 계획과 반복 알고리즘 77
스파크 SQL 질의 디버깅 78
JDBC/ODBC 서버 78
요약 80

CHAPTER 04 조인(SQL과 코어 스파크) 81
코어 스파크 조인 81
조인 형태 선택하기 83
실행 계획 선택하기 85
스파크 SQL 조인 88
DataFrame 조인 89
Dataset 조인 92
요약 93

CHAPTER 05 효율적인 트랜스포메이션 94
좁은 트랜스포메이션 vs. 넓은 트랜스포메이션 95
성능에 대한 고려 사항 98
장애 내구성의 고려 사항 98
coalesce의 특별한 경우 99
내 트랜스포메이션은 어떤 타입의 RDD를 반환하는가? 100
객체 생성 최소화하기 101
기존 객체 재활용하기 102
더 작은 자료 구조 사용하기 105
mapPartitions로 수행하는 반복자-반복자 트랜스포메이션 109
반복자-반복자 트랜스포메이션이란 무엇인가? 109
시간적/공간적인 이득 111
예제 111
집합 연산 114
셋업 오버헤드 줄이기 116
공유 변수 116
브로드캐스트 변수 117
어큐뮬레이터 118
RDD 재사용 123
재사용의 사례들 123
재연산이 충분히 적은 비용인지 판단하기 126
재사용의 형태: 캐시, 영속화, 체크포인트, 셔플 파일들 128
알루시오(기존의 타키온) 132
LRU 캐싱 133
혼잡한 클러스터에 대한 고려 사항 135
어큐뮬레이터와의 상호 작용 136
요약 136

CHAPTER 06 키/값 데이터로 작업하기 137
골디락스 예제 139
골디락스 버전 0: 반복적인 해법 141
PairRDDFunctions과 OrderedRDDFunctions의 사용법 143
키/값 쌍의 액션들 144
groupByKey 함수는 왜 그렇게 위험한가? 145
골디락스 버전 1: groupByKey 해결책 145
집계 연산 선택하기 149
성능 고려 사항 및 집계 연산에 대한 사전 149
다중 RDD 연산 153
공동 그룹화 153
파티셔너와 키/값 데이터 154
스파크 파티셔너 객체 사용하기 155
해시 파티셔닝 155
레인지 파티셔닝 156
사용자 파티셔닝 157
트랜스포메이션에서 파티셔닝 정보 보존하기 157
공존하는 RDD와 공동 파티셔닝된 RDD 활용하기 158
PairRDDFunctions의 매핑과 파티셔닝 함수 사전 160
OrderedRDDFunctions의 함수 사전 162
sortByKey를 사용하여 두 개의 키로 정렬하기 163
보조 정렬과 repartitionAndSortWithinPartitions 함수 164
키로 그룹화하고 값을 정렬하는 함수에 repartitionAndSortWithinPartitions 활용하기 165
두 개의 순서에 의해 정렬되지 않는 이유 168
골디락스 버전 2: 보조 정렬 169
골디락스 문제에 대한 다른 접근 172
골디락스 버전 3: 값들로 정렬하기 178
뒤처지는 작업 감지와 균형이 맞지 않는 데이터 179
다시 골디락스로 돌아와서 180
골디락스 버전 4: 각 파티션에서 고유한 값들만 남기기 181
요약 187

CHAPTER 07 스칼라를 넘어서 189
스칼라의 너머 ― JVM 안에서 191
스칼라의 너머 ― JVM 너머 195
파이스파크는 어떻게 동작하는가? 195
스파크R은 어떻게 동작하는가? 205
스파크.jl(줄리아 스파크) 207
에클레어 JS는 어떻게 동작하는가? 208
CLR에서의 스파크 ― C#과 친구들 209
스파크에서 다른 언어 호출하기 209
pipe 및 기타 도구 사용하기 209
JNI 211
JNA 214
모든 것의 아래에는 포트란이 있다 215
GPU 사용하기 216
미래 217
요약 217

CHAPTER 08 테스트와 검증 219
단위 테스트 220
일반적인 스파크 단위 테스트 220
RDD 흉내 내기 225
테스트 데이터 수집 227
대용량 데이터세트 생성 227
샘플링 228
스칼라체크로 특성 체크하기 230
RDD끼리의 차이 계산하기 231
통합 테스트 233
통합 테스트 환경 선택하기 234
성능 측정 235
성능 측정을 위한 스파크 카운터 사용 235
성능 검증을 위한 프로젝트들 236
작업 검증 237
요약 238

CHAPTER 09 스파크 MLlib과 ML 239
스파크 MLlib과 ML 중 어떤 것을 선택할 것인가? 239
MLlib으로 작업하기 240
MLlib 시작하기(import 정의하기) 241
MLlib의 특성 인코딩과 데이터 준비 242
특성 정량화와 선정 247
MLlib 모델 훈련 248
예측 249
서빙과 영속화 249
모델 평가 252
스파크 ML로 작업하기 252
스파크 ML의 구성과 import 정의 253
파이프라인 스테이지 254
파라미터 설명 255
데이터 인코딩 257
데이터 정제 259
스파크 ML의 모델 260
한 파이프라인에 모두 집어넣기 261
파이프라인 훈련 262
개별 스테이지에 접근하기 262
데이터 영속화와 스파크 ML 263
자신만의 알고리즘으로 스파크 ML 파이프라인 확장하기 266
모델과 파이프라인 영속화 및 스파크 ML로 서빙하기 274
서빙에 대한 일반적인 고려 사항 274
요약 275

CHAPTER 10 스파크 컴포넌트와 패키지 276
스파크로 스트리밍 처리하기 278
소스와 싱크 279
배치 간격 281
데이터 체크포인트 간격 282
DStream에서의 고려 사항 283
구조적 스트리밍에서의 고려 사항 284
고가용성 모드(드라이버 장애 해결 혹은 체크포인팅) 293
그래프X 294
커뮤니티 패키지와 라이브러리 사용하기 294
스파크 패키지 만들기 296
요약 297

APPENDIX A 튜닝, 디버깅, 그리고 개발자가 신경 쓰지 않는 것들 298
스파크 튜닝과 클러스터 사이징 298
스파크 세팅은 어떻게 설정하는가? 299
자신의 클러스터에 대해 적절한 정보를 파악하는 법 300
기본적인 스파크 코어 세팅: 스파크 애플리케이션에 얼마나 많은 자원이 할당되는가? 301
이그제큐터와 드라이버의 메모리 오버헤드 계산 302
스파크 드라이버의 규모 303
소수의 큰 이그제큐터 vs. 다수의 작은 이그제큐터 303
클러스터 자원 할당과 동적 할당 305
이그제큐터의 공간 할당 307
파티션 개수와 크기 312
직렬화 옵션 315
크리오 315
몇몇 추가적인 디버깅 테크닉 316

찾아보기 351

본문중에서

아파치 스파크는 일반화된 병렬 처리로 데이터를 다룰 수 있는 수단을 제공하는 오픈소스 프레임워크다. 즉, 동일한 고수준의 스파크 함수들로 크기와 구조가 다른 여러 가지 데이터에 대해 서로 다른 데이터 처리 작업을 수행할 수 있다. 스파크는 그 자체로는 데이터 저장 솔루션은 아니다. 스파크는 스파크 JVM(자바 가상 머신) 위에서 연산을 수행하는 것뿐이며 이 JVM은 스파크 애플리케이션이 실행되고 있는 동안만 지속된다. 스파크는 하나의 단일 머신 위에서 한 JVM만으로도 실행할 수 있다(로컬 모드). 물론 그보다는 분산 저장 시스템(예: HDFS, 카산드라(Cassandra), S3)과 클러스터 매니저가 함께 쓰이는 경우가 대부분이다.
(/ p.9)

데이터 조인(join)은 많은 파이프라인에서 중요한 부분이며 스파크 코어와 SQL은 본질적으로 동일한 타입의 조인을 지원한다. 조인은 매우 일상적으로 쓰이는 강력한 수단이지만 대규모의 네트워크 전송이 필요하거나 처리량의 한계를 넘어서는 데이터세트를 만들어야 하는 경우가 생기므로 특별한 고려가 필요하다.1 SQL 옵티마이저와 달리 DAG 옵티마이저는 연산 순서를 재정렬하거나 필터를 푸시다운하는 능력이 없기 때문에 코어 스파크에서는 연산 순서의 고려가 더욱 중요하다.
(/ p.81)

다른 훌륭한 분산 처리 도구들처럼, 특히 데이터를 머신에 재분배해야 하는 넓은 트랜스포메이션 같은 연산을 정의하고 병렬화하는 데에는 키/값 쌍을 쓰는 방식에 크게 의존한다. 언제든지 그룹 연산을 원하거나 머신 간의 데이터 순서를 변경하고 싶을 때 ―통계를 집계하거나 고객 데이터를 병합하는 등― 스파크의 키/값 기능은 작업을 쉽게 병렬화해 주므로 유용하다. 스파크는 자체적으로 튜플을 키/값 기반으로 RDD에 쓸 수 있도록 구성된 함수들의 클래스인 PairRDDFunctions을 제공한다. 이 PairRDDFunctions 클래스는 암묵적 변환을 통해 사용할 수 있으며1, 조인과 집계 연산에 대한 대부분의 스파크 메서드를 갖고 있다.
(/ p.137)

단위 테스트(unit test)는 복잡한 종속성을 지닌 (데이터 소스 같은) 기능을, 가끔은 가짜 의존성을 만들어서라도(mock out) 그런 데에 의존하는 작은 컴포넌트들을 테스트하는 데 중점을 맞춘다. 단위 테스트는 통합 테스트보다는 보통 훨씬 빠르게 시도하고 끝낼 수 있으며 개발 과정 중에 빈번하게 사용된다. 만약 리팩토링을 하고자 한다면 스파크랑 연관된 부분들을 특별히 고려하지 않고 코드의 많은 부분을 테스트할 수 있다. 코드의 나머지 부분들은 라이브러리들이 그 과정을 단순화해 줄 것이다.
(/ p.220)

스파크의 어큐뮬레이터를 작업 검증에 사용할 수도 있다. 어큐뮬레이터의 일반적인 사용법은 데이터를 처리할 때 잘못된 레코드의 개수를 헤아리는 것이다. 이런 어큐뮬레이터를 단순히 디버깅 용도로만 쓰는 것 이상으로 자동화된 검증 도구 세트의 한 부분을 담당하게 할 수 있다. 118페이지의 ‘어큐뮬레이터’에서 설명한 것처럼 스파크 어큐뮬레이터는 자주 (또한 예측이 힘들 정도로) 값을 중복 계산하여 업데이트할 수 있기 때문에 모든 검증 규칙을 상대적으로 작성할 필요가 있다(예: 전체 레코드 대비 잘못된 레코드의 비율).
(/ p.237)

저자소개

홀든 카로(Holden Karau) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

트랜스젠더 캐나다인이면서 IBM 스파크 기술 센터의 소프트웨어 개발 엔지니어다. 그녀는 스파크 커미터이면서 파이 스파크와 머신러닝에 많은 기여를 하고 있다. 또한, 다양한 국제 콘퍼런스에서 스파크 발표자로 활동하고 있다.

저자의 다른책

전체보기
레이첼 워렌(Rachel Warren) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 1종
판매수 16권

알파인 데이터(Alpine Data)의 소프트웨어 엔지니어이자 데이터 과학자다. 그녀는 현실 데이터 처리와 머신러닝 작업에 스파크를 사용하고 있다. 또한, 실무와 교육계 양쪽에서 분석가이자 멘토로 활동하고 있다.

생년월일 -
출생지 -
출간도서 0종
판매수 0권

한국 오라클, 세븐 네트웍스 코리아를 비롯한 여러 회사에서 DBMS 엔진 및 푸시 메시징 엔진 등을 개발했다. 그루터를 거쳐 지금은 쿠팡에서 빅데이터 관련 개발 업무를 하고 있다. 아파치 타조(http://tajo.apache.org) 커미터로도 활동 중이다. 옮긴 책으로는 [도커: 설치부터 운영까지], [러닝 스파크]가 있다.

역자의 다른책

전체보기

이 상품의 시리즈

I♥Cloud 제이펍의 클라우드(아이러브클라우드)시리즈(총 15권 / 현재구매 가능도서 12권)

펼쳐보기

리뷰

0.0 (총 0건)

기대평

작성시 유의사항

평점
0/200자
등록하기

기대평

10.0

교환/환불

교환/환불 방법

‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

교환/환불 가능 기간

고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

교환/환불 비용

고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

교환/환불 불가사유

반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

소비자 피해보상

소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

기타

도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

배송안내

  • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

  • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

  • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

  • 배송비

도서(중고도서 포함) 구매

2,000원 (1만원이상 구매 시 무료배송)

음반/DVD/잡지/만화 구매

2,000원 (2만원이상 구매 시 무료배송)

도서와 음반/DVD/잡지/만화/
중고직배송상품을 함께 구매

2,000원 (1만원이상 구매 시 무료배송)

업체직접배송상품 구매

업체별 상이한 배송비 적용