Top

SMACK 스택을 이용한 빠른 데이터 처리 시스템

  • 원서명Fast Data Processing Systems with SMACK Stack (ISBN 9781786467201)
  • 지은이라울 에스트라다(Raúl Estrada)
  • 옮긴이김용환
  • ISBN : 9791161750828
  • 30,000원
  • 2017년 12월 13일 펴냄
  • 페이퍼백 | 472쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

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

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

데이터 파이프라인 처리 아키텍처에서는 멀티 테넌시(multi-tenancy), 확장, 대용량 처리, 실시간 데이터 처리를 지원해야 한다.
따라서 외국에서는 해당 이슈를 해결할 수 있는 방법으로 하나의 오픈소스가 아닌 여러 오픈소스를 묶어(스택) 데이터 프로세싱을 처리하기 위해 다양한 시도를 하고 있다.
이런 분위기 속에서 2016년에 샌프란시스코 베이 에어리어(San Francisco Bay Area)의 데이터 엔지니어링 회의 및 컨퍼런스에서 "Spark, Mesos, Akka, Cassandra, Kafka Laying down the SMACK on your datapipelines"(링크: https://goo.gl/ny5Lwm, 발표 동영상: http://goo.gl/XVuxj8)라는 주제가 발표됐고, 이에 영향을 받아 관련 내용이 책으로 출판됐다. 이 책에서는 데이터 인메모리(in-memory) 분산 컴퓨팅 기능이 포함된 스파크(Spark), 클러스터 OS(Cluster OS), 분산 시스템 관리, 스케줄링, 확장 기능이 포함된 메소스(Mesos), 스칼라 언어의 액터 모델의 구현인 아카(Akka), 영속성 계층인 noSQL 데이터베이스인 카산드라(Cassandra), 분산 스트리밍 플랫폼(메시지 브로커)인 카프카(Kafka)를 기반으로 데이터 파이프라인 아키텍처를 구성하는 SMACK 스택을 소개한다. 개별 컴포넌트를 쉽게 설명했으며, 파이프라인 스택에 대한 아키텍처를 배우기에 적절하다.

이 책에서 다루는 내용

█ 빠른 데이터 파이프 라인 아키텍처 설계 및 구현 █ 스칼라로 프로그래밍 문제를 함수적으로 생각하고 해결하는 방법
█ JVM에서 액터 모델 구현인 아카의 사용법 학습
█ 최신 비즈니스 요구 사항을 해결하기 위해 스파크로 메모리 프로세싱 및 데이터 분석 수행
█ 메소스와 도커를 사용해 강력하고 효과적인 클러스터 인프라 구축
█ 카산드라를 통해 비정형의 No-SQL 데이터 소스 관리와 사용
█ 카프카를 사용한 방대한 양의 메시지 생산과 소비

이 책의 대상 독자

오픈소스 데이터 스택 아키텍처를 가장 성공적으로 통합하는 방법과 모든 계층에서 올바른 기술을 선택하는 방법을 찾는 소프트웨어 개발자, 데이터 설계자, 데이터 엔지니어를 대상으로 한다. 또한 이 책은 모든 경우에서의 실질적인 장점을 제공한다.
각 기술에 대해 별도로 이야기하는 책은 많다. 이 책은 대체 기술을 찾는 사람들과 전체 스택을 연결하는 방법을 실용적인 예제로 다룬다.

이 책의 구성

1장, ‘SMACK 소개’에서는 SMACK의 기본 아키텍처에 대해 설명한다. SMACK 기술과 전통적인 데이터 기술의 차이점을 살펴본다. 또한 SMACK의 모든 기술을 살펴보고 각 툴의 잠재력을 간략히 보여준다.
2장. ‘모델: 스칼라와 아카’에서는 텍스트를 스칼라(언어)와 아카(JVM의 액터 모델 구현) 두 부분으로 나눠서 쉽게 만든다. 이 책은 예제를 통해 배울 수 있는 스칼라 아카의 미니 책이다. 전반부에서는 스칼라의 기본 내용을 설명하고, 후반부에서는 아카 액터 모델에 초점을 맞추고 있다.
3장, ‘엔진: 아파치 스파크’에서는 아파치 스파크의 핵심 사항을 처음부터 살펴본다. 아파치 스파크을 다운로드, 설치, 테스트하는 방법을 설명한다. 스파크 애플리케이션을 실행하는 방법을 배울 것이다. RDD와 RDD 오퍼레이션(트랜스포메이션 및 액션)과 같은 스파크 핵심 개념을 살펴본다. 클러스터 모드에서 아파치 스파크를 실행하는 방법, 드라이버 프로그램을 실행하는 방법, 고가용성을 달성하는 방법을 다룰 것이다. 3장에서는 스파크 스트리밍, 무상태 트랜스포메이션 및 상태 유지 트랜스포메이션, 출력 오퍼레이션, 고가용성을 높이는 방법, 스파크 스트리밍의 성능을 향상하는 방법에 대해 깊이 설명할 것이다.
4장, ‘저장소: 아파치 카산드라’에서는 저장소에 대해 설명한다. SMACK 스택의 C는 월마트(Walmart), CERN, 시스코(Cisco), 페이스북(Facebook), 넷플릿스(Netflix), 트위터(Twitter)와 같은 대기업에서 사용 중인 데이터베이스, 카산드라(Cassandra)를 의미한다. 스파크는 카산드라의 능력을 많이 사용한다. 스파크 카산드라 커넥터(Spark Cassandra Connector)를 사용하면 SMACK 애플리케이션의 효율성이 크게 향상된다.
5장, ‘브로커: 아파치 카프카’에서는 카프카(Kafka)가 개발된 이유를 설명하고 카프카 설치와 여러 타입의 클러스터를 지원하는 내용을 다룬다. 또한 카프카의 설계 방식을 살펴보고 여러 기본 프로듀서와 컨슈머를 사용한다. 단일 노드에서 단일 브로커 또는 다중 브로커를 사용해 카프카 클러스터를 설정하는 방법과 커맨드라인에서 프로듀서와 컨슈머를 실행하는 방법, 메시지를 교환하는 방법을 다룰 것이다. 브로커에 대한 몇 가지 중요한 설정에 대해서도 다룬다. 마지막으로 카프카와 스파크 같은 기술과 통합하는 방법에 대해 설명한다.
6장, ‘매니저: 아파치 메소스’에서는 메소스(Mesos) 아키텍처를 살펴보고 메소스의 자원 할당 방법과 DRF 알고리즘의 생성 방법을 설명한다. 또한 AWS와 사설 데이터 센터에서 메소스를 실행하는 방법을 보여준다. 가장 중요한 메소스 프레임워크인 마라톤(Marathon), 크로노스(Chronos), 오로라(Aurora), 싱귤러리티(Singularity)뿐 아니라 프레임워크 API도 설명한다. 또한 아파치 메소스 위에 스파크, 카산드라, 카프카를 실행하는 방법과 메소스를 사용한 분산 인프라에서 해당 프레임워크를 설치, 설정, 관리와 같은 주제를 다룰 것이다.
7장, ‘사례 연구 1 - 스파크와 카산드라’에서는 스파크와 카산드라의 관계에 대해 설명한다. 또한 스파크 카산드라 커넥터(Spark Cassandra Connector)와 카산드라와 스파크 컨텍스트(Spark Context) 설정 방법, 카산드라와 스파크 스트리밍, 스트리밍 컨텍스트 생성, 카산드라에서 스트림 읽기와 쓰기, 데이터 집합, 콜렉션, 튜플을 카산드라에 저장하는 방법, 콜렉션 수정, UDT와 RDD를 테이블에 저장하는 방법을 설명한다. 칼리오페(Calliope) 설치 및 설정, 카산드라에서 CQL3로 읽고 쓰기, 카산드라를 스리프트(Thrift)로 읽고 쓰는 칼리오페 프로젝트를 다룰 것이다.
8장, ‘사례 연구 2: 커넥터’에서는 즉 SMACK 스택 기술이 서로 통신할 수 있는 소프트웨어인 커넥터를 분석한다. 스파크와 카산드라의 관계는 매우 중요해서 5장에서 자세히 설명할 것이다.
9장, ‘사례 연구 3: 메소스와 도커’에서는 메소스 프레임워크를 개발하는 방법과 메소스 컨테이너라이저와 도커 컨테이너라이저를 사용하는 방법을 설명한다. 또한 프레임워크에 사용할 수 있는 메소스 API에 대해서도 다룬다. 게다가 메소스 컨테이너라이저와 도커 컨테이너라이저를 사용하는 방법을 설명할 것이다.

저자/역자 소개

지은이의 말

이 책은 실무적인 가이드로서 SMACK 기술을 사용해 빠른 데이터 처리를 위한 효율적인 데이터 분석 시스템을 만들 수 있게 해준다.
먼저 SMACK을 소개하고 언제 사용해야 할지 설명하고, 스칼라를 사용해 기능적 사고와 문제 해결 방법을 익힌다. 이어서 아카 아키텍처를 이해하게 될 것이다.
또한, 데이터 구조 아키텍처를 개선하고 아파치 스파크를 사용한 자원을 최적화하는 방법을 알게 될 것이다.
다음으로 아파치 카산드라를 사용해 데이터베이스에서 선형 확장성을 수행하는 방법을 배우게 될 것이다. 아파치 카프카를 사용해 높은 처리량의 분산 메시징 시스템을 파악할 수 있다. 아파치 메소스를 통해 저렴하면서도 효과적인 클러스터 인프라를 구축하는 방법을 설명한다.
마지막으로 몇 가지 연구 사례를 통해 SMACK의 다양한 측면을 깊이 살펴볼 것이다. 책을 다 읽고 나면 SMACK의 모든 컴포넌트를 통합할 수 있을 것이고, SMACK 스택으로 매우 효과적이고 빠르게 데이터를 처리할 수 있을 것이다.

지은이 소개

라울 에스트라다(Raúl Estrada)

1996년부터 프로그래머로 일하기 시작해 2001년부터는 자바 개발자로 일하고 있다. 스칼라(Scala), 엘릭서(Elixir), 클로저(Clojure), 해스켈(Haskell) 같은 함수형 언어와 컴퓨터과학과 관련된 모든 주제를 아주 좋아한다. 고가용성(High Availability) 및 엔터프라이즈 소프트웨어 분야에서 12년 넘게 경력을 쌓았고 2003년부터 아키텍처 설계 및 구현을 시작했다.
전문 분야는 시스템 통합이며 주로 금융 부문과 관련된 프로젝트에 참여했다. BEA 시스템즈(BEA Systems)와 오라클(Oracle)의 엔터프라이즈 아키텍트지만, 모바일 프로그래밍 및 게임 개발도 즐긴다. 그는 자신을 아키텍트, 엔지니어, 개발자보다 프로그래머라고 생각한다.
또한 아파치 플링크(Apache Flink), 아파치 카프카(Apache Kafka), 아파치 빔(Apache Beam) 같은 데이터 파이프 라이닝 관련 오픈소스 프로젝트에 중점을 둔 샌프란시스코 베이 에어리어(SanFrancisco Bay Area)의 크로스피터(Crossfitter)기도 하다. 자유 소프트웨어의 지지자이며 새로운 기술, 프레임워크, 언어, 방법을 실험하고 있다.

옮긴이의 말

서버 개발자의 입장에서는 웹서비스든, 앱서비스든 단순히 서버를 개발하는 것만으로는 서비스가 완성되지 않는다. 서비스 개발이 완성됐다 하더라도 고객문의(CS), 시스템 모니터링 등 데브옵스 업무 등이 남아 있다. 서비스 데이터 또는 로그를 백엔드에 전달해 모니터링뿐 아니라 사용자의 활동 지표로 활용하기도 하고, 머신 러닝을 활용해 추천 친구나 추천 시스템을 개발하기도 한다.
서비스 로그를 파일로 저장한 후 파일 데이터를 옮겨 빅데이터 저장소에 해당 서비스 로그를 저장하는 아키텍처를 데이터 파이프라인(data pipeline)이라고 한다. 데이터 파이프라인 처리 아키텍처에서는 멀티 테넌시(multi-tenancy), 확장, 대용량 처리, 실시간 데이터 처리를 지원해야 한다. 또한 저장된 빅데이터 저장소를 기반으로 실시간 분석 및 대용량 처리를 하고 지표, 모니터링, 추천 시스템으로 활용해서 사용자의 재방문률을 높일 수 있는 인사이트를 얻어야 한다.
처음에는 데이터 파이프라인과 데이터 분석이 무척 낯설 수 있다. 나도 처음부터 파이프라인과 데이터 분석을 시작한 것이 아니라서 많이 낯설었지만, 회사에서 업무를 진행하면서 조금씩 알아가고 있다. 외국에서는 데이터 파이프라인과 분석을 완벽히 해결할 수 있는 방법으로 하나의 오픈소스가 아닌 여러 오픈소스를 묶어(스택) 데이터 프로세싱을 처리하기 위한 다양한 시도를 하고 있다.
이런 흐름 속에서 2016년, 샌프란시스코 베이 에어리어(San Francisco Bay Area)의 데이터 엔지니어링 회의 및 컨퍼런스에서 "Spark, Mesos, Akka, Cassandra, Kafka Laying down the SMACK on your datapipelines"(링크: https://goo.gl/ny5Lwm, 발표 동영상: http://goo.gl/XVuxj8)라는 주제가 발표됐다. 이런 발표의 영향을 받아 관련 내용이 본 도서로 출판하게 됐다. 이 책에서는 데이터 인메모리(in-memory) 분산 컴퓨팅 기능이 포함된 스파크(Spark), 클러스터 OS(Cluster OS), 분산 시스템 관리, 스케줄링, 확장 기능이 포함된 메소스(Mesos), 스칼라 언어의 액터 모델의 구현인 아카(Akka), 영속성 계층인 noSQL 데이터베이스인 카산드라(Cassandra), 분산 스트리밍 플랫폼(메시지 브로커)인 카프카(Kafka)를 기반으로 데이터 파이프라인 아키텍처를 구성하는 SMACK 스택을 소개하고 있다.
이 책은 SMACK 스택을 전혀 모르는 개발자를 위한 책이다. 개별 컴포넌트를 쉽게 설명했고, 파이프라인 스택에 대한 아키텍처를 배우기에 적절하다. 특히 마지막 3장은 사례를 통해 SMACK 스택을 기반으로 하는 아키텍처를 배울 수 있다.

옮긴이 소개

김용환

네이버, 라인(Line)을 거쳐 카카오(Kakao)에서 개발자로 일하고 있다. 현재 마흔두 살의 평범한 개발자로 다양한 도전에서 에너지를 얻으며, 개발과 실무 경험을 블로그(http://knight76.tistory.com)에 기록하고 있다. 에이콘출판사에서 출간한 『Ansible 설정 관리』(2015), 『ElasticSearch Cookbook 2/e』(2016), 『Redis 핵심정리』(2016), 『일래스틱서치 입문과 활용』(2016), 『CentOS 7 리눅스 서버 쿡북』(2016), 『하이브 핵심정리』(2017), 『일래스틱서치 고급 기능의 개념과 활용』(2017)을 번역했다.

목차

목차
  • 1장. SMACK 소개
    • 최신 데이터 처리 문제
    • 데이터 처리 파이프라인 아키텍처
      • NoETL 선언문
      • 람다 아키텍처
      • 하둡.
    • SMACK 기술
      • 아파치 스파크
      • 아카
      • 아파치 카산드라
      • 아파치 카프카
      • 아파치 메소스
    • 데이터 센터 운영 변경
      • 스케일 업부터 스케일 아웃까지
      • 오픈소스 우위
      • 데이터 저장소 다변화
      • 데이터 중력 및 데이터 지역
      • 개발자 운영 규칙
    • 데이터 전문가 프로필
      • 데이터 아키텍트
      • 데이터 엔지니어
      • 데이터 애널리스트
      • 데이터 사이언티스트
    • 나를 위한 SMACK인가
    • 요약

  • 2장. 모델: 스칼라와 아카
    • 언어: 스칼라
      • 카타 1: 컬렉션 계층구조
      • 카타 2: 올바른 컬렉션 선택
      • 카타 3: foreach 순회
      • 카타 4: for 순회
      • 카타 5: 반복자
      • 카타 6: 맵으로 변환하기
      • 카타 7: flatten
      • 카타 8: filter
      • 카타 9: 하위 시퀀스.
      • 카타 10: split
      • 카타 11: 유일한 엘리먼트 추출
      • 카타 12: 병합
      • 카타 13: 게으른 뷰
      • 카타 14: 정렬
      • 카타 15: 스트림
      • 카타 16: 배열
      • 카타 17: ArrayBuffer
      • 카타 18: 큐
      • 카타 19: 스택
      • 카타 20: 범위
    • 모델: 아카
      • 액터 모델 요약
      • 카타 21: 액터
      • 카타 22: 액터 통신
      • 카타 23: 액터 생명 주기
      • 카타 24: 액터 시작
      • 카타 25: 액터 중지카타 26: 액터 종료
      • 카타 27: 액터 시스템 셧다운
      • 카타 28: 액터 모니터링
      • 카타 29: 액터 검색.
      • 요약

  • 3장. 엔진: 아파치 스파크
    • 싱글 모드의 스파크
      • 아파치 스파크 다운로드
      • 아파치 스파크 테스트
    • 스파크 핵심 개념.
    • RDD
      • 스파크 애플리케이션 실행
      • 스파크 컨텍스트 초기화
      • 스파크 애플리케이션
      • 프로그램 실행
      • RDD 오퍼레이션
      • 영속화(캐싱)
    • 클러스터 모드의 스파크.
      • 런타임 아키텍처
      • 스탠드얼론 클러스터 매니저
    • 스파크 스트리밍
      • 스파크 스트리밍 아키텍처
      • 트랜스포메이션
      • 출력 오퍼레이션
      • 내결함성을 지닌 스파크 스트리밍
      • 스파크 스트리밍 성능
      • 윈도우 크기와 배치 크기
      • 가비지 콜렉터
    • 요약

  • 4장. 스토리지: 아파치 카산드라
    • 역사
    • NoSQL
      • NoSQL 또는 SQL?
      • 브루어의 CAP 이론172
    • 아파치 카산드라 설치..
      • 데이터 모델
      • 데이터 스토리지
      • 설치
      • 데이터스택스 옵스센터..
      • 키 스페이스 생성
    • 인증과 권한(역할)
      • 간단한 인증과 권한을 설정
    • 백업
      • 압축
    • 복구
      • 재시작 노드
      • 스키마 출력
      • 로그
      • log4j 설정
      • 로그 파일 로테이션
      • 사용자 활동 로그
      • 트랙잭션 로그
      • SQL 덤프
      • CQL..
      • DBMS 클러스터
      • DB와 DBMS의 최적화
      • 블룸 필터
      • 데이터 캐시
      • 자바 힙 조정
      • 자바 가비지 컬렉션 조정
      • 뷰, 트리거, 저장 프로시저
      • 클라이언트-서버 아키텍처
    • 스파크 카산드라 커넥터
      • 커넥터 설치
      • 커넥션 연결
      • 커넥터 사용
    • 요약

  • 5장. 브로커: 아파치 카프카
    • 카프카 소개
      • 아파치 카프카 기능
      • 빠른 데이터가 되기 위해 태어남
      • 사용 사례
    • 설치
      • 자바 설치
      • 카프카 설치
      • 카프카 임포트
    • 클러스터
      • 단일 노드 - 단일 브로커 클러스터
      • 단일 노드 - 다중 브로커 클러스터
      • 다중 노드-다중 브로커 클러스터
      • 브로커 속성
    • 아키텍처
      • 세그먼트 파일
      • 오프셋
      • 리더
      • 그룹
      • 로그 컴팩션
      • 카프카 설계
      • 메시지 압축
      • 복제
    • 프로듀서
      • 프로듀서 API
      • 스칼라 프로듀서
      • 자체 파티션을 가진 프로듀서
      • 프로듀서 설정
    • 컨슈머
      • 컨슈머 API
      • 간단한 스칼라 컨슈머
      • 멀티 스레드 스칼라 컨슈머
    • 통합
      • 아파치 스파크와 통합
    • 관리
      • 클러스터 툴
      • 서버 추가
      • 카프카 토픽 툴
      • 클러스터 미러링
    • 요약

  • 6장. 관리자: 아파치 메소스
    • 아파치 메소스 아키텍처
      • 프레임워크
      • 기존 메소스 프레임워크
      • 속성과 자원
      • 아파치 메소스 API
    • 자원 할당
      • DRF 알고리즘
      • 가중치 적용 DRF 알고리즘
      • 자원 설정
      • 자원 예약
    • AWS에서 메소스 클러스터 실행하기
      • AWS 인스턴스 타입
      • AWS에 메소스 설치
      • 메소스 다운로드
      • 메소스 구축
    • 사설 데이터 센터에서 메소스 클러스터의 실행
      • 메소스 설치
      • 메소스의 일반적인 이슈
    • 스케줄링과 매니지먼트 프레임워크
      • 마라톤
      • 크로노스
      • 크로노스와 마라톤
    • 아파치 오로라
      • 오로라 설치
    • 싱귤래리티
      • 싱귤래리티 설치
    • 아파치 메소스에서의 아파치 스파크
      • 클라이언트 모드에서 작업 제출
      • 클러스터 모드에서 작업 제출
      • 추가 설정
    • 아파치 메소스에서 아파치 카산드라 사용
      • 추가 설정
    • 아파치 메소스에서 아파치 카프카 사용
      • 카프카 로그 관리
    • 요약

  • 7장. 사례 연구 1: 스파크와 카산드라
    • 스파크 카산드라 커넥터
      • 필수 요건
      • 카산드라 준비
      • 스파크 컨텍스트 설정
      • 카산드라와 스파크 스트리밍
      • 스파크 스트리밍 설정
      • 카산드라 설정
      • 스트리밍 컨텍스트 생성
      • 스트림 생성
      • 데이터 집합을 카산드라로 저장
      • 카산드라의 객체 저장(사용자 정의 타입)
      • 카산드라 옵션을 스칼라 옵션으로 변환
      • RDD를 새로운 테이블로 저장
      • 클러스터 배포
      • 스파크 카산드라 사용 사례
    • 연구 사례: 칼리오페 프로젝트
      • 칼리오페 설치
      • CQL3
      • 스리프트
      • 칼리오페 SQL 컨텍스트 생성
      • 칼리오페 SQL 설정
    • 요약

  • 8장. 사례 연구 2: 커넥터
    • 아카와 카산드라
      • 카산드라에 저장
      • 카산드라에서 읽기
      • 카산드라에 연결
      • 검색할 트윗
      • 검색 테스트
    • 아카와 스파크
    • 카프카와 아카
    • 카프카와 카산드라
    • 요약

  • 9장. 사례 연구 3: 메소스와 도커
    • 메소스 프레임워크 API
      • 인증, 권한, 접근 제어
      • 프레임워크 인증
      • 인증 설정
      • 프레임워크 권한
      • 접근 제어 목록
    • 스파크 메소스의 실행 모드
      • 코오스 그레인드 모드
      • 파인 그레인드 모드
    • 아파치 메소스 API
      • 스케줄러 HTTP API
    • 메소스 컨테이너라이저
      • 컨테이너
    • 도커 컨테이너라이저
      • 컨테이너와 컨테이너라이저
      • 컨테이너라이저 타입
      • 컨테이너라이저 생성
      • 메소스 컨테이너라이저
      • 도커 컨테이너라이저
      • 컨테이너라이저 결합

도서 오류 신고

도서 오류 신고

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

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

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