Top

Storm 실시간 빅데이터 분석 플랫폼 [분산 환경과 머신 러닝을 이용한 데이터 처리]

  • 원서명Storm Real-time Processing Cookbook (ISBN 9781782164425)
  • 지은이퀸튼 앤더슨
  • 옮긴이조효성
  • ISBN : 9788960775794
  • 30,000원
  • 2014년 06월 30일 펴냄 (절판)
  • 페이퍼백 | 320쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

요약

아파치 스톰(Apache Storm)은 분산 환경에서 사용할 수 있는 실시간 빅데이터 분석 플랫폼이다. 분산 환경에서 카산드라(Cassandra), 카프카(Kafka) 등과 같은 다양한 데이터베이스와 연동할 수 있는 기능과 다양한 프로그램 언어로 실시간 데이터 분석 알고리즘을 적용할 수 있어 다양한 프로그램 개발자에게 빅데이터 분석의 장에 참여할 수 있도록 유도하고 있다. 아울러 스택오버플로우(stackoverflow), 소스포지(source forge), 깃허브(github), 그리고 아파치 스톰 커뮤니티를 통해 실질적인 빅데이터 분석 개발에서 마주할 수 있는 문제를 해결할 때 강력한 문제 해결 능력을 제공하고 있어 스톰을 배울 절호의 기회가 될 것이다.

이 책에서 다루는 내용

■ 개발 환경 구축과 이를 이용한 스톰 클러스터 테스트
■ 규칙 기반 데이터 프로세싱 단계를 포함한 데이터 스트림 처리
■ 분산 원격 절차 호출 구축
■ 자바, 클로저, 루비, C++를 이용한 다중 언어 스톰 토폴로지 배포
■ 카산드라와 하둡을 스톰과 연동
■ 캐스케이딩을 이용한 배치 프로세스 기반 용어 중요도 연산 알고리즘 구현
■ 예측 카운팅 모델과 분류 모델의 생성과 설치
■ 스톰을 클라우드에 지속적 통합과 설치에 대한 문제 해결

이 책의 대상 독자

실시간 프로세싱에 관심이 있거나 실시간 프로세싱 개발을 할 때 쓰는 스톰의 사용 방법을 학습하려는 개발자에게는 이상적인 책이다. 이 책은 독자가 자바 개발자라고 가정한다. 클로저, C++, 루비 등의 개발 경력이 있다면 유용하지만 필수적인 사항은 아니다. 하둡이나 유사한 기술에 대한 경력이 있으면 상당히 도움이 된다.

이 책의 구성

1장, 개발 환경 설정: 스톰을 사용할 때 필요한 로컬 개발 환경을 설정하는 과정을 설명하는데, 모든 필요한 도구 설정과 추천하는 개발 워크 플로우까지 설명한다.

2장, 로그 스트림 프로세싱: 기본 통계 대시보드와 로그 검색 기능을 모두 갖춘 로그 스트림 프로세싱 솔루션을 개발하는 과정을 독자에게 설명한다.

3장, 트라이던트를 이용한 어휘 중요도 측정: 제품 수준의 엔터프라이즈 데이터 파이프라인을 사용 가능하도록 스톰에서 동작하는 데이터 플로우 추상인 트라이던트(Trident)를 소개한다.

4장, 분산 원격 처리 호출: 분산 원격 처리 호출을 구현하는 방법을 설명한다.

5장, 다중언어 토폴로지: 다중언어(폴리글랏, Polyglot) 기술을 사용하는 방법과 기존에 존재하는 많은 기술에 새로운 기술을 접목하는 방법을 설명한다.

6장, 스톰과 하둡의 통합: 스톰과 하둡의 결합 방법을 설명해서 완벽한 람다(Lambda) 아키텍처를 생성할 수 있도록 돕는다.

7장, 실시간 머신 러닝: 하나의 주제로 머신 러닝에 대한 간단히 설명하고 스톰 기반의 실시간 프로젝트 내에서 다양한 측면에서 머신 러닝을 구현하는 기법을 설명한다.

8장, 지속적인 배포: 지속적인 배포 파이프라인을 구축하는 방법을 설명하고 스톰 클러스터를 특정 환경에 높은 신뢰도로 배포하는 기법을 설명한다.

9장, AWS를 활용한 스톰 구동: 스톰 클러스터를 아마존 컴퓨팅 클라우드에 자동 제공하는 다양한 기법을 설명한다.

저자/역자 소개

저자 서문

오픈 소스는 소프트웨어에 대해 근본적인 방향을 여러 가지 측면으로 제시하면서 소프트웨어 시야를 변화시켜 왔다. 소프트웨어 발전에 대한 기여, 위험, 그리고 소유에 대한 전체 비용이라는 측면을 두고 어떠한 상황에서도 오픈 소스 사용에 대한 찬반론을 이끌어 낼 수 있는 다양한 의견들이 존재한다. 오픈 소스는 대규모 기관 파이낸셜 서비스 제공업체에 비해 연구 기관과 같은 환경에서 좀 더 인기가 있다. 웹 서비스 제공, 컨텐트 제공, 소셜 네트워킹이라는 떠오르는 분야에서 오픈 소스는 소프트웨어의 미래를 선도하고 있다. 이는 여러 가지 측면에서 사실을 인정받고 있으며, 특히 그 이유 중 커다란 확률을 차지하는 것은 비용이다. 웹 스케일(Web scale) 규모로까지 증가해야 하는 오픈 소스 솔루션은 더 나은 성능을 바라는 욕구로 인해 '빅데이터' 솔루션으로 분류되었다. 빅데이터 솔루션은 다양한 범위의 서비스를 아우르면서 고객들에게 개인화된 경험을 제공하면서 천문학적인 수준의 가용성으로 초당 수만 리퀘스트를 처리한다.

웹 스케일의 시스템을 설계하려면 문제를 보는 시각이 달라져야 하는데, 즉 아키텍트 솔루션 개발에 대한 시야의 변화, 복잡도를 받아들여야 할 곳과 피해야 할 곳을 구분하는 방법 학습을 예로 들 수 있다. 특정 산업 분야에서는 웹 스케일로 배치 시스템(batch system)을 설계할 수 있는 수준까지 도달했다. 맵리듀스(MapReduce), 벌크 동기 병렬, 그리고 기타 컴퓨팅 패러다임 이후에 나타난 대규모 컴퓨팅 클러스터(Large-scale computing cluster) 기술은 광범위하게 구현되었고, 개발자들의 호응을 얻었다. 오픈 소스는 혁신의 물결을 이끌면서 활성화시킨 동시에, 상위 소프트웨어 벤더가 자신의 기술 스택에 하둡을 융합하는 과정에서 고군분투하도록 만들면서, 오픈 소스를 둘러싸고 벤더간 일정 수준의 치열한 경쟁에 전혀 개의치 않는 분위기를 이끈다.

그러나 고객의 욕구는 좀 더 나은 성능을 갈망하며 증가했다. 더 많은 데이터 처리, 다양한 서비스, 더 많은 가치, 좀 더 편안한 방법, 그리고 지금 당장, 그리고 상대적으로 적은 비용을 바란다. 순수 데이터의 규모가 증가함에 따라 실시간 응답 시간에 대한 요구 사항도 같이 증가한다. 차세대 컴퓨팅 플랫폼이 출현하면, 이는 어떤 데이터의 규모에서라도 실시간으로 처리되는 것에 집중한다. 따라서 많은 독특한 도전을 의미하는데, 즉 이론적이고 실질적인 도전 과제이다.

이 책은 플랫폼의 일종인 스톰 프로세서를 숙달할 수 있게 도울 것이다. 스톰 프로세서는 소셜 데이터 분석 회사인 백타입(Backtype)에서 근무하는 나단 마르즈(Nathan Marz)가 제작한 오픈 소스 형태의 실시간 컴퓨팅 플랫폼이다. 나중에 트위터가 사들였고 오픈 소스 형태로 공개했다. 스톰 프로세서는 사용자와 공헌자로 이루어진 지속적으로 발전하는 오픈 소스 커뮤티니 형태로 꾸준히 발전했고 제품 생산 분야에서 성공 스토리를 가지고 있다. 이 책의 서문을 작성할 때, 스톰 프로젝트는 GitHub에서 6000개 이상의 별이 붙었고, 3000 명의 트위터 팔로어가 있었으며, 초당 각 프로젝트 노드 당 백만 이상의 트렌잭션에서 벤치마칭을 했고, 스톰을 이용한 제품 제작을 한 80명에 달하는 레퍼런스 고객(reference customer)까지 등장했다.

이는 상당히 인상 깊은 수치이다. 더욱이, 솔루션을 고안하고 배포하는 방법에 알맞은 어떠한 언어를 사용하든 스톰 기반의 시스템을 배포하는 일은 상당히 흥미롭다라는 점을 이 책의 끝 부분에서 알게 될 것이다.

이 책은 실질적인 예제 모음을 가지고 스톰을 배울 수 있도록 구성되어 있다. 예제들은 실 세계의 유스케이스에 기반을 두고 있고, 이 책이 설명하고 있는 것처럼 다양한 개념들을 소개하고 있다. 더욱이 스톰 솔루션을 개발할 수 있도록 안내하는 스톰 기술 중에서 데브옵스(DevOps) 기술을 증진시킬 수 있고, 개발자가 만들어 내는 가치가 담긴 제품에 신뢰도를 높게 하여 배포할 수 있도록 구성되어 있다.

저자 소개

퀸튼 앤더슨(Quinton Anderson)

실시간 연산 시스템(real-time computational system)에 대한 깊은 관심과 배경 지식이 있는 소프트웨어 엔지니어다. 퀸튼의 소프트웨어 이력은 군사 방어 시스템 구축에 필요한 실시간 통신 시스템 설계와 파이낸셜 서비스와 은행 시스템 구축에 필요한 엔터프라이즈 애플리케이션 제작으로 나눌 수 있다. 퀸튼은 특정 기술이나 프로그래밍 언어에 자신을 제약하지 않고 사운드 엔지니어링(sound engineering)과 다중 언어로 처리할 수 있는 프로그램 개발(polyglot development)에 온 힘을 쏟고 있다. 오픈 소스 참여에 열정적이고, 스톰 커뮤니티에서 활발하게 활동하고 있는 멤버인 동시에 스톰 기반의 다양한 솔루션 배포를 즐겨 한다. 퀸튼의 또 다른 관심분야는 머신 러닝(machine learning) 분야 중 하나인 베이시안 신뢰 네트워크(Deep Belief network)이며, 이는 로보틱스와 관련이 있다. 컴퓨팅 이론, 범용 IT 개념, 그리고 베이시안 신뢰 네트워크에 대한 좀 더 많은 정보가 필요하다면 그의 블로그를 참조하기 바란다. 링크드인 프로파일(http://au.linkedin.com/pub/quinton-anderson/37/422/11b/)을 통해 퀸튼에 대한 정보를 찾아볼 수 있고, 깃허브 계정(https://github.com/quintona) 혹은 Bitbucket 계정을 통해 소스 코드를 찾아보거나 기존 소스에 공헌할 수 있다.

옮긴이의 말

아파치 스톰은 분산 환경에서 사용할 수 있는 실시간 컴퓨팅 시스템이다. 아파치 라이선스 정책 2.0하에 오픈 소스로 공개하고 있으므로 누구나 사용할 수 있으면서 다양한 분야에서 사용할 수 있다. 예를 들어, 실시간 데이터 분석, 온라인 머신 러닝, 지속적 연산, 분산 RPC, ETL(Extract, Transform, Load 동작으로서 데이터 웨어 하우스 구축시 데이터를 운영 시스템에서 추출하여 가공한 후 데이터 데이터 웨어하우스에 적재하는 모든 과정을 말함-위키 참조) 등을 꼽을 수 있다.

스택오버플로우(Stackoverflow)에서는 많은 개발자들이 활발하게 스톰을 이용한 개발을 진행하면서 의견 교환이 이루어지고 있다(스택오버플로우에서 storm tag로 검색할 수 있음). 예를 들어 스톰을 이용한 클러스터 구성과 성능 그리고 실제 개발에서 겪게 되는 이슈들에 대한 설명과 의견 교환이 이루어 지고 있다. 또한 깃허브(https://github.com/)에서 검색해 보면, 나단 마르즈(nathan marz)가 오픈한 소스의 기록(즉 fork와 star 개수)이 star는 8,000건이 넘어가며, fork는 1,500건을 훌쩍 넘어 있는 상태다. 또한 storm의 하위 프로젝트도 1,000건에 육박한다(2014년 6월 8일 기준). 이 수치는 이미 많은 개발자들이 스톰을 이용해서 빅데이터 분석에 합류한다는 점을 여실히 드러내고 있다.

아파치 스톰의 가장 큰 장점 중 하나는 데이터 베이스 통합이다. 예를 들어 MongoDB, RDBMS, 카산드라 등 다양한 데이터 베이스와 연동해서 스톰 볼트(즉 데이터 분석과 결과 출력에 알고리즘을 적용할 수 있는 노드) 헬퍼를 작성할 수 있다. 이는 빅데이터 분석을 위한 환경 구축과 호환성 면에서 강력한 기능이라고 할 수 있다. 또한 이 책에서 설명하는 기본적인 프로젝트 외에 좀 더 많은 프로젝트를 경험하고 싶다면 이에 대한 관련 문서도 많이 있어서 독자에게 좀 더 폭 넓은 프로젝트 경험을 선사할 수 있다(https://storm.incubator.apache.org/documentation/Home.html 참조). 빅데이터는 시대적으로 요구되는 기술 분야이면서 좀 더 나은 의사 결정을 위해 필수적인 요소로 자리 잡아가고 있다. 현재 다양한 빅데이터 분석 플랫폼이 있으나, 실시간 분산 환경에서 높은 성능과 다양한 데이터베이스와의 연동을 가질 수 있는 플랫폼은 흔치 않다. 또한 스톰을 이용하면 실시간 분석 프로세스와 배치 프로세스를 융합할 수 있으므로, 데이터 저장소의 크기 문제를 요구사항에 맞춰 적절하게 조율할 수 있다. 스톰은 이제 한국 빅데이터 개발자들에게 서서히 알려져 가고 있는 추세여서 스톰에 대한 기본서를 가지고 있는 것은 앞으로 필수적이 될 것이다.

옮긴이 소개

조효성

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

목차

목차
  • 1장 개발 환경 설정
  • 도입
  • 개발 환경 설정
  • 분산 버전 컨트롤
  • “Hello World” 토폴로지 생성
  • 머신을 프로비저닝하는 스톰 클러스터 생성
  • 스톰을 프로비저닝하는 스톰 클러스터 생성
  • 기초적인 클릭 통계 자료 수집
  • 볼트 테스트 유닛
  • 통합 테스트 구현
  • 클러스터에 테스트 실행

  • 2장 로그 스트림 프로세싱
  • 도입
  • 로그 에이전트 생성
  • 로그 스파우트 생성
  • 로그 스트림에 대한 규칙 기반 분석
  • 로그 데이터의 인덱스화와 지속성 유지
  • 로그 통계 자료의 카운팅과 지속
  • 로그 스트림 클러스터를 위한 통합 테스트 구현
  • 로그 분석 대시보드 개발

  • 3장 트라이던트를 이용한 어휘 중요도 측정
  • 도입
  • 트위터 필터를 이용한 URL 스트림 생성
  • 문서에서 클린 스트림 용어 추출하기
  • 각 용어의 상대적 중요도 계산하기

  • 4장 분산 원격 절차 호출
  • 도입
  • 요청 프로세싱을 처리하기 위한 분산 원격 절차 호출 사용
  • 트라이던트 토폴로지를 이용한 통합 테스트
  • 이동 윈도우 토폴로지 구현
  • 통합 테스트에서 시간 시뮬레이션

  • 5장 다중언어 토폴로지
  • 도입
  • Qt에서 다중 언어 프로토콜 구현
  • Qt로 SplitSentence 볼트 구현하기
  • 루비로 카운트 볼트 구현하기
  • 클로저로 어휘 카운트 토폴로지 정의하기

  • 6장 스톰과 하둡의 통합
  • 도입
  • 하둡에서 어휘 빈도수-문서 역 빈도수 구현하기
  • 스톰의 도큐먼트 유지하기
  • 일괄 처리와 실시간 데이터 뷰의 통합

  • 7장 실시간 머신 러닝
  • 도입
  • 트랜잭션 토폴로지 구현
  • R을 이용한 랜덤 포리스트 분류 모델 생성
  • 랜덤 포리스트를 이용한 트랜잭션 스트림의 동작 분류
  • R을 이용한 연관 규칙 모델 설계a
  • 추천 엔진 설계
  • 실시간 온라인 머신 러닝

  • 8장 지속적인 배포
  • 도입
  • CI 서버 설정
  • 시스템 환경 설정
  • 배포 파이프라인 정의
  • 자동화된 허가 테스트 구현

  • 9장 AWS를 활용한 스톰 구동
  • 도입
  • 파레트를 이용해서 스톰을 아마존 웹 서비스에서 배치하기
  • 가상 비공개 클라우드 설치
  • 베이그란트를 이용해서 스톰을 가상 비공개 클라우드에 배치하기

도서 오류 신고

도서 오류 신고

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

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

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