아파치 Storm을 이용한 분산 실시간 빅데이터 처리
- 원서명Storm Blueprints: Patterns for Distributed Real-time (ISBN 9781782168294)
- 지은이테일러 게츠(P. Taylor Goetz), 브라이언 오닐(Brian O’Neill)
- 옮긴이이종희
- ISBN : 9788960776715
- 30,000원
- 2015년 02월 17일 펴냄 (절판)
- 페이퍼백 | 380쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 오픈소스 프로그래밍
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
이 책은 광범위한 분산 연산 주제에 대해 다루고 설계와 통합 패턴뿐만 아니라 이 기술을 유용하게 바로 적용할 수 있는 분야와 애플리케이션을 다룬다. 또한 간단한 스톰(Storm) 토폴로지부터 실전에서 사용하는 스톰까지 알려준다. 점점 더 복잡해지는 예제를 이용해 고급 스톰 개념을 설명할 뿐만 아니라 배포와 운영에 대한 고급 기술도 다룬다.
이 책에서 다루는 내용
■ 스톰의 기초
■ 수도(pseudo) 분산 모드와 분산 모드 스톰 설치 및 설정
■ 트라이덴트와 분산 상태의 기초 개념
■ 분산 시스템의 디자인 패턴과 데이터 플로우
■ 타이탄(Titan) 등의 저장 기술과 스톰을 통합하는 방법
■ 얀(YARN)에 스톰을 배포하고 실행하는 방법
■ 분산 저장소를 이용해 지속적인 가용성과 장애 극복할 있는 시스템 구축
■ 중앙 집중된 로깅과 처리 방법
■ 폴리그랏(polyglot) 저장과 분산 트랜잭션 구현
■ 클릭스루(click-through) 분석을 통한 광고 캠페인 효과 계산
이 책의 대상 독자
이 책은 스톰에서 자바로 개발하는 방법에 대한 것이지만 운영자, 아키텍트, 개발자를 대상으로 쓰여졌다. 또한 하둡(Hadoop) 전문가들을 위한 훌륭한 스톰 소개서이며 배치 처리를 실시간 분석으로 바꾸는 방법을 기술한 훌륭한 가이드다.
이 책의 구성
1장, ‘분산 단어 세기’ 스톰을 이용한 분산 스트림 처리의 핵심 개념을 소개한다. 분산 단어 세기 예제는 훨씬 복잡한 연산에서 필요한 많은 구조, 기술, 패턴을 보여준다. 이 장에서는 스톰 연산의 구조 및 기초 개념을 배울 것이다. 개발 환경을 구축하고 스톰 애플리케이션을 디버깅하고 개발할 때 필요한 기술을 설명한다.
2장, ‘스톰 클러스터 설정’ 스톰의 기술 기반에 대해 자세히 알아보며, 스톰 클러스터를 설치하고 배포하는 과정에 대해 설명한다. 또한, 퍼펫(Puppet)이라는 프로비저닝 툴을 이용해 다중 노드(multi node)로 구성된 스톰 클러스터의 설치 및 설정을 자동화하는 방법에 대해서도 다룬다.
3장, ‘트라이덴트 토폴로지와 센서 데이터’ 트라이덴트 토폴로지에 대해 다룬다. 트라이덴트는 스톰 위에 구현된 고수준 추상화 구현체이다. 트라이덴트는 복잡한 트랜잭션 처리와 상태 관리를 숨겨준다. 이 장은 질병 발생을 탐지하기 위해 트라이덴트를 적용해 센서 데이터를 처리, 집계, 필터링해본다.
4장, ‘실시간 트렌드 분석’ 스톰과 트라이덴트를 이용한 트렌드 분석 기술을 소개한다. 여기서 말하는 실시간 트렌드 분석이란 데이터 스트림에서 패턴을 인지하는 것을 말한다. 이 장은 이동 평균(moving average)을 계산하기 위해 스톰을 아파치 카프카(Kafka)와 통합해 슬라이딩 윈도우(sliding window)를 구현한다.
5장, ‘실시간 그래프 분석’ 그래프 데이터베이스에 데이터를 저장한 다음 스톰을 이용해서 데이터를 조회해 관계(relationship)를 찾아내는 그래프 분석을 구현해본다. 그래프 데이터베이스는 데이터를 꼭지점(vertex), 변(edge), 속성(property)으로 구성된 그래프 구조로 저장하는 데이터베이스다. 그리고 엔티티(entity) 간의 관계에 대해 주로 집중한다. 또한, 스톰과 유명한 그래프 데이터베이스인 타이탄(Titan)을 통합하여 트위터 데이터를 분석하는 방법도 알아본다.
6장, ‘인공지능’ 일반적으로 재귀를 이용해 구현되는 인공지능 알고리즘에 스톰을 적용한다. 스톰의 한계점에 대해 알아보고 이러한 한계를 극복하는 패턴에 대해 설명한다. 또한 분산 원격 프로시저 콜(DRPC)을 이용해 틱택토(tic-tac-toe)의 가장 좋은 다음 수(move)를 동기적으로 반환하는 스톰 토폴로지를 구현한다.
7장, ‘드루이드와 스톰을 이용한 금융 분석’ 스톰과 비트랜잭션(non-transactional) 시스템을 통합할 때 생기는 복잡성에 대해 설명한다. 분산 상태를 관리해 주는 주키퍼(ZooKeeper)를 활용해 통합하는 패턴을 보여준다. 이 장은 스톰과 오픈소스 탐구 분석(exploratory analytics) 툴인 드루이드를 통합하여 금융 이벤트를 분석하는 설정을 할 수 있는 실시간 시스템을 만들어 본다.
8장, ‘자연어 처리’ 람다 아키텍처(Lambda architecture)를 소개한다. 람다 아키텍처는 실시간 기술과 배치 기술을 조합해 오염된 분석 데이터를 자동 복구할 수 있는 아키텍처다 이 장에서는 드루이드와 스톰을 이용한 금융 분석에서 만든 시스템에 하둡 인프라를 추가하고 맵리듀스 잡을 이용해 호스트 장애로 오염되거나 잃어버린 드루이드 분석 결과를 다시 복구한다.
9장, ‘스톰 온 하둡으로 광고 분석’ 하둡에서 동작하는 피그 스크립트로 된 배치 프로세스를 실시간 스톰 토폴로지로 바꾸는 것을 보여준다. 이를 하기 위해 스톰얀(Storm-YARN)이 필요한데, 스톰얀은 얀에 스톰 클러스터를 배포하고 실행할 수 있게 해준다. 하둡 위에 스톰을 실행하면 기업이 동일한 인프라에서 실시간 처리와 배치 처리를 동시에 할 수 있게 하여 통합된 운영환경을 제공한다.
10장, ‘클라우드에서 스톰 실행’ 스톰을 클라우드 호스팅 서비스에 배포하고 실행시키는 가장 좋은 방법들을 소개한다. 특히 아마존 웹 서비스(AWS) 일래스틱 컴퓨트 클라우드(EC2)에 프로비저닝된 인프라 위에 스톰과 스톰의 지원 기술을 배포하고 설정하기 위해 클라우드 서비스를 위한 라이브러리 집합인 아파치 훠(Whirr)를 활용한다. 게다가 베이그란트(Vagrant)를 이용해 개발과 테스트 용도인 클러스터 환경을 생성할 것이다.
목차
목차
- 1장 분산 단어 세기
- 스톰의 기본 구성 요소: 토폴로지, 스트림, 스파우트, 볼트
- 스트림
- 스파우트
- 볼트
- 단어 세기 토폴로지의 데이터 흐름
- 문장 생성 스파우트
- 문장 나누기 볼트
- 단어 세기 볼트
- 결과 출력 볼트
- 문장 생성 스파우트
- 단어 세기 토폴로지 구현
- 개발 환경 구축
- 문장 생성 스파우트 구현
- 문장 나누기 볼트 구현
- 단어 세기 볼트 구현
- 결과 출력 볼트 구현
- 단어 세기 토폴로지 구현
- 스톰의 병렬성
- WordCountTopology의 병렬성
- 토폴로지에 워커 추가
- 익스큐터와 태스크 수 설정
- WordCountTopology의 병렬성
- 스트림 그룹핑
- 처리 보장
- 스파우트의 신뢰성
- 볼트의 신뢰성
- 신뢰성 있는 단어 세기
- 정리
- 스톰의 기본 구성 요소: 토폴로지, 스트림, 스파우트, 볼트
- 2장 스톰 클러스터 설정
- 스톰의 구조
- 님버스 데몬
- 수퍼바이저 데몬
- 아파치 주키퍼
- 스톰의 DRPC 서버
- 스톰 UI
- 스톰의 기반 기술
- 자바와 클로저
- 파이썬
- 리눅스에 스톰 설치
- 운영체제 설치
- 자바 설치
- 주키퍼 설치
- 스톰 설치
- 스톰 데몬 실행
- 스톰 설정
- 필수 설정
- 선택 설정
- 스톰 실행 파일
- 워크스테이션에 스톰 실행 파일 설치
- 데몬 명령어
- 님버스
- 수퍼바이저
- UI
- DRPC
- 관리 명령어
- Jar
- Kill
- Deactivate
- Activate
- Rebalance
- Remoteconfvalue
- 로컬 디버그/개발 명령어
- REPL
- Classpath
- Localconfvalue
- 스톰 클러스터에 토폴로지 제출
- 클러스터 설정 자동화
- 퍼펫 간략히 살펴보기
- 퍼펫 매니페스트
- 퍼펫 클래스와 모듈
- 퍼펫 템플릿
- 퍼펫 히에라를 이용한 환경 관리
- 히에라 소개
- 정리
- 스톰의 구조
- 3장 트라이덴트 토폴로지와 센서 데이터
- 예제 설명
- 트라이덴트 토폴로지
- 트라이덴트 스파우트
- 트라이덴트 연산: 필터와 함수
- 트라이덴트 필터
- 트라이덴트 함수
- 트라이덴트 집계 - 컴바이너와 리듀서
- CombinerAggregator
- ReducerAggregator
- Aggregator
- 트라이덴트 상태
- 반복 트랜잭션 상태
- 오파큐 상태
- 토폴로지 실행
- 정리
- 4장 실시간 트렌드 분석
- 사용 예
- 아키텍처
- 로그 수집 대상 애플리케이션
- logback 카프카 어펜더
- 아파치 카프카
- 카프카 스파우트
- XMPP 서버
- 필수 소프트웨어 설치
- 카프카 설치
- 오픈파이어 설치
- 샘플 애플리케이션 소개
- 카프카로 메시지 보내기
- 로그 분석 토폴로지 소개
- 카프카 스파우트
- JSON 프로젝트 함수
- 이동 평균 계산하기
- 슬라이딩 윈도우 추가
- 이동 평균 함수 구현
- 한계값 기준으로 필터링
- XMPP를 이용해 알림 보내기
- 토폴로지 완성
- 로그 분석 토폴로지 실행
- 정리
- 5장 실시간 그래프 분석
- 사용 예
- 아키텍처
- 트위터 클라이언트
- 카프카 스파우트
- 타이탄 분산 그래프 데이터베이스
- 그래프 데이터베이스 간략 소개
- 그래프 접근: TinkerPop의 구성요소
- 블루프린트 API를 이용해 그래프 조작
- 그렘린 셸을 이용해 그래프 조작
- 소프트웨어 설치
- 타이탄 설치
- 타이탄의 백엔드 스토리지를 카산드라로 설정
- 카산드라 설치
- 백엔드 스토리지가 카산드라인 타이탄 실행하기
- 그래프 데이터 모델
- 트위터 스트림 연결하기
- Twitter4J 클라이언트 설정
- OAuth 설정
- TwitterStreamConsumer 클래스
- TwitterStatusListener 클래스
- 트위터 그래프 토폴로지
- JSONProjectFunction 클래스
- GraphState 구현
- GraphFactory
- GraphTupleProcessor
- GraphStateFactory
- GraphState
- GraphUpdater
- GraphFactory 구현
- GraphTupleProcessor 구현
- 모두 합치기: TwitterGraphTopology 클래스
- TwitterGraphTopology 클래스
- 그렘린으로 그래프 질의
- 정리
- 6장 인공지능
- 사용 예 설계
- 아키텍처
- 설계 도전 해결
- 재귀 구현
- 함수의 반환값에 접근
- 불변 튜플 필드 값
- Upfront 필드 선언
- 재귀에서 튜플 확인 메시지 받기
- 다수의 스트림 출력
- 쓰기 전 읽기
- 문제점 해결
- 아키텍처 구현
- 데이터 모델
- 재귀 토폴로지 살펴보기
- 큐와의 연동
- 함수와 필터
- 점수 계산 토폴로지 살펴보기
- 쓰기 전 읽기 문제 해결
- 게임 트리 순환
- 분산 원격 프로시저 콜(DRPC)
- 원격 배포
- 정리
- 7장 드루이드와 스톰을 이용한 금융 분석
- 사용 예
- 비트랜잭션 시스템과 통합
- 토폴로지
- 스파우트
- 필터
- 상태 설계
- 아키텍처 구현
- DruidState
- StormFirehose 객체 구현
- 주키퍼에 파티션 상태 구현
- 구현체 실행
- 분석
- 정리
- 8장 자연어 처리
- 람다 아키텍처가 나온 배경
- 사용 예 설명
- 람다 아키텍처 실현
- 사용 예를 위한 토폴로지 설계
- 설계 구현
- TwitterSpout/TweetEmitter
- 함수
- TweetSplitterFunction
- WordFrequencyFunction
- PersistenceFunction
- 분석 살펴보기
- 배치 처리/과거 이력 분석
- 하둡
- 맵리듀스 개요
- 드루이드 설정
- HadoopDruidIndexer
- 정리
- 9장 스톰 온 하둡으로 광고 분석
- 사용 예
- 아키텍처 구축
- HDFS
- 얀
- 인프라 설치
- 하둡 인프라
- HDFS 설치
- 네임 노드 설치
- 데이터 노드 설치
- 얀 설치
- 노드관리자 설치
- 분석 배포
- 피그 인프라로 배치 분석
- 스톰 얀 인프라로 실시간 분석
- 분석
- 배치 분석
- 실시간 분석
- 토폴로지 배포
- 토폴로지 실행
- 정리
- 10장 클라우드에서 스톰 실행
- 아마존 일래스틱 컴퓨팅 소개
- AWS 계정 생성
- AWS 관리 콘솔
- SSH 키 쌍 생성
- EC2 인스턴스 수동으로 띄우기
- EC2 인스턴스에 로그인
- 아파치 훠 소개
- 훠 설치
- 훠를 이용해 스톰 클러스터 설치
- 클러스터 띄우기
- 훠 스톰 소개
- 훠 스톰 설치
- 클러스터 설정
- 스톰 설정 커스터마이징
- 방화벽 규칙 커스터마이징
- 훠 스톰 설치
- 베이그란트 소개
- 베이그란트 설치
- 첫 번째 가상 머신 띄우기
- Vagrantfile과 공유 파일 시스템
- 베이그란트 프로비저닝
- 베이그란트로 복수 머신 클러스터 설정
- 스톰 프로비저닝 스크립트 제작
- 주키퍼
- 스톰
- 수퍼바이저디
- 스톰 vagrantfile
- 스톰 클러스터 띄우기
- 정리
- 아마존 일래스틱 컴퓨팅 소개
도서 오류 신고
정오표
정오표
2015. 4. 7 수정사항
이 책의 4,5장 예제 코드는 제공하지 않습니다.
2016. 4. 28 수정사항
[p.79: 8행]
님서브 데몬을 실행한다.
->
님버스 데몬을 실행한다.