★ 이 책의 구성 ★
대용량 데이터를 다루려면 특화된 기술이 필요하고, 각 기술에는 트레이드오프와 해결해야 할 과제가 있다. 이 책은 공통적인 활용 사례 측면에서 데이터 문제와 성공적인 솔루션을 설명하는 내용으로 구성돼 있다. 1부, “빅데이터 시대의 방향”은 1장, “데이터를 성공적으로 다루는 네 가지 법칙"을 담고 있다. 1장에서는 왜 빅데이터가 중요하고 왜 새로운 기술들이 많은 기회만큼 갖가지 문제를 만들어내는지 설명한다. 이 책의 전반에서 다루는 “확장 가능한 애플리케이션 구축에 집중하기", “개별 사일로가 아닌 협업을 위한 툴 구축하기", “기술을 사용하기에 앞서 활용 사례 고민하기", “필요하지 않을 경우 인프라 구축하지 않기" 등과 같은 공통된 주제를 소개한다.
2부, “대용량 데이터의 수집 및 공유”에서는 대용량 데이터를 수집하고 공유하는 것과 관련된 활용 사례를 설명한다. 2장, “대용량 미가공 데이터의 호스팅과 공유”에서는 겉으로 보기에는 쉬운, 많은 양의 파일을 서비스하고 공유하는 방법을 설명한다. 올바른 데이터 포맷을 정하는 것은 매우 중요하다. 2장에서는 데이터 공유 방법에 관한 적절한 의사결정을 내리는 데 고려해야 할 사항도 다룬다. 그뿐만 아니라 대용량 데이터를 경제적으로 호스팅하는 데 필요한 인프라의 종류도 다룬다. 데이터를 한 곳에서 다른 곳으로 옮길 때 필요한 데이터 직렬화 포맷을 설명하면서 2장을 마무리한다.
3장, “대중이 생성한 데이터를 수집하기 위한 NoSQL 기반의 웹 애플리케이션 구축하기”에서는 확장 가능한 데이터베이스 기술 분야를 소개한다. 관계형 데이터베이스와 비관계형 데이터베이스의 역사를 비롯해 각 기술의 특징을 설명한다. 많이 사용하는 레디스(Redis) 데이터베이스를 소개하고, 여러 대의 장비에 설치된 레디스의 샤딩(sharding) 전략을 다룬다.
대용량 데이터 분석을 위해서는 여러 기술을 사용하고 관련된 지식을 습득해야 하며, 그로 인해 때로는 데이터를 호환되지 않는 여러 곳에 저장하기도 한다. 4장 “데이터 사일로를 다루는 전략”에서는 데이터 사일로가 존재하는 이유와 관련 문제를 극복하는 전략을 다룬다. 또한 데이터 사일로의 이점도 설명한다.
정보가 수집, 저장, 공유되면 수집된 데이터에 대한 통찰이 필요하다. 3부, “데이터에 대해 질문하기”에서는 대용량 데이터 집합에 관해 질문하기와 관련된 활용 사례와 기술을 다룬다. 대용량 데이터를 대상으로 질의하려면 분산 솔루션이 필요할 때가 많다. 5장, “하둡, 하이브, 샤크를 이용해 대용량 데이터에 대해 질문하기”에서는 계속 증가하는 데이터 집합을 대상으로 질의를 수행하는 데 필요한 유명한 확장 가능한 도구를 소개한다. 5장에서는 SQL과 비슷한 질의를 하둡에서 실행 가능한 맵리듀스 잡(job)으로 변환하는 도구인 아파치 하이브(Apache Hive)를 다룬다.
때로는 데이터를 반복해서 질의할 필요가 있다. 분석형 데이터베이스는 빠르게 데이터를 대상으로 질문하고 결과를 검색하는 데 최적화된 소프트웨어다. 6장, “구글 빅쿼리를 이용한 데이터 대시보드 구축하기"에서는 분석형 데이터베이스 활용 사례를 보여주고, 어떻게 하둡과 같은 배치 처리 도구의 보조수단으로 사용되는지 설명한다. SQL과 비슷한 문법을 사용하는 완전히 관리되는 분석형 데이터베이스인 빅쿼리를 소개한다. 6장에서는 웹 기반 대시보드의 엔진 역할을 하는 빅쿼리 API의 사용법도 설명한다.
데이터 시각화는 역사가 오래된 유서 깊은 분야다. 7장, “대용량 데이터 탐색을 위한 데이터 시각화 전략"에서는 대용량 데이터에 시각화 도구를 사용하는 것의 장점과 잠재적 위험을 소개한다. 7장에서는 데이터의 규모가 비약적으로 커질 때 발생하는 시각화 문제와 널리 사용되는 데이터 분석 기술을 이용하는 실용적인 시각화 도구를 설명한다.
확장 가능한 데이터 기술을 이용할 때의 공통적인 주제는 각 소프트웨어 도구가 각기 다른 활용 사례에 최적화돼 있다는 점이다. 그러므로 대용량 데이터를 하나의 포맷에서 다른 포맷으로 변환하는 것이 일반적인 활용 사례다. 4부, “데이터 파이프라인 구축하기”에서는 데이터 변환을 위한 파이프라인과 워크플로우를 구현하는 주제를 다룬다. 8장, “하나로 합치기: 맵리듀스 데이터 파이프라인"에서는 대용량 데이터를 처리하기 위해 하둡 맵리듀스 프레임워크를 사용하는 개념을 소개한다. 하둡 스트리밍 API와 파이썬 같은 스크립트 언어를 이용해 실용적이고 손쉽게 활용 가능한 맵리듀스 애플리케이션을 만드는 방법을 설명한다.
데이터 처리 작업이 매우 복잡할 경우 변환 작업을 자동화하는 워크플로우 도구를 사용할 필요가 있다. 9장, “피그와 캐스케이딩을 활용한 데이터 변환 워크플로우 구축"에서는 매우 복잡한 맵리듀스 작업을 표현하는 두 기술을 소개한다. 아파치 피그는 복잡하고 여러 단계에 걸친 맵리듀스 작업을 쉽게 만들어주는 워크플로우 표현 언어다. 또한 캐스케이딩(Cascading)도 소개하는데, 캐스케이딩은 하둡에서 복잡한 데이터 워크플로우 애플리케이션을 구축하는 데 유용한 자바 라이브러리다.
데이터의 규모가 매우 커지면 컴퓨터가 사람들에게 유용한 정보를 제공해주길 바랄 것이다. 기존 데이터 모델을 기반으로 유입되는 정보를 분류, 추천, 예측하기 위해 기계 학습을 활용하면 매우 유용하다. 5부, “대용량 데이터를 위한 기계 학습”에서는 10장, “머하웃을 이용한 대용량 분류기 구축하기”를 통해 기계 학습 분야를 소개한다. 또한 10장에서는 흔히 쓰이는 기계 학습 작업인 텍스트 분류에 아파치 머하웃 기계 학습 라이브러리를 이용하는 것을 시연한다.
데이터의 품질과 의미를 해석하는 것도 통계의 목표 중 하나다. 6부, “대용량 데이터를 위한 통계 분석”에서는 대용량 데이터의 통계 분석을 위한 도구와 활용 사례를 소개한다. R 프로그램은 통계 분석에 널리 사용되는 대표적인 오픈소스 언어다. 11장, “대용량 데이터를 위한 R 사용하기”에서는 R을 이용해 대용량 데이터를 효과적으로 사용하는 일반화된 활용 사례를 다룬다. 11장에서는 데이터의 규모가 가용한 시스템 메모리보다 더 커졌을 때 유용한 R 라이브러리를 다룬다. 또한 하둡과 R을 연동하는 방법도 설명한다.
R이 매우 유명하긴 하지만 데이터 분석이라는 과제를 해결하기 위해 범용 프로그래밍 언어를 사용하는 것은 장점이 있다. 12장, “파이썬과 판다스를 활용한 분석 워크플로우 구축”에서는 날로 인기를 얻고 있는 파이썬 분석 기술을 소개한다. 또한 시계열 데이터를 분석하기 위한 판다스(Pandas) 라이브러리를 비롯해 공유와 협업을 위한 스크립트 환경인 아이파이썬 노트북(iPython notebook)의 사용법도 소개한다.
데이터 관련 과제가 모두 기술과 관련된 것은 아니다. 7부, “향후 전망”에서는 데이터 분석 혁신에 직면한 기업의 불확실성을 다루기 위한 실용적인 전략을 소개한다. 13장, “언제 구축하고, 언제 구매하고, 언제 아웃소싱할 것인가?”에서는 매우 혁신적인 데이터 분석을 위한 구매결정 전략을 다룬다. 또한 오픈소스 기술을 활용해 데이터 솔루션을 직접 구축하는 방법의 장단점도 간단히 다룬다.
마지막으로 14장, “데이터 기술의 미래 트렌드”에서는 혁신을 자극하는 몇몇 요소를 비롯해 확장 가능한 데이터 기술의 현재 트렌드를 소개한다. 또한 소위 데이터 과학자(Data Scientist)라고 하는 직무의 역할과 다양한 데이터 기술의 융합을 심도 있게 다룬다.
-서문 중에서
---본문 중에서