SQL로 친숙하게 만나는 빅데이터 분석하기!
이 책은 예제를 중심으로 여러분의 환경에서 하이브를 어떻게 설치하고 설정하는지 보여준다. 하둡과 맵리듀스에 대해 간략하게 설명하고 하이브가 하둡 생태계에서 어떻게 동작하는지도 보여준다. 또한 많은 회사가 테라바이트 데이터를 다루면서 겪었던 문제를 풀기 위해 어떻게 하이브를 이용했는지도 실제 사례를 통해서 엿볼 수 있다. 넥스알에서 개발한 ‘R하이브’와 ‘오라클에서 하이브로의 마이그레이션’을 부록으로 추가했다.
페이스북이 만든 SQL 호환 언어, 하이브!
하이브는 페이스북에서 대용량 데이터셋을 간편하게 사용하고자 만들었고, 이미 수많은 기업에서 사용한다. 하둡 분산 파일시스템이나 하둡과 연동하는 다른 파일시스템(MapR-FS, 아마존의 S3, HBase와 카산드라 같은 데이터베이스)에 저장된 데이터를 쿼리할 수 있는 SQL 호환 언어를 제공하는 하둡 생태계의 필수 도구인 하이브에 대해 알아보자.
대상 독자
이 책의 내용
추천평
빅데이터에 대한 관심이 고조되면서 하둡, NoSQL, 맵리듀스 등의 분산 처리 기술을 배우고 수용하는 사례가 늘고 있다. 하지만 빅데이터 기술을 처음 접하는 개발자/엔지니어 입장에서 맵리듀스와 같은 분산 프로그래밍을 배우고 활용하는 일은 쉽지 않은 것이 사실이다. 이러한 관점에 하이브가 해답을 제시해줄 수 있다. 전통적으로 데이터 처리에 SQL을 사용했듯이 빅데이터에 대한 분산 처리에 SQL을 사용할 수 있어 학습비용을 최소화하고, 레거시 시스템과의 연동도 효과적으로 할 수 있다.
이러한 하이브의 장점에도 불구하고 국내에 제대로 된 하이브 서적이 하나도 없었는데, 『하이브 완벽 가이드』가 출간되어 빠르게 빅데이터 기술을 접근할 수 있는 지름길을 제시해준다고 하니 기쁘기 그지없다. 이 책은 기본적인 하이브 데이터 모델링부터 쿼리, 색인, 튜닝, 함수, 스토리지 핸들러, HCatalog 등의 고급 기능까지 총망라하여 제공한다. 또한, 원서에는 없는 ‘오라클과 하이브 쿼리의 차이와 변환 방법’ 및 ‘R과 하이브를 결합한 오픈소스 R하이브’에 대한 부록을 실제 경험자와 개발자가 추가로 제공하고 있어 빅데이터 고급 분석으로의 한 걸음 도약의 계기를 마련해준다.
빅데이터의 고지에 가장 빠르게 안내해 줄 서적으로 주저 없이 이 책을 추천한다.
_넥스알 CTO 한재선
CHAPTER 1 소개
_1.1 하둡과 맵리듀스 개요
__1.1.1 맵리듀스
_1.2 하둡 생태계에서의 하이브
__1.2.1 피그
__1.2.2 HBase
__1.2.3 캐스케이딩, 크런치, 그 외 도구
_1.3 자바 vs. 하이브: 단어 세기 알고리즘
CHAPTER 2 시작하기
_2.1 하둡과 하이브가 미리 설정된 가상 머신 설치하기
_2.2 자세한 설치 방법 알아보기
__2.2.1 자바 설치하기
__2.2.2 하둡 설치하기
__2.2.3 로컬 모드, 의사 분산 모드, 분산 모드
__2.2.4 하둡 테스트하기
__2.2.5 하이브 설치하기
_2.3 하이브는 어떻게 구성되어 있는가?
_2.4 하이브 시작하기
_2.5 하둡 환경 설정하기
__2.5.1 로컬 모드 설정
__2.5.2 분산과 의사 분산 모드 설정
__2.5.3 JDBC를 사용하는 메타스토어
_2.6 하이브 명령
__2.6.1 명령 옵션
_2.7 명령행 인터페이스
__2.7.1 CLI 옵션
__2.7.2 변수와 속성
__2.7.3 하이브 원 샷 명령
__2.7.4 파일로 하이브 쿼리 실행하기
__2.7.5 .hiverc 파일
__2.7.6 CLI의 다른 기능들
__2.7.7 명령 히스토리
__2.7.8 셸 실행
__2.7.9 하이브에서 하둡 dfs 명령 수행하기
__2.7.10 하이브 스크립트에서 주석 달기
__2.7.11 쿼리 컬럼 헤더
CHAPTER 3 데이터형과 파일 포맷
_3.1 원시 데이터형
_3.2 컬렉션 데이터형
_3.3 데이터값의 텍스트 파일 인코딩
_3.4 Schema on Read
CHAPTER 4 HiveQL: 데이터 정의
_4.1 하이브에서의 데이터베이스
_4.2 데이터베이스 변경
_4.3 테이블 생성
__4.3.1 매니지드 테이블
__4.3.2 외부 테이블
_4.4 파티션닝된 매니지드 테이블
__4.4.1 파티셔닝된 외부 테이블
__4.4.2 테이블 저장 포맷 사용자화
_4.5 테이블 삭제
_4.6 테이블 변경
__4.6.1 테이블명 변경
__4.6.2 테이블 파티션 추가, 변경, 삭제
__4.6.3 컬럼 변경
__4.6.4 컬럼 추가
__4.6.5 컬럼 삭제 및 교체
__4.6.6 테이블 속성 변경
__4.6.7 저장소 속성 변경
__4.6.8 기타 테이블 변경 문
CHAPTER 5 HiveQL: 데이터 조작
_5.1 매니지드 테이블에 데이터 로딩하기
_5.2 쿼리 결과를 테이블에 넣기
__5.2.1 동적 파티션 삽입
_5.3 쿼리 하나로 테이블을 생성하고 데이터 로딩하기
_5.4 데이터 꺼내기
CHAPTER 6 HiveQL: 쿼리
_6.1 SELECT ... FROM 절
__6.1.1 정규표현식으로 컬럼 선택하기
__6.1.2 컬럼값으로 계산하기
__6.1.3 산술 연산자
__6.1.4 함수 사용하기
__6.1.5 LIMIT 절
__6.1.6 컬럼 별칭
__6.1.7 중첩 SELECT 문
__6.1.8 CASE ... WHEN ... THEN 문
__6.1.9 하이브가 맵리듀스를 사용하지 않을 때
_6.2 WHERE 절
__6.2.1 술어 연산자
__6.2.2 부동소수점수 비교의 잠재적 문제
__6.2.3 LIKE와 RLIKE
_6.3 GROUP BY 절
__6.3.1 HAVING 절
_6.4 조인 문
__6.4.1 내부 조인
__6.4.2 조인 최적화
__6.4.3 왼쪽 외부 조인
__6.4.4 외부 조인의 잠재적 문제
__6.4.5 오른쪽 외부 조인
__6.4.6 완전 외부 조인
__6.4.7 왼쪽 세미 조인
__6.4.8 카타시안 프로덕트 조인
__6.4.9 맵 사이드 조인
_6.5 ORDER BY와 SORT BY
_6.6 SORT BY와 함께 사용하는 DISTRIBUTE BY
_6.7 CLUSTER BY
_6.8 형변환
__6.8.1 BINARY값 형변환
_6.9 데이터 표본을 만드는 쿼리
__6.9.1 블록으로 표본 만들기
__6.9.2 버킷 테이블들에 대한 입력 푸루닝
_6.10 UNION ALL
CHAPTER 7 HiveQL: 뷰
_7.1 쿼리의 복잡함을 줄여주는 뷰
_7.2 조건을 기반으로 데이터를 제한하는 뷰
_7.3 동적 테이블을 위한 뷰와 MAP 데이터형
_7.4 기타
CHAPTER 8 HiveQL: 색인
_8.1 색인 생성
__8.1.1 비트맵 색인
_8.2 색인 재구축
_8.3 색인 보기
_8.4 색인 삭제
_8.5 사용자 정의 색인 핸들러 구현
CHAPTER 9 스키마 설계
_9.1 날짜별 테이블
_9.2 파티션 설계 시 고려사항
_9.3 고유 키와 정규화
_9.4 동일 데이터에 대한 다중 패스 만들기
_9.5 임시 테이블 파티셔닝하기
_9.6 테이블 저장소 버킷팅하기
_9.7 테이블에 컬럼 추가하기
_9.8 컬럼 기반 테이블 사용하기
__9.8.1 반복 데이터
__9.8.2 다수의 컬럼
__9.9 압축하기
CHAPTER 10 튜닝
_10.1 EXPLAIN 사용하기
_10.2 EXPLAIN EXTENDED
_10.3 LIMIT 튜닝
_10.4 최적화된 조인
_10.5 로컬 모드
_10.6 병렬 수행
_10.7 strict 모드
_10.8 맵퍼와 리듀서 수의 최적화
_10.9 자바 가상 머신 재사용
_10.10 색인
_10.11 동적 파티셔닝 튜닝
_10.12 투기적 실행
_10.13 다수의 GROUP BY 연산 결합하기
_10.14 가상 컬럼
CHAPTER 11 기타 파일 포맷과 압축
_11.1 설치된 코덱 확인
_11.2 압축 코덱 선택
_11.3 중간 과정 압축
_11.4 최종 출력 압축
_11.5 시퀀스파일
_11.6 압축하기
_11.7 파티션 아카이빙하기
_11.8 정리하기
CHAPTER 12 개발
_12.1 Log4J 속성 변경
_12.2 하이브 디버깅하기
_12.3 소스로부터 하이브 빌드하기
_12.3.1 다양한 하이브 테스트 케이스 실행하기
_12.3.2 후크 실행
_12.4 이클립스와 하이브 설정
_12.5 메이븐 프로젝트에서 하이브
_12.6 hive_test와 함께하는 하이브 테스트
_12.7 새로운 플러그인 개발 킷
CHAPTER 13 함수
_13.1 함수 탐색 및 설명
_13.2 함수 호출
_13.3 표준 함수
_13.4 집계 함수
_13.5 테이블 생성 함수
_13.6 생일로 별자리를 찾는 UDF
_13.7 UDF vs. GenericUDF
_13.8 영구적 사용을 위한 함수 등록
_13.9 사용자 정의 집계 함수
__13.9.1 GROUP_CONCAT을 따라 하는 COLLECT UDAF 함수 생성
_13.10 사용자 정의 테이블 생성 함수
__13.10.1 다중 로우 생성 UDTF
__13.10.2 다중 컬럼을 이용한 단일 로우 생성 UDTF
__13.10.3 복합 데이터형 효과를 내는 UDTF
_13.11 UDF에서 분산 캐시 접근
_13.12 함수 어노테이션
__13.12.1 결정성
__13.12.2 상태 유지
__13.12.3 distinctLike
_13.13 매크로
CHAPTER 14 스트리밍
_14.1 항등 변환
_14.2 데이터형 변환
_14.3 투사 변환
_14.4 조작 변환
_14.5 분산 캐시 사용
_14.6 로우 하나를 여러 로우로 변환하기
_14.7 스트리밍을 이용한 집계 계산
_14.8 CLUSTER BY, DISTRIBUTE BY, SORT BY
_14.9 자바 스트리밍을 위한 GenericMR 도구들
_14.10 그룹 간 계산
CHAPTER 15 하이브 파일과 레코드 포맷 사용자화
_15.1 파일 vs. 레코드 포맷
_15.2 CREATE TABLE 문 파헤치기
_15.3 파일 포맷
__15.3.1 시퀀스파일
__15.3.2 RCFile
__15.3.3 사용자 정의 입력 포맷 예제: DualInputFormat
_15.4 레코드 포맷: SerDe
_15.5 CSV와 TSV SerDe
_15.6 ObjectInspector
_15.7 Think Big 하이브 리플렉션 ObjectInspector
_15.8 XML UDF
_15.9 XPath 관련 함수
_15.10 JSON SerDe
__15.11 에이브로 하이브 SerDe
__15.11.1 테이블 속성을 이용한 에이브로 스키마 정의
__15.11.2 URI로 스키마 정의
__15.11.3 스키마 진화
__15.12 바이너리 출력
CHAPTER 16 하이브 쓰리프트 서비스
_16.1 쓰리프트 서버 구동하기
_16.2 그루비로 연결하기
_16.3 하이브 서버에 연결하기
_16.4 클러스터 상태 얻기
_16.5 결과 집합 스키마
_16.6 결과 가져오기
_16.7 쿼리 플랜 반환
_16.8 메타스토어 메소드
_16.8.1 예제 테이블 검사기
_16.9 하이브 서버 관리
__16.9.1 하둡 서비스 운영
__16.9.2 디렉터리 비우기
_16.10 하이브 쓰리프트 메타스토어
__16.10.1 쓰리프트 메타스토어 설정
__16.10.2 클라이언트 설정
CHAPTER 17 스토리지 핸들러와 NoSQL
_17.1 스토리지 핸들러 배경 지식
_17.2 하이브 스토리지 핸들러
_17.3 HBase
_17.4 카산드라
__17.4.1 정적 컬럼 매핑
__17.4.2 동적 컬럼 맵핑
__17.4.3 카산드라 SerDe 속성
_17.5 다이나모디비
CHAPTER 18 보안
_18.1 하둡 보안과 통합
_18.2 하이브 인증
_18.3 하이브 권한
__18.3.1 사용자, 그룹, 역할
__18.3.2 특권 부여와 회수
__18.3.3 파티션 레벨 특권
__18.3.4 자동 권한 부여
CHAPTER 19 잠금
_19.1 주키퍼를 이용한 하이브 잠금 제공
_19.2 명시적 배타적 잠금
CHAPTER 20 우지와 하이브 통합
_20.1 우지 액션
__20.1.1 하이브 쓰리프트 서비스 액션
_20.2 두 개의 쿼리를 실행하는 워크플로우
_20.3 우지 웹 콘솔
_20.4 워크플로우 내의 변수
_20.5 출력 캡처
_20.6 변수로 출력 캡처
CHAPTER 21 하이브와 아마존 웹 서비스
_21.1 왜 EMR인가?
_21.2 인스턴스
_21.3 시작하기 앞서
_21.4 EMR 하이브 클러스터 관리하기
_21.5 EMR 하이브에서 쓰리프트 서버
_21.6 EMR에서 인스턴스 그룹
_21.7 EMR 클러스터 설정하기
__21.7.1 hive-site.xml 배치
__21.7.2 .hiverc 스크립트 배치
__21.7.3 메모리 집약적인 설정
_21.8 EMR에서의 지속성과 메타스토어
_21.9 EMR 클러스터 상의 HDFS와 S3
_21.10 S3에 리소스, 설정, 부트스트랩 스크립트 올리기
_21.11 S3에 로그 남기기
_21.12 스팟 인스턴스
_21.13 보안 그룹
_21.14 EMR vs. EC2, 그리고 아파치 하이브
_21.15 정리하기
CHAPTER 22 HCatalog
_22.1 소개
_22.2 맵리듀스
__22.2.1 데이터 읽기
__22.2.2 데이터 쓰기
_22.3 명령행
_22.4 보안 모델
_22.5 아키텍처
CHAPTER 23 사례 연구
_23.1 m6d.com (Media6Degrees)
__23.1.1 하이브와 R을 활용한 M6D의 데이터 분석
__23.1.2 M6D Pseudorank 사용자 정의 함수
__23.1.3 다수의 맵리듀스 클러스터에서 하이브 데이터 관리
_23.2 아웃브레인
__23.2.1 사이트 내 유입 경로 식별
__23.2.2 고유 값 세기
__23.2.3 사용자 활동 분석
_23.3 NASA 제트 추진 연구소
__23.3.1 지역 기후 모델 분석 시스템
__23.3.2 하이브를 선택한 이유
__23.3.3 도전과 극복
_23.4 포토버킷
__23.4.1 포토버킷의 빅데이터
__23.4.2 하이브를 위하여 어떤 하드웨어를 사용했나?
__23.4.3 하이브로 이관할 데이터
__23.4.4 누가 사용하나?
_23.5 심플리치
_23.6 카르마스피어 관점에서 고객사의 경험과 요구사항
__23.6.1 소개
__23.6.2 사례
[부록A] 오라클 마이그레이션
[부록B] 오픈소스 R하이브
[부록C] 용어
[부록D] 참고 문헌
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스 | 2017-01-19 | 다운로드 |
머하웃 완벽 가이드(Mahout in Action): 하둡에 딱 맞는 빅데이터를 활용한 기계학습
션 오웬 , 로빈 애닐 , 테드더닝 , 엘렌 프리드만
맵리듀스 디자인 패턴 : 하둡과 빅데이터에 효과적인 6가지 방법론과 26가지 실용 패턴
도널드 마이너 , 아담 슈크