거침없이 배우는 하둡

Chuck Lam 저 / 이현남, 강택현 역

하둡은 빅 데이터 시대에 반드시 필요한 기술이다. OS로 비유하면 리눅스 커널로 표현될 정도로 분산처리 기술에서 다양한 분야에 활용되고 있다. 이 책은 하둡의 설치에서부터 활용까지 이해하기 쉽게 단계적으로 구성되어 있다. 특히 아마존 클라우드에서 하둡을 직접 구성할 수 있도록 하여, 그 활용성을 높였다. 

그뿐만 아니라 대용량의 데이터를 병렬적으로 처리하기 위한 MapReduce 프로그램의 상세한 설명과 고급수준의 언어로 대용량 데이터를 처리할 수 있는 Pig에 대해서도 다룬다. 마지막으로 하둡의 실제 비즈니스 적용 사례 연구를 살펴본다. 위와 같은 내용을 바탕으로 이 책은 하둡을 처음 접하는 사람들에게 하둡에 대한 좋은 가이드 역할을 할 것이다.


도서 상세

분야: [네트워크 & 클라우드, 시스템 운영, 프로그래밍]

출간일: 2012. 7. 17

페이지: 400

도서정가: 30,000 원

ISBN: 9788993827477

부가 정보


출판사 서평

하둡은 분산된 데이터 세트를 쿼리하기 위한MapReduce 알고리즘을 구현한 오픈 소스 프레임워크이다. 
이 정의는 애매모호할 수도 있다. map들이 무엇이고 왜 그것들이 reduce되어야 하지?
대용량 데이터 세트는 전통적인 메커니즘을 사용해 질의하고 분석하기가 매우 어렵다. 특히 쿼리가 복잡하다면 더 그렇다. 실제, MapReduce 알고리즘은 쿼리와 데이터 세트를 부분들로 나누는데, 이것이 mapping이다. 해당 쿼리의map된 컴포넌트들은 동시에 처리(또는reduced )되어 빠른 결과를 얻는다.


이 책은 독자에게 하둡을 사용하는 방법과 MapReduce 프로그램을 작성하는 방법을 알려준다.
주요 독자는 프로그래머, 아키텍트, 그리고 대용량 오프라인 데이터를 처리해야 하는 프로젝트 매니저이다.

이 책은 하둡을 클러스터에 설정하고 데이터 분석 프로그램을 작성하고자 하는 독자에게 가이드를 제공한다.
이 책은 하둡의 기본 아이디어를 소개함으로써 시작한다. 그리고 문서에 나타난 단어의 빈도수를 분석하는 몇몇 간단한 예제를 통해 MapReduce에 대한 개념을 쉽게 이해할 수 있도록 한다. 또한 하둡을 사용해 개발된 MapReduce 애플리케이션의 기본 개념과 프레임워크 컴포넌트에 대한 접근, 다양한 데이터 분석 태스크를 위한 하둡 사용과 하둡의 수많은 예제에 대해 계속해서 설명한다.

MapReduce는 개념이나 그것의 구현이 복잡하기 때문에, 하둡을 구동하기 위해 사용자는 많은 것을 배워야 하는 도전에 직면해 있다. 이 책은 하둡을 운영하는 방법 외에, MapReduce 프레임워크에서 의미있는 프로그램을 작성하는 방법을 알려줄 것이다. 이 책의 코드가 대부분 자바로 작성되었기 때문에, 독자는 기본적으로 자바에 익숙해야하고 통계 개념(예를 들어 히스토그램, 상관 관계)에 대한 지식은 고급 데이터 처리 예제를 이해하는데 도움을 줄 것이다.

저자 소개

척 램 : RollCall이라는 모바일 소셜 네트워크 분야의 신생회사를 창립했다. 이전에는 RockYou의 시니어 테크 리드(Senior Tech Lead)였으며, 수백만 명의 사용자를 다루는 데이터처리 인프라스트럭처와 소셜 애플리케이션을 개발했다.


역자 소개

이현남 : 백엔드 개발자이다. 데이터센터에서 근무했던 경험이 있으며, 현재는 LG유플러스에서 클라우드 관련 서비스를 개발하고 있다. @brian02k

강택현 : 성균관대학교 산업공학과를 졸업한 뒤, 6년간 삼성 SDS에서 시스템 개발과 운영을 담당하였다. 그 후 미국에서 Computer Science 석사과정을 마쳤으며, 현재는 Texas Tech에서 안정적인 시스템 구축을 위한 ‘Fault tolerance(self-healing) mechanism’을 연구 중이다.

PART 01 하둡 - 분산 프로그래밍 프레임워크

CHAPTER 01 하둡 소개 
1.1 왜 하둡의 실행을 다루는가?
1.2 하둡은 무엇인가?
1.3 분산시스템과 하둡의 이해 
1.4 SQL 데이터베이스와 하둡의 비교
1.5 MapReduce의 이해
1.5.1 간단한 프로그램의 확장
1.5.2 동일한 프로그램을 MapReduce를 이용해 확장
1.6 프로그램의 첫 번째 실행 - 하둡을 이용한 단어세기
1.7 하둡의 역사
1.8 요약
1.9 참고 자료

CHAPTER 02 하둡 시작하기
2.1 하둡의 구성 요소
2.1.1 NameNode
2.1.2 DataNode
2.1.3 Secondary NameNode
2.1.4 JobTracker
2.1.5 TaskTracker 
2.2 하둡 클러스터를 위한 SSH의 설정
2.2.1 일반적인 계정 정의
2.2.2 SSH 설치와 확인 
2.2.3 쌍으로 이루어진 SSH 키의 생성 
2.2.4 공개 키 배포와 로그인 테스트 
2.3 하둡의 실행 
2.3.1 Standalone(독립실행) 모드
2.3.2 Pseudo-distributed(가상분산) 모드 
2.3.3 Fully distributed(완전분산) 모드
2.4 웹 기반의 클러스터 UI 
2.5 요약 

CHAPTER 03 하둡 컴포넌트
3.1 하둡 파일 다루기
3.1.1 기본적인 파일 명령어
3.1.2 프로그램을 이용한 HDFS의 읽기와 쓰기
3.2 MapReduce 프로그램의 구조
3.2.1 하둡 데이터 타입
3.2.2 Mapper
3.2.3 Reducer
3.2.4 Partitioner - Mapper 결과를 여러 Reducer로 전달
3.2.5 Combiner - 로컬 reduce
3.2.6 미리 정의된 mapper와 reducer클래스를 이용한 단어 세기
3.3 읽기와 쓰기 
3.3.1 InputFormat
3.3.2 OutputFormat
3.4 요약


PART 02 하둡 인 액션

CHAPTER 04 MapReduce 기본프로그램 작성 
4.1 특허 데이터 가져오기 
4.1.1 특허 인용 데이터 
4.1.2 특허 기술 데이터 
4.2 MapReduce 프로그램의 기본 템플릿(견본) 작성 
4.3 카운팅하기 
4.4 변경된 하둡API 적용 
4.5 하둡 Streaming 
4.5.1 유닉스 명령어 기반의 Streaming 
4.5.2 스크립트를 이용한 Streaming 처리 
4.5.3 키/값 쌍을 이용한 Streaming 
4.5.4 Aggregate 패키지를 이용한 Streaming 
4.6 Combiners를 이용한 성능의 향상 
4.7 배운 내용 연습 
4.8 요약 
4.9 참고 자료 

CHAPTER 05 고급 MapReduce 
5.1 MapReduce job들의 사슬 엮기 
5.1.1 MapReduce job들을 순서대로 연결하기
5.1.2 복잡한 의존 관계에 있는 MapReduce job들의 사슬 연결
5.1.3 전처리와 후처리 단계를 사슬 관계로 처리하기 
5.2 다양한 자료를 활용하기 위한 데이터 조인 
5.2.1 Reduce-side 조인 
5.2.2 분산캐시(distributed cache)를 사용한 replicated 조인 
5.2.3 Semijoin(중간 형태의 조인): reduce 단계의 조인과 map 단계의 필터링
5.3 Bloom 필터의 생성 
5.3.1 Bloom 필터의 기능 
5.3.2 Bloom 필터의 실행 
5.3.3 하둡 0.20+ 버전에서의 Bloom 필터 
5.4 배운 내용 연습 
5.5 요약
5.6 참고 자료

CHAPTER 06 프로그래밍 연습 
6.1 MapReduce 프로그램의 개발 
6.1.1 Local(독립실행) 모드
6.1.2 Pseudo-distributed(가상분산) 모드
6.2 Production 클러스터의 모니터링과 디버깅
6.2.1 카운터 
6.2.2 잘못된 레코드 건너뛰기 
6.2.3 IsolationRunner를 이용한 실패한 태스크의 재실행 
6.3 성능향상을위한튜닝 
6.3.1 Combiner에서 네트워크 트래픽의 개선 
6.3.2 입력 데이터량의 감소 
6.3.3 압축의 이용
6.3.4 JVM의 재사용
6.3.5 추론적인 실행(speculative execution)을 통한 동작 
6.3.6 코드와 알고리즘의 수정
6.4 요약

CHAPTER 07 CookBook
7.1 Job 관련 파라미터를 태스크로 전달
7.2 태스크 관련 정보검색 
7.3 다수의 출력 파일들로 파티셔닝 
7.4 데이터베이스로부터 입력, 데이터베이스로의 출력
7.5 모든 출력을 정렬된 순서로 유지
7.6 요약

CHAPTER 08 하둡 관리 
8.1 실사용을 위한 파라미터 값 설정 
8.2 시스템 Health 체크
8.3 권한 설정 
8.4 쿼터 관리 
8.5 휴지통(trash) 활성화
8.6 DataNode 제거 
8.7 DataNode 등록 
8.8 NameNode 관리와 Secondary NameNode 
8.9 NameNode 장애복구 
8.10 네트워크 레이아웃과 랙 인식 디자인
8.11 다수 사용자의 job 스케줄링 
8.11.1 다수의 JobTracker 
8.11.2 Fair Scheduler 
8.12 요약

PART 03 하둡의 성장

CHAPTER 09 클라우드에서 하둡 수행
9.1 아마존 웹 서비스(AWS) 소개
9.2 AWS 설정 
9.2.1 AWS 인증 정보(credentials) 가져오기 
9.2.2 커맨드 라인 툴
9.2.3 SSH 키 쌍 준비
9.3 EC2에서 하둡설정
9.3.1 보안 파라미터 설정 
9.3.2 클러스터 타입 구성 
9.4 EC2에서 MapReduce 프로그램 수행
9.4.1 애플리케이션 코드를 하둡 클러스터로 전송
9.4.2 하둡 클러스터에 있는 데이터 접근
9.5 EC2 인스턴스 종료 및 정리 
9.6 아마존 EMR과 그 외 AWS 서비스 
9.6.1 아마존 EMR 
9.6.2 AWS Import/Export 
9.7 요약 

CHAPTER 10 Pig 프로그래밍
10.1 Pig처럼 생각하기
10.1.1 데이터 흐름 언어
10.1.2 데이터 형식
10.2 Pig 설치 
10.3 Pig 수행 
10.3.1 Grunt 셸 관리 
10.4 Grunt로부터 Pig Latin 수행 
10.5 Pig Latin
10.5.1 데이터 타입과 스키마 
10.5.2 표현(expression)과 함수(function) 
10.5.3 관계 연산자 
10.5.4 실행 최적화
10.6 사용자 정의 함수 사용 
10.6.1 사용자 정의 함수 사용
10.6.2 사용자 정의 함수 작성
10.7 스크립트 수행 
10.7.1 주석
10.7.2 파라미터 치환 
10.7.3 멀티쿼리(multiquery) 실행 
10.8 유사한 특허들을 계산하는 예제
10.9 요약 

CHAPTER 11 Hive와 하둡 지원 프로젝트들 
11.1 Hive 
11.1.1 Hive의 설치와 구성
11.1.2 쿼리 예제
11.1.3 HiveQL
11.1.4 Hive 요약
11.2 하둡과 관련된 또 다른 프로젝트 
11.2.1 HBase
11.2.2 ZooKeeper 
11.2.3 Cascading 
11.2.4 Cloudera 
11.2.5 Katta 
11.2.6 CloudBase 
11.2.7 Aster Data와 Greenplum
11.2.8 Hama와 Mahout 
11.2.9 search-hadoop.com 
11.3 요약

CHAPTER 12 사례연구
12.1 뉴욕 타임즈 보관소에 있는 천백만 개의 이미지 문서 변환
12.2 차이나 모바일에서의 데이터 마이닝 
12.3 스텀블어폰에서 최고의 웹사이트 추천
12.3.1 스텀블어폰에서 분산 처리 시작
12.3.2 HBase와 스텀블어폰 
12.3.3 스텀블어폰에서 하둡 이상의 것들 
12.4 기업용 검색을 위한 분석- IBM Project ES2 
12.4.1 ES2 구조 
12.4.2 ES2 크롤러
12.4.3 ES2 분석 
12.4.4 결론
12.4.5 참고 자료