Top

[따라하며 배우는]
하둡과 빅데이터 분석 실무

  • 원서명Hadoop Real World Solutions Cookbook (ISBN 9781849519120)
  • 지은이조나단 오웬스, 존 렌츠, 브라이언 페미아노
  • 옮긴이안건국, 이정림
  • ISBN : 9788960774865
  • 30,000원
  • 2013년 10월 31일 펴냄
  • 페이퍼백 | 368쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 데이터 과학

책 소개

하둡(Hadoop)과 하둡 에코시스템은 데이터 라이프사이클을 책임진다고 해도 과언이 아니다. 분명 하둡은 배우기가 수월하지 않은 학습 곡선이 존재하지만, 데이터 환경에 둘러 싸여 있다면 꼭 익혀야 할 가치가 있는 기술이다. 이 책은 하둡의 높은 학습 곡선을 조금이라도 해소하고, 실제 실무에서 접할 수 있는 간이 형태의 프로젝트 가이드를 보여준다. 따라하며 배울 수 있는 하둡을 활용한 빅데이터 분석 실무에 대한 좋은 참고서다.

이 책에서 다루는 내용
  • 데이터 ETL과 압축, 직렬화, 가져오기와 내보내기
  • 기본 및 고급 집계 분석
  • 그래프 분석
  • 기계 학습
  • 트러블슈팅과 디버깅
  • 확장성 있는 퍼시스턴스 사용
  • 클러스터 관리와 구성
이 책의 대상 독자

이 책에서는 하둡으로 해결할 수 있는 여러 형태의 실제 문제를 강조하기 위해 구체적인 코드 예제를 사용한다. 따라서 하둡과 관련 도구를사용해 개발자에게 친숙하도록 설계되었다. 하둡 초보자는 책의 설명을 통해 쉽게 배워볼 수 있으며 하둡 애플리케이션의 실제 사례를 경험할 수 있다. 경험이 있는 하둡 개발자는 많은 도구와 기술로 다양한 사고 전환의 기회를 접할 수 있으며, 익숙했던 하둡 프레임워크이지만 다시 명확하게 이해하는 계기가 될 것이다.

이 책의 구성
  • 1장, 하둡 분산 파일 시스템: 데이터 가져오기와 내보내기에서는 피그와 플룸(Flume), 스쿱(Sqoop) 같은 도구의 도움으로 MySQL과 몽고디비(MongoDB), 그린플럼(Greenplum), MS-SQL 서버 같은 대중적인 데이터베이스 간의 데이터를 적재하거나 업로드하는 여러 접근법을 보여준다.

  • 2장, HDFS는 HDFS에서 읽고 쓰는 것을 다룬다. 에이브로(Avro)와 쓰리프트(Thrift), 프로토콜 버퍼(Protocol Buffers)의 직렬화 라이브러리를 사용해서 보여준다. 또 블록 크기와 복제, LZO 압축을 설정하는 방법을 다룬다.

  • 3장, 데이터 추출과 변환에서는 여러 형태의 데이터 소스로 기초적인 하둡 ETL을 다룬다. 하이브와 피그, 자바 맵리듀스 API 등의 다양한 도구는 데이터 샘플과 하나 이상의 출력을 다루는 배치 프로세스에서 사용된다.

  • 4장, 하이브와 피그, 맵리듀스를 사용한 공통 태스크 수행에서는 문제의 여러 가지 클래스를 다루는 도구를 활용하는 방법에 중점을 둔다. 문자열 연결과 외부 테이블 매핑, 간단한 테이블 조인, 사용자 정의 함수, 클러스터 간의 의존성 배포를 다룬다.

  • 5장, 고급 조인에서는 맵리듀스와 하이브, 피그상에서 좀 더 복잡하고 유용한 조인 테크닉을 다룬다. 해당 절에서는 피그로 병합과 복제, 편향 조인을 보여주고, 하이브 맵 사이드와 완전 외부 조인도 다룬다. 또 외부의 데이터 저장소에서 데이터를 조인하는 레디스의 사용법을 보여준다.

  • 6장, 빅 데이터 분석에서는 데이터에 대한 다양한 질문에 대답하기 위해 하둡 사용 방법을 설명한다. 하이브 예제 중 일부는 다른 분석에서 재사용하기 위한 사용자 정의 함수(UDF)를 적절히 구현하고 사용하는 방법을 보여준다. 두 가지 피그 절에서는 Audioscrobbler 데이터셋을 이용한 각기 다른 분석을 보여주고, 맵리듀스 자바 API 절에서는 컴바이너를 다루는 분석을 보여준다.

  • 7장, 고급 빅 데이터 분석에서는 다양한 그래프 분석과 기계 학습 과제를 다루는 아파치 지라프와 머하웃을 살펴본다.

  • 8장, 디버깅은 트러블슈팅과 맵리듀스 잡의 테스트를 다룬다. 테스트를 쉽게 하기 위해 MRUnit과 로컬 모드를 사용하는 방법을 예제로 보여준다. 또한 맵리듀스 잡 모니터링을 위한 태스크 업데이트 상태와 카운터(Counter) 사용의 중요성을 강조한다.

  • 9장, 시스템 관리에서는 하둡에서 사용 가능한 다양한 설정으로 성능 튜닝과 최적화 방법을 주로 살펴본다. 기초적인 설정과 XML 구성 튜닝, 나쁜 데이터노드의 트러블슈팅, 네임노드 실패, 갱글리아를 사용한 성능 모니터링 등 여러 가지 주제를 다룬다.

  • 10장, 아파치 어큐뮬로를 사용한 퍼시스턴스화에서는 NoSQL 데이터 저장소인 아파치 어큐뮬로를 사용해 특별하고 다양한 기능을 보여준다. 이터레이터와 컴바이너, 스캔 인증 권한, 제약 조건을 포함한 많은 특별한 기능을 다룬다. 또 효율적인 지리공간의 로우 키를 구축하고 맵리듀스 배치를 이용한 분석도 수행한다.

저자/역자 소개

지은이 소개

조나단 오웬스 (Jonathan R. Owens)

자바와 C++, 소프트웨어 엔지니어로서 민간과 공공 부문에서 근무했으며, 최근에는 하둡과 분산 처리 기술 관련 일에 종사해왔다. 현재는 컴스코어(comScore) 회사에서 다양한 디지털 측정과 분석 업무를 하고 있다. 컴스코어에서 집계와 분석 그리고 하루 40억 트랜잭션을 다루는 하둡과 사용자 정의 분산 시스템을 사용하는 코어 프로세싱 팀의 일원이다.

존 렌츠 (Jon Lentz)

컴스코어 회사에서 온라인 고객 측정과 분석 업무를 하는 코어 프로세싱 팀의 소프트웨어 엔지니어로, 주로 피그(Pig)로 코딩하기를 좋아한다. 컴스코어에서 일하기 전에는 공급망을 최적화하고 고정 소득 증권을 배분하는 소프트웨어를 개발했다

브라이언 페미아노 (Brian Femiano)

대학에서 전산학을 전공하고 6년 넘게 프로그래머로 일해왔다. 그중 마지막 2년은 아파치 하둡을 사용해 분석과 빅데이터 처리의 가용성을 개선하는 데 보냈다. 영리 목적의 민간 부문에서 일을 하기도 했으나, 그의 대다수 경력은 공공 부문에서 보냈다. 현재는 DC/버지니아 지역의 포토맥 퓨전(Potomac Fusion)에서 일한다. 이 회사는 정부 기관의 중요하고 복잡한 데이터셋을 연구하고 개선하기 위한 알고리즘을 개발한다.

지은이의 말

『하둡과 빅데이터 분석 실무』는 개발자가 하둡에서 발생할 수 있는 문제를 편리하고 능숙하게 해결할 수 있게 안내한다. 독자는 광범위하고 다양한 하둡 관련 도구와 모범 구현 사례를 경험하게 될 것이다.

이 책은 아파치 하이브(Hive)와 피그(Pig), 맵리듀스(MapReduce), 머하웃(Mahout), 지라프(Giraph), HDFS, 어큐뮬로(Accumulo), 레디스(Redis), 갱글리아(Ganglia) 같은 도구를 사용하는 방법을 독자에게 알려줄 것이다.

또한 자세한 설명과 코드 예제를 제공한다. 각 장의 절은 기술적인 과제를 해결하는 일련의 과정을 보여주며, 각 절은 따라하기 쉽도록 하나의 문제를 여러 단계로 나누어 해결한다. 이 책은 HDFS로 데이터를 업로드/다운로드하고, 지라프를 이용해 그래프를 분석하며, 하이브와 피그, 맵리듀스를 사용해 배치 데이터를 분석한다. 또한 머하웃으로 기계 학습에 접근하고 맵리듀스 디버깅과 트러블슈팅을 한다. 그리고 컬럼 기반 스토리지와 정형 데이터를 검색하기 위해 아파치 어큐뮬로의 사용을 다룬다.

이 책은 독자가 겪을 문제에 하둡 기술을 적용할 필요가 있는 예제를 안내한다.

옮긴이 소개

안건국

텔코(Telco) 데이터 중심으로 SK C&C에서 빅데이터 프로젝트를 2년간 진행했으며, 현재는 테라데이타(Teradata)에서 하둡과 애스터(Aster) 기반으로 데이터 분석가로 활동하고 있다. 하둡 강의를 진행했고, 빅데이터 처리 관련 기술 멘토다. 그동안 데이터웨어하우스 기반의 데이터 프레임워크, 워크플로우 엔진과 ETL 툴을 개발했다. 주요 관심 분야는 데이터 분석과 관련해 기계학습(Machine Learning)과 통계 처리다. 『하둡 맵리듀스 프로그래밍』(에이콘출판, 2013)을 번역했다.

이정림

현재 테라데이타에서 애스터/하둡을 이용한 데이터 분석가로 활동하고 있다. 그 전에는 SK C&C 솔루션개발팀에서 NEXCORE ALM(Application Lifecycle Management) 솔루션을 개발했고, 그 이전에는 반도체 제조 공정 관리를 위한 EES(Equipment Engineering System)로 대용량 데이터 처리 프레임워크를 개발해 삼성전자/반도체, 독일 실트로닉(Siltronic), 싱가포르 차타드(Chartered)등의 반도체 제조 공정에 적용했다. 『안전한 API 인증과 권한 부여를 위한 클라이언트 프로그래밍 OAuth 2.0』(한빛미디어, 2013)을 번역했다.

옮긴이의 말

하둡은 이제 특정 엔지니어의 기술이 아닌, IT에 관련된 대부분 사람들이 들어 봤을 정도로 보편화되었다. 내가 하둡을 처음 전한 건, 2008년 반도체 공정 간의 수많은 데이터를 다룰 때였다. 당시 반도체 제조에서 다뤄야 할 데이터는 테스트 데이터만 해도 5테라바이트가 넘었다. 게다가 실제 데이터는 ROI 측면에 모든 데이터를 RDBMS에 저장할 수 없었기에 이때 처음 하둡을 살펴보게 됐다. 당시에는 하둡의 가능성이 이렇게 커질지 전혀 알지 못했다. 이후 2010년 말에 이르자, 클라우드 컴퓨팅 기술 확산에 따른 데이터를 다루는 기술로 하둡이 다시 각광을 받기 시작했다. 그리고 지금은 ‘빅데이터’라는 패러다임에서 늘 빠지지 않는 기술로 등장한다.

하지만 하둡에는 많은 변화가 있었고, 변화 속에 하둡 버저닝은 일관성이 보장되지 않아 여전히 어려운 기술이기도 하다. 나는 하둡 소스를 열고 분석하기 시작했고 프로젝트를 진행하면서 하둡을 더 깊이 들여다보기 시작했다. 하지만 ‘아, 이제 좀 알겠다.’는 시점에 하둡은 또 다른 진화를 했고, 계속 발전 중이며 여전히 학습이 필요하다.

이 책의 기획 의도는 실무에서 접할 수 있는 수많은 환경의 일부를 간접적으로 경험하게 하는 것이다. 그래서 뒤로 갈수록 조금씩 어려워질 수 있다. 또 몇 가지 배경지식이 필요하다. 하지만 끝까지 살펴볼 수 있는 좋은 책이다.

이 책에서 가장 마음에 드는 부분은 1장과 3장, 4장, 8장이다. 하둡 분산 파일 시스템을 다루는 1장과 HDFS를 다루는 3장은 다양한 데이터 인터페이스를 소개하기 때문에 데이터 수집이 얼마나 지루하고 어려운지 간접 경험을 해볼 수 있다. 데이터 추출과 변환을 다루는 4장에서는 3장의 데이터 수집 이후 확장해나가는 ETL 과정을 볼 수 있다. 하둡 에코 시스템(Hadoop Eco System) 중 하이브(Hive)와 피그(Pig)가 처음 나왔을 때, 대개 개발자/엔지니어 성향에 따라 한 가지만을 고려하는 사람이 많았지만 실제 업무를 하다 보면 둘 다 병행해서 써야 함을 느낀다. 그런 면에서 나는 데이터 표준 관리와 ELT에서는 하이브를 좀 더 많이 썼고, ETL에서는 피그를 더 많이 사용했다. 또한 어떤 점에서는 피그의 사용성과 성능이 더 좋을 때가 있다. 그리고 디버깅을 다루는 8장은 실제 맵리듀스를 개발하는 과정에서 수많은 클러스터를 사용하지 않고 디버깅할 수 있는 방법을 제공한다. 물론 상황과 환경에 따라 달라질 수 있지만 디버깅 부분을 가이드하는 책은 많지 않다.

앞으로 빅데이터-DW에서 하둡-하둡 에코 시스템의 아키텍처는 필수 컴포넌트로 자리를 잡을 것이다. 그런 의미에서 시작을 이 책과 함께하는 것은 좋은 선택이라 하겠다.

안건국, 이정림 

목차

목차
  • 1장 하둡 분산 파일 시스템: 데이터 가져오기와 내보내기
  •   개요
  •   하둡 셸 명령어를 사용해 데이터를 내보내고 HDFS로 데이터 가져오기
  •   분산 복사를 사용한 클러스터 간의 효율적인 데이터 이동
  •   스쿱을 사용해 데이터를 MySQL에서 HDFS로 가져오기
  •   스쿱을 사용해 데이터를 HDFS에서 MySQL로 내보내기
  •   MS-SQL 서버를 위한 스쿱 구성
  •   데이터를 HDFS에서 몽고DB로 내보내기
  •   데이터를 몽고DB에서 HDFS로 가져오기
  •   피그를 사용해 데이터를 HDFS에서 몽고DB로 내보내기
  •   그린플럼 외부 테이블에서의 HDFS 사용
  •   데이터를 HDFS로 적재하기 위한 플룸 사용

  • 2장 HDFS
  •   개요
  •   HDFS에서 데이터 읽고 쓰기
  •   LZO를 사용한 데이터 압축
  •   시퀀스파일로 데이터 읽고 쓰기
  •   데이터 직렬화를 위한 아파치 에이브로 사용
  •   데이터 직렬화를 위한 아파치 스리프트 사용
  •   데이터 직렬화를 위한 프로토콜 버퍼 사용
  •   HDFS 복제 계수 설정
  •   HDFS 블록 크기 설정

  • 3장 데이터 추출과 변환
  •   개요
  •   맵리듀스를 사용해 아파치 로그를 TSV 포맷으로 변환
  •   웹 서버 로그에서 봇 트래픽을 필터링하기 위한 아파치 피그 사용
  •   웹 서버 로그 데이터를 타임스탬프로 정렬하기 위한 아파치 피그 사용
  •   웹 서버 로그 데이터를 세션화하기 위한 아파치 피그 사용
  •   아파치 피그 기능 확장을 위한 파이썬 사용
  •   페이지 뷰를 계산하기 위한 맵리듀스와 보조 정렬 사용
  •   지리 이벤트 데이터를 정리하고 변환하기 위한 하이브와 파이썬 사용
  •   시계열 분석을 수행하기 위한 파이썬과 하둡 스트리밍 사용
  •   출력 파일 이름을 지정하기 위한 맵리듀스의 MultipleOutputs 사용
  •   지리 이벤트 데이터를 읽기 위한 사용자 정의 하둡 Writable과 InputFormat 생성

  • 4장 하이브와 피그, 맵리듀스를 사용한 공통 태스크 수행
  •   개요
  •   HDFS에서 웹로그 데이터와 외부 테이블을 매핑하기 위한 하이브 사용
  •   웹로그 쿼리 결과로부터 동적으로 테이블을 생성하기 위한 하이브 사용
  •   웹로그 데이터에서 필드를 연결하기 위한 하이브의 문자열 UDF 사용
  •   웹로그의 IP를 조인해서 해당 IP에 맞는 국가를 찾기 위한 하이브 사용
  •   맵리듀스를 사용한 뉴스 아카이브에서의 n-그램 생성
  •   뉴스 아카이브에서 특정 키워드를 포함하는 라인을 찾기 위한 맵리듀스 분산 캐시 사용
  •   데이터를 테이블에 적재하고 GROUP BY 절을 갖는 SELECT 문의 연산을 수행하기 위한 피그 사용

  • 5장 고급 조인
  •   개요
  •   매퍼에서 맵리듀스를 사용한 데이터 조인
  •   아파치 피그의 복제 조인을 사용한 데이터 조인
  •   아파치 피그의 병합 조인을 사용한 정렬 데이터 조인
  •   아파치 피그의 편향 조인을 사용한 편향 데이터 조인
  •   지리 이벤트를 분석하기 위한 아파치 하이브 맵 사이드 조인 사용
  •   지리 이벤트를 분석하기 위한 아파치 하이브 완전 외부 조인 최적화
  •   외부 키/값 저장소(레디스)를 사용한 데이터 조인

  • 6장 빅 데이터 분석
  •   개요
  •   맵리듀스와 컴바이너를 사용해 웹로그 데이터에서 개별 IP 주소 카운트
  •   지리 이벤트 데이터에서 이벤트 날짜를 변환하고 정렬하기 위한 하이브 날짜 UDF 사용
  •   지리 이벤트 데이터를 통해 월별 사망 보고서를 작성하기 위한 하이브 사용
  •   지리 이벤트 데이터의 소스 신뢰성을 검증하기 위한 하이브의 사용자 정의 UDF 구현
  •   하이브의 맵/리듀스 연산과 파이썬을 사용해 비폭력의 최장 기간 표시
  •   피그를 사용해 Audioscrobbler 데이터셋에서 가수들의 코사인 유사도 연산
  •   피그와 datafu 라이브러리를 사용해 Audioscrobbler 데이터셋에서 아웃라이어 제거

  • 7장 고급 빅 데이터 분석
  •   개요
  •   아파치 지라프를 이용한 페이지랭크
  •   아파치 지라프를 이용한 단일 소스 최단 경로 구하기
  •   분산된 너비 우선 탐색을 수행하기 위한 아파치 지라프 사용
  •   아파치 머하웃을 이용한 협업 필터링
  •   아파치 머하웃을 이용한 클러스터링
  •   아파치 머하웃을 이용한 감성 분류

  • 8장 디버깅
  •   개요
  •   리듀스 잡에서 잘못된 레코드 추적을 위한 카운터 사용
  •   MRUnit을 이용한 맵리듀스 잡의 개발과 테스트
  •   로컬 모드에서 실행되는 맵리듀스 잡의 개발과 테스트
  •   잘못된 레코드를 스킵하기 위한 맵리듀스 잡 활성화
  •   스트리밍 잡에서의 카운터 사용
  •   디버깅 정보를 표시하기 위한 태스크 상태 메시지 업데이트
  •   피그 잡을 디버깅하기 위한 illustrate 명령어 사용

  • 9장 시스템 관리
  •   개요
  •   의사 분산 모드에서 하둡 시작하기
  •   분산 모드에서 하둡 시작하기
  •   기존 클러스터에 새 노드 추가
  •   안전한 노드 해제
  •   네임노드 장애 복구
  •   갱글리아를 사용한 클러스터 상태 모니터링
  • 맵리듀스 잡 매개변수 튜닝

  • 10장 아파치 어큐뮬로를 사용한 퍼시스턴스화
  •   어큐뮬로에서 지리 이벤트 저장을 위한 로우 키 설계
  •   지리 이벤트 데이터를 어큐뮬로로 대량으로 가져오기 위한 맵리듀스 사용
  •   어큐뮬로에서 지리 이벤트 데이터를 입력하기 위한 사용자 정의 필드 제한 설정
  •   정규식 필터링 이터레이터를 사용한 쿼리 결과 제한
  •   SumCombiner를 사용해 동일 키의 다른 버전을 위한 사망자 카운트
  •   어큐뮬로를 사용한 스캔에서의 셀 수준 보안 강화

도서 오류 신고

도서 오류 신고

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

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

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