[이 책이 제시하는 핵심 내용]
이 책은 효과적으로 맵리듀스를 프로그래밍할 수 있는 6가지 디자인 패턴에 대해 다룬다. 이 책에서 제시한 패턴들을 활용하면 여러분이 직면한 문제의 90% 가량의 해법을 찾게 될 것이다. 빅 데이터 아키텍처를 모델링할 때의 일반적인 디자인 실수를 피하도록 명확하게 식별된 위험과 경고를 기반으로 설명한다.
[이 책의 특징과 장점]
하둡 1.0.3 버전에서 작성된 예제
이 책의 모든 예제는 하둡 1.0.3 버전에서 작성되었다. 맵리듀스는 요즘에 다수의 오픈 소스와 상용 시스템에서 볼 수 있는 패러다임이다. 예제를 일관성 있게 하고 따라하기 쉽게 만들기 위해서는 기준이 되는 시스템 하나를 선택해야 했다. 그래서 하둡을 선택했다. 하둡은 널리 사용되고 있는 시스템이기 때문에 타당한 선택이었다. 그렇지만 몽고DB 맵리듀스를 비롯한 다른 맵리듀스 구현체의 사용자도 여타 시스템에서 이 책의 예제를 활용할 수 있을 것이다.
스택오버플로우 데이터베이스 사용
이 책의 처음부터 끝까지 스택오버플로우 데이터베이스를 덤프한 데이터 셋을 사용한다. 스택오버플로우는 소프트웨어 개발자가 (하둡을 포함해서) 다양한 코딩 주제에 대해서 묻고 답할 수 있는 인기 웹 사이트다. 하나의 노드 위에서 사용할 수 없을 만큼 크지 않은 적당한 크기이기 때문에 이 데이터 셋을 선택했다. 또 이 데이터 셋은 사용자명과 날짜 같은 ‘구조화된’ 항목뿐만 아니라 사람이 직접 생성한 자연어 본문을 포함한다.
명확한 예제 소스 코드 제시
이 책에서 사용한 모든 예제는 해당 데이터 셋에 한정되는 코드가 무엇인지, 어떤 코드가 일반적이고 패턴의 일부인지를 명확하게 식별하기 위해 데이터 셋의 구문 분석 로직을 헬퍼 함수로 빼냈다. 여기서 사용한 XML은 꽤 간단하기 때문에 대개는 완전한 XML 구문 분석기 대신 자바 코드의 문자열 연산을 사용했다.
[어떤 독자를 위한 책인가?]
이 책은 전문가가 맵리듀스로 문제를 해결하기 위해 어떻게 생각하는지를 독자에게 알려주어 실수를 예방하는 데 목적이 있다. 그래서 중급 또는 고급 맵리듀스 개발자를 위한 책이다. 아주 초보자나 구루는 다른 책을 찾아보는 것이 좋다.
이 책은 또한 맵리듀스 패러다임에 대해 더 많은 것을 배우고자 하는 독자를 대상으로 한다. 코드 예제와 함께 맵리듀스의 기술적 측면으로 깊이 들어가고, 맵리듀스 시스템의 내부 동작에 대해 자세히 설명한다. 이는 소프트웨어 엔지니어가 맵리듀스 분석을 개발하는 데 도움이 될 것이다. 또한 패턴의 동기와 일반적인 사용 사례를 논의하는 데 꽤 많은 시간을 할애한다. 이는 하둡과 같은 시스템이 무엇을 할 수 있을지 알고 싶어하는 독자에게 흥미로운 내용이다.
모든 코드 예제가 하둡에 대해 작성되었고 많은 패턴이 하둡을 배경으로 논의되기 때문에 이 책을 최대한 활용하려면 하둡에 대한 약간의 지식을 가지고 있어야 한다.
[도서 특징]
지금까지 맵리듀스 프레임워크를 위한 디자인 패턴은 다양한 논문, 블로그, 잡지 등에 산재해 있어 공부하는 데 많은 시간과 노력이 들었지만, 이제는 이 책이 있어 그럴 필요가 없다. 실습 환경을 고려하여 하둡 기반으로 예제를 설명했지만 예제는 시스템에 구애받지 않는다.
- 요약 패턴: 데이터를 요약하고 그룹핑하여 최상위 수준의 관점을 얻는다.
- 필터링 패턴: 특정 사용자가 생성한 레코드를 찾는 것처럼 데이터의 서브셋을 찾는다.
- 데이터 조직화 패턴: 타 시스템으로 작업하기 위해 또는 맵리듀스 분석을 좀 더 쉽게 만들기 위해 데이터를 재조직화한다.
- 조인 패턴: 특별한 관계를 발견하기 위해 다른 데이터셋을 함께 분석한다.
- 메타 패턴: 여러 가지 문제를 풀거나 동일 잡으로 몇 가지 분석을 수행하기 위해 몇몇 패턴을 조합한다.
- 입출력 패턴: 데이터를 적재하거나 저장하기 위해 하둡 사용하는 방법을 커스터마이즈한다.