• 시작하세요! 하둡 프로그래밍
  • 빅데이터 분석을 위한 하둡 기초부터 YARN까지

  • 정재화 지음

  • 오픈소스 & 웹 시리즈_066, 데이터 & 데이터베이스 시리즈 _ 009
  • ISBN: 9788998139759
  • 40,000원 | 2014년 12월 31일 발행 | 692쪽



하둡으로 대용량 데이터를 처리하려는 자바 개발자를 위한 실무형 입문서!

빅 데이터의 핵심 플랫폼인 하둡은 구글의 논문을 바탕으로 더그 커팅이 개발한 대규모 데이터의 분산 처리를 위한 오픈소스 프레임워크로서, 초기에는 검색 엔진에서 사용하기 위한 기술로 개발됐지만 지금은 전자 상거래, 포털, 게임, 학술 자료, 의료 정보 등 다양한 분야에서 사용되고 있다. 이 책은 하둡을 처음 시작하거나 이미 하둡을 사용해본 적이 있는 개발자를 대상으로 하며, 하둡의 기본 원리부터 실무 응용까지 초보자의 입장을 배려해서 친절하고 상세하게 설명한다.

★ 이 책에서 다루는 내용 ★

  • 리눅스, 아마존 웹 서비스(AWS) 환경에서의 하둡 설치
  • HDFS와 맵리듀스의 구조 및 활용
  • 맵리듀스 튜닝, 하둡 클러스터 운영
  • 하둡 스트리밍, 스케줄러 관리, MR유닛
  • 하둡2의 구조 및 활용
  • YARN의 아키텍처 및 클러스터 운영
  • 하둡 에코시스템: 하이브, 스쿱, 타조
  • 네이버 및 아프리카TV의 하둡 적용 사례, 타조 기반 코호트 분석

 

<추천사>

"엔터프라이즈 진영에 들어선 하둡과 관련된 최근의 다양한 기술과 기능까지 업그레이드하여 소개함으로써 관련 개발자들에게 더욱 필요한 필독서가 되리라 믿어 의심치 않습니다."

-- 그루터 권영길 대표이사

"Hadoop2 와 SQL on Hadoop에 대한 전반적인 내용을 빠르게 이해하고자 하는 분들에게도 크게 도움이 될 것이다."

-- 줌인터넷 김우승 연구소장

"나 스스로도 이 책을 통해서 빅데이터 플랫폼들의 변화를 배운다."

-- 월간 마이크로소프트웨어 도안구 편집장

이 책은 하둡의 설치부터 핵심 구성 요소인 HDFS와 맵리듀스의 동작 원리, 그리고 다양한 실용적인 예제를 포함하고 있어 하둡 프로그래밍을 손쉽게 시작할 수 있다. 그리고 하둡 클러스터를 운영하는 데 필수적인 관리 방법과 하둡 스트리밍, 스케줄러와 같은 부가 기능의 활용법 등이 담겨 있다. 또한 2013년 10월에 공식 릴리스된 하둡2의 구조와 하둡2의 핵심 컴포넌트인 YARN의 동작 원리와 적용 방법에 대해서도 상세히 설명한다.

리눅스 서버 구성이 어려운 독자를 위해 아마존 웹 서비스(AWS)에서 하둡을 설치하는 방법까지 소개하고 있으며, 기존 데이터 분석가들도 손쉽게 하둡에 저장된 데이터를 활용할 수 있게 하이브, 스쿱, 타조의 활용법도 다룬다. 마지막으로 하둡을 실제 서비스에 도입하려는 독자에게 통찰력을 주고자 다양한 하둡 적용 사례를 소개한다.

이 책은 초판에 비해 HDFS와 맵리듀스에 대한 상세한 설명이 추가됐으며, 맵리듀스 애플리케이션 예제가 모두 업데이트됐다. 그리고 맵리듀스 튜닝과 하둡 클러스터 운영을 위한 노하우도 보강됐다.

정재화

지난 10여년 동안 SI, 대용량 분석 인프라, 웹 퍼블리싱 등 다양한 프로젝트를 경험해왔다. 지금은 빅데이터 플랫폼 전문 기업인 그루터에서 근무하며, 아파치 오픈 소스 프로젝트인 타조(Tajo)의 PMC 멤버이자, 풀타임 커미터로 활동하고 있다. 글쓰는 것을 좋아해서 하둡 기술을 공유하는 블로그(http://blrunner.com)을 운영하고 있다.

  • [1부] 하둡 기초
    • ▣ 01장: 하둡 살펴보기
      • 1.1 빅데이터의 시대
      • 1.2 하둡이란?
      • 1.3 하둡 에코시스템
      • 1.4 하둡에 대한 오해
      • 1.5 하둡의 과제
      • 1.6 하둡 배포판 살펴보기
      •  
    • ▣ 02장: 하둡 개발준비
      • 2.1 실행 모드 결정
      • 2.2 리눅스 서버 준비
      • 2.3 하둡 다운로드
      • 2.4 하둡 실행 계정 생성
      • 2.5 호스트 파일 수정하기
      • 2.6 인코딩 방식 설정
      • 2.7 자바 설치
      • 2.8 SSH 설정
      • 2.9 하둡 압축 파일 풀기
      • 2.10 하둡 환경설정 파일 수정
      • 2.11 하둡 실행
      • 2.12 예제 실행하기
      •  
    • ▣ 03장: 하둡 분산 파일 시스템
      • 3.1 HDFS 기초
      • 3.2 HDFS 아키텍처
      • 3.3 HDFS 명령어 사용하기
      • 3.4 클러스터 웹 인터페이스
      • 3.5 HDFS 입출력 예제
      •  
    • ▣ 04장: 맵리듀스 시작하기
      • 4.1 맵리듀스의 개념
      • 4.2 맵리듀스 아키텍처
      • 4.3 WordCount 만들기
      •  
  • [2부] 맵리듀스 애플리케이션 개발
    • ▣ 05장: 맵리듀스 기초 다지기
      • 5.1 맵리듀스 잡의 실행 단계
      • 5.2 분석용 데이터 준비
      • 5.3 항공 출발 지연 데이터 분석
      • 5.4 항공 도착 지연 데이터 분석
      • 5.6 카운터 사용
      • 5.7 다수의 파일 출력
      • 5.8 체인(Chain)
      •  
    • ▣ 06장: 정렬 구현하기
      • 6.1 보조 정렬
      • 6.2 부분 정렬(Partial Sort)
      • 6.3 전체 정렬(Total Sort)
      •  
    • ▣ 07장: 조인 구현하기
      • 7.1 조인 데이터 준비
      • 7.2 맵-사이드 조인
      • 7.3 리듀스-사이드 조인
      •  
  • [3부] 하둡 운영 및 활용
    • ▣ 08장: 맵리듀스 튜닝하기
      • 8.1 셔플 튜닝
      • 8.2 콤바이너 클래스 적용
      • 8.3 맵 출력 데이터 압축
      • 8.4 DFS 블록 크기 수정
      • 8.5 JVM 재사용
      • 8.6 투기적인 잡 실행
      • 8.7 압축 코덱 선택
      •  
    • ▣ 09장: 하둡 운영하기
      • 9.1 클러스터 계획하기
      • 9.2 네임노드 HA 구성
      • 9.3 파일 시스템 상태 확인
      • 9.4 밸런서
      • 9.5 HDFS 어드민 명령어 사용
      • 9.6 데이터 저장 공간 관리
      • 9.7 데이터노드 제거
      • 9.8 데이터노드 추가
      • 9.9 네임노드 장애 복구
      • 9.10 데이터노드 장애 복구
      • 9.11 셸 스크립트를 이용한 배포 관리
      •  
    • ▣ 10장: 하둡 부가기능 이용하기
      • 10.1 하둡 스트리밍
      • 10.2 잡 스케줄러
      • 10.3 MR유닛
      •  
    • ▣ 11장: 클라우드 환경에서 하둡 실행하기
      • 11.1 아마존 웹 서비스(AWS) 소개
      • 11.2 AWS 가입
      • 11.3 EC2 하둡 설정
      • 11.4 S3 설정
      • 11.5 EMR 사용
      •  
  • [4부] 하둡2와의 만남
    • ▣ 12장: 하둡2 소개
      • 12.1 하둡2의 등장 배경
      • 12.2 하둡2 특징
      • 12.3 얀
      • 12.4 네임노드 HA
      • 12.5 HDFS 페더레이션
      • 12.6 HDFS 스냅샷
      • 12.7 단락 조회
      •  
    • ▣ 13장: 하둡2 설치
      • 13.1 프로토콜 버퍼 설치
      • 13.2 하둡2 다운로드
      • 13.3 가상 분산 모드 설치하기
      • 13.4 네임노드 HA 설치
      • 13.5 하둡2 빌드
      •  
    • ▣ 14장: 얀 애플리케이션 개발하기
      • 14.1 예제 애플리케이션 소개
      • 14.2 클라이언트 구현
      • 14.3 애플리케이션마스터 구현
      • 14.4 애플리케이션 구현
      • 14.5 애플리케이션 실행
      •  
    • ▣ 15장: 얀 아키텍처 이해하기
      • 15.1 얀 작업 흐름
      • 15.2 얀 단계별 동작 방식
      • 15.3 보조서비스
      • 15.4 얀 이벤트 처리 방식
      • 15.5 아키텍처 심화 학습
      •  
    • ▣ 16장: 얀 클러스터 운영하기
      • 16.1 얀 명령어 사용하기
      • 16.2 포트 설정
      • 16.3 맵리듀스 설정
      • 16.4 얀 스케줄러 설정
      • 16.5 노드매니저 추가 및 제거
      • 16.6 리소스매니저 HA 구성하기
      •  
  • [5부] 하둡 에코 시스템
    • ▣ 17장: 하이브 활용하기
      • 17.1 하이브 아키텍처
      • 17.2 하이브 설치
      • 17.3 하이브QL
      • 17.4 파티션 테이블
      • 17.5 데이터 정렬
      • 17.6 데이터 저장 포맷
      •  
    • ▣ 18장: 스쿱
      • 18.1 스쿱 아키텍처
      • 18.2 스쿱 설치하기
      • 18.3 TPC-H 데이터 구성하기
      • 18.4 데이터 임포트
      • 18.5 데이터 익스포트
      •  
    • ▣ 19장: 타조 활용하기
      • 19.1 SQL-온-하둡이란?
      • 19.2 SQL-온-하둡 분류 기준
      • 19.3 타조란?
      • 19.4 타조 설치하기
      • 19.5 항공 운항 통계 데이터 분석하기
      • 19.6 파일 포맷
      • 19.7 하이브 연동
      •  
  • [6부] 하둡 적용 사례
    • ▣ 20장: 하둡 적용 사례
      • 20.1 네이버: 하둡과 몽고디비를 이용한 로그 분석 시스템
      • 20.2 아프리카TV의 추천 시스템 구축 사례
      • 20.3 타조를 이용한 코호트 분석
      •  
  • [부록]
    • ▣ A: 하둡 개발환경 설정하기
      • A.1 이클립스
      • A.2 메이븐
      • A.3 Git
      •  
    • ▣ B: 용어설명
      •  
    • ▣ C: 참고문헌
      •  
  • p.49, 5번째 줄

    2.10.2 maters 수정 ==> 2.10.2 masters 수정

  • p.53, 위에서 4번 째 줄 빈칸 오류

    format ==> -format

  • p66, 아래에서 8번째 줄

    DFSOutpu tStream ==> DFSOutputStream

  • p.67, 10번째 줄

    6. 각 데이터는 ==> 6. 각 데이터노드는

  • p.67, 14번째 줄

    제거된 새로운 데이터 목록을 내려받습니다. ==> 제거된 새로운 데이터노드 목록을 내려받습니다.

  • p.69, 4번 항목에 다음 설명을 추가

    DistributedSystem은 DFSClient로부터 전달받은 DFSInputSteam을 이용해 FSDataInputStream으로 생성한 후 클라이언트에게 반환합니다.

  • p.70, 14번째 줄

    블록 위치 목록 반환합니다. ==> 블록 위치 목록을 반환합니다.

  • p.71, 아래서 5번째 줄

    2번 단계를 ==> 3번 단계를

  • p.85, 15번째 줄

    -rw-rw-rw- ==> -rwxrwxrwx

  • p.89, 2번째 줄

    ./bin/hadoop fs -ezd [디렉터리|파일] ==> ./bin/hadoop fs test -defsz [디렉터리|파일]

  • p.95, 마지막 줄

    이 작업은 4.3절에서 자세히 설명하겠습니다. ==> 이 작업은 4.2.2절에서 자세히 설명하겠습니다.

  • p.97, 10번째 줄

    구성 사례를 보면 같은 경우 잡트래커를 반드시 ==> 구성 사례를 보면 잡트래커를 반드시

  • p.99, 그림 4.4 셔플 단계

    /category/list 1 {1,1} ==> /category/list {1,1}

  • p.100, 그림 4.5 리듀스 단계

    /category/list 1 {1,1} ==> /category/list {1,1}

  • p.100, 그림 4.5 리듀스 단계

    /category/list 1 2 ==> /category/list 2

  • p.109, 밑에서 3째 줄

    4.3.3.7 OutputFormat ==> 4.2.3.7 OutputFormat

  • p.119, 밑에서 7번째 줄

    듀스의 입력(Reduce input records)으로 4건이 ==> 듀스의 입력(Reduce input records)으로 6건

예제코드 관련 깃허브 페이지

관련 글