HBase 클러스터 구축과 관리 [NoSQL 데이터베이스 관리를 위한 하둡과 HBase 클러스터 설치에서 고급 튜닝까지]
- 원서명HBase Administration Cookbook (ISBN 9781849517140)
- 지은이이펑 지앙
- 옮긴이김기성
- ISBN : 9788960773790
- 30,000원
- 2012년 12월 31일 펴냄 (절판)
- 페이퍼백 | 388쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 클라우드 컴퓨팅
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
HBase는 빅데이터 관리와 분석을 위해 개발된 클러스터 기반의 NoSQL 데이터베이스다. 이 책은 HBase 클러스터의 설치와 관리 방법에서 시작해 고급 튜닝 기법까지, HBase 클러스터를 운영하기 위한 전반적인 내용을 다룬다. HBase 클러스터에 필요한 하둡(Hadoop) 클러스터 및 주키퍼(ZooKeeper) 등의 설치 방법도 소개하며 이를 기반으로 HBase를 설치하는 방법을 쉽게 설명한다. 또한, HBase 클러스터의 데이터 백업 및 복구, 모니터링과 같은 관리 방법을 다루며 클러스터 운영에 매우 중요한 보안 이슈도 다룬다. 그리고 최적의 HBase 클러스터를 운영하기 위한 저자의 노하우가 담긴 고급 튜닝 기법도 전수해준다. 『HBase 클러스터 구축과 관리』를 통해 빅데이터 시대의 데이터베이스 관리에 필수적인 저자의 오랜 실전 경험과 노하우를 전수받을 수 있을 것이다.
[ 소개 ]
HBase는 오픈소스 분산 빅데이터 저장소로 상용 머신으로 구성된 클러스터에서 수백만 개의 컬럼(column)을 가진 수십억 개의 로우(row)를 처리할 수 있다. 실시간으로 대량의 데이터를 저장하고 액세스할 방법을 찾고 있다면 HBase가 최고의 선택이 될 것이다.
『HBase 클러스터 구축과 관리』는 실제적이며 쉬운 단계별 예제를 통해 HBase를 쉽게 관리하도록 도와준다. 하둡(Hadoop)과 HBase의 관계를 이해하는 것이 HBase를 사용하는 데에 매우 중요하다. 이 책은 하둡 클러스터를 설치하고 하둡과 HBase가 같이 동작하게 설정하는 방법과 클러스터의 성능을 튜닝하는 방법을 소개한다.
[ 이 책에서 다루는 내용 ]
■ 고가용성을 지닌 분산 HBase 클러스터를 설치하고 클라이언트 API나 맵리듀스(MapReduce) 잡을 이용해 데이터를 로드한다.
■ HBase 셸 또는 SQL 유사 질의 언어를 이용한 하이브(Hive)를 사용해 HBase의 데이터를 액세스한다.
■ HBase 테이블의 데이터뿐만 아니라 데이터의 분포까지 백업하고 복구한다. 그리고 서로 다른 HBase 클러스터 사이에 데이터를 옮기고 복사한다.
■ 커널 설정과, JVM GC, 하둡, HBase 설정을 튜닝해 최대의 성능을 얻는다.
■ 문제해결 툴을 사용해 HBase를 사용하며 자주 발생하는 문제를 해결한다.
■ 읽기 또는 쓰기가 많은 클러스터를 튜닝하기 위한 고급 설정과 튜닝 방법을 소개한다.
[ 이 책의 대상 독자 ]
이 책은 HBase 관리자, 개발자를 위한 책이며, 하둡 관리자에게도 도움이 될 것이다. HBase에 대한 경험은 필요치 않으나 하둡과 맵리듀스에 대한 기본적인 이해는 필요하다.
[ 이 책의 구성 ]
1장, HBase 클러스터 설치: 1장에서는 HBase 클러스터를 셋팅하는 방법을 설명한다. 기본적인 스탠드얼론 HBase 인스턴스를 구축하는 것에서부터 아마존 EC2에 분산, 고가용성 HBase 클러스터를 설치하는 것까지 다룬다.
2장, 데이터 마이그레이션: 2장에서는 우선, HBase의 Put API를 사용해 MySQL에서 HBase로 데이터를 임포트하는 간단한 작업에 대해 설명한다. 그 후, TSV 데이터 파일을 로드하는 importtsv와 벌크 로드 툴의 사용법을 설명한다. 또한 맵리듀스 샘플을 사용해 다른 파일 포맷에서 데이터를 임포트하는 방법도 소개할 것이다. 여기서는 HBase 테이블에 데이터를 바로 적재하는 것과 하둡 분산 파일 시스템(HDFS)에 HFile 포맷 파일을 작성하는 방법도 다룬다. 그리고 마지막으로 HBase에 데이터를 적재하기 전에 영역을 미리 생성하는 방법을 설명한다.
2장에는 자바로 작성된 예제가 여러 개 있다. 독자가 자바의 기초적인 사용방법을 알고 있다고 가정하며 예제의 샘플 자바 코드를 컴파일하고 패키지화하는 방법은 다루지 않았다.
3장, 관리 도구 사용 방법: 3장에서는 HBase 웹 UI, HBase 셸, HBase hbck 등의 여러 가지 관리 툴의 사용법을 설명한다. 툴의 목적과 특정 작업을 해결하기 위한 툴의 사용법을 설명한다.
4장, HBase 데이터 백업과 복구: 4장에서는 HBase 데이터를 백업하는 다양한 방법을 설명하고, 각 방법의 장단점과 데이터셋의 크기, 자원, 요구사항에 따라 어떤 방법을 선택해야 하는지 설명한다.
5장, 모니터링과 진단: 5장에서는 Ganglia, OpenRSDB, Nagios 등의 툴을 사용해 HBase 클러스터를 모니터하고 진단하는 방법을 설명한다. 먼저 HBase 테이블의 디스크 사용량을 확인하는 방법부터 소개한다. Ganglia를 설치하고 HBase를 모니터하도록 설정하고 Ganglia 그래프의 사용방법을 보여줄 것이다. 또한 OpenTSDB도 설치하는데, OpenTSDB는 Ganglia와 비슷하지만 HBase를 사용하기 때문에 좀더 확장성이 있다.
Nagios를 설치해 HBase 관련 데몬의 상태, 하둡/HBase 로그, HBase 일관성 상태, HDFS의 상태와 사용량 등을 체크할 것이다.
마지막으로 핫 스팟 영역 이슈를 진단하고 고치는 방법을 설명한다.
6장, 관리 유지와 보안: 6장에서 소개되는 처음의 여섯 개의 예제에서는 결함을 찾고 고치는 작업, 클러스터 크기 변경, 설정 변경 등과 같은 여러 가지 HBase 관리 작업에 대해 배울 것이다.
6장에서는 보안 관련 이슈들도 살펴본다. 마지막 세 개의 예제에서는 커버로스(Kerberos)를 설치하고 이를 이용해 HDFS 보안을 설정하는 방법과 마지막으로 HBase 클라이언트 접근을 설정하는 방법을 다룬다.
7장, 문제 해결: 7장에서는 여러 가지 자주 부딪히는 문제들에 대해 살펴본다. 각 이슈들의 에러 메시지를 설명하고, 문제의 원인과 툴을 사용해 해결하는 방법을 설명한다.
8장, 기본 성능 튜닝: 8장에서는 좀더 좋은 성능을 얻기 위한 HBase 튜닝 방법을 설명한다. 우리는 또한 하둡 설정, JVM 가비지 콜렉션, OS 커널 파라미터와 같은 튜닝 포인트를 조절하는 방법도 설명한다.
9장, 고급 설정과 튜닝: 9장은 이 책에서 두 번째 성능 튜닝과 관련된 장이다. 8장에서는 HBase의 전반적인 성능 향상을 위한, 하둡 그리고 OS 설정, 자바, HBase 자체를 튜닝하는 방법을 설명했다. 이들은 많은 경우에 적용할 수 있는 일반적인 방법이다. 9장에서는 좀더 특수한 케이스를 다룬다. 그 중에서는 쓰기가 많은 클러스터에 특화되거나 클러스터의 읽기 성능 개선을 목표로 하는 방법들도 있다.
[ 소개 ]
HBase는 오픈소스 분산 빅데이터 저장소로 상용 머신으로 구성된 클러스터에서 수백만 개의 컬럼(column)을 가진 수십억 개의 로우(row)를 처리할 수 있다. 실시간으로 대량의 데이터를 저장하고 액세스할 방법을 찾고 있다면 HBase가 최고의 선택이 될 것이다.
『HBase 클러스터 구축과 관리』는 실제적이며 쉬운 단계별 예제를 통해 HBase를 쉽게 관리하도록 도와준다. 하둡(Hadoop)과 HBase의 관계를 이해하는 것이 HBase를 사용하는 데에 매우 중요하다. 이 책은 하둡 클러스터를 설치하고 하둡과 HBase가 같이 동작하게 설정하는 방법과 클러스터의 성능을 튜닝하는 방법을 소개한다.
[ 이 책에서 다루는 내용 ]
■ 고가용성을 지닌 분산 HBase 클러스터를 설치하고 클라이언트 API나 맵리듀스(MapReduce) 잡을 이용해 데이터를 로드한다.
■ HBase 셸 또는 SQL 유사 질의 언어를 이용한 하이브(Hive)를 사용해 HBase의 데이터를 액세스한다.
■ HBase 테이블의 데이터뿐만 아니라 데이터의 분포까지 백업하고 복구한다. 그리고 서로 다른 HBase 클러스터 사이에 데이터를 옮기고 복사한다.
■ 커널 설정과, JVM GC, 하둡, HBase 설정을 튜닝해 최대의 성능을 얻는다.
■ 문제해결 툴을 사용해 HBase를 사용하며 자주 발생하는 문제를 해결한다.
■ 읽기 또는 쓰기가 많은 클러스터를 튜닝하기 위한 고급 설정과 튜닝 방법을 소개한다.
[ 이 책의 대상 독자 ]
이 책은 HBase 관리자, 개발자를 위한 책이며, 하둡 관리자에게도 도움이 될 것이다. HBase에 대한 경험은 필요치 않으나 하둡과 맵리듀스에 대한 기본적인 이해는 필요하다.
[ 이 책의 구성 ]
1장, HBase 클러스터 설치: 1장에서는 HBase 클러스터를 셋팅하는 방법을 설명한다. 기본적인 스탠드얼론 HBase 인스턴스를 구축하는 것에서부터 아마존 EC2에 분산, 고가용성 HBase 클러스터를 설치하는 것까지 다룬다.
2장, 데이터 마이그레이션: 2장에서는 우선, HBase의 Put API를 사용해 MySQL에서 HBase로 데이터를 임포트하는 간단한 작업에 대해 설명한다. 그 후, TSV 데이터 파일을 로드하는 importtsv와 벌크 로드 툴의 사용법을 설명한다. 또한 맵리듀스 샘플을 사용해 다른 파일 포맷에서 데이터를 임포트하는 방법도 소개할 것이다. 여기서는 HBase 테이블에 데이터를 바로 적재하는 것과 하둡 분산 파일 시스템(HDFS)에 HFile 포맷 파일을 작성하는 방법도 다룬다. 그리고 마지막으로 HBase에 데이터를 적재하기 전에 영역을 미리 생성하는 방법을 설명한다.
2장에는 자바로 작성된 예제가 여러 개 있다. 독자가 자바의 기초적인 사용방법을 알고 있다고 가정하며 예제의 샘플 자바 코드를 컴파일하고 패키지화하는 방법은 다루지 않았다.
3장, 관리 도구 사용 방법: 3장에서는 HBase 웹 UI, HBase 셸, HBase hbck 등의 여러 가지 관리 툴의 사용법을 설명한다. 툴의 목적과 특정 작업을 해결하기 위한 툴의 사용법을 설명한다.
4장, HBase 데이터 백업과 복구: 4장에서는 HBase 데이터를 백업하는 다양한 방법을 설명하고, 각 방법의 장단점과 데이터셋의 크기, 자원, 요구사항에 따라 어떤 방법을 선택해야 하는지 설명한다.
5장, 모니터링과 진단: 5장에서는 Ganglia, OpenRSDB, Nagios 등의 툴을 사용해 HBase 클러스터를 모니터하고 진단하는 방법을 설명한다. 먼저 HBase 테이블의 디스크 사용량을 확인하는 방법부터 소개한다. Ganglia를 설치하고 HBase를 모니터하도록 설정하고 Ganglia 그래프의 사용방법을 보여줄 것이다. 또한 OpenTSDB도 설치하는데, OpenTSDB는 Ganglia와 비슷하지만 HBase를 사용하기 때문에 좀더 확장성이 있다.
Nagios를 설치해 HBase 관련 데몬의 상태, 하둡/HBase 로그, HBase 일관성 상태, HDFS의 상태와 사용량 등을 체크할 것이다.
마지막으로 핫 스팟 영역 이슈를 진단하고 고치는 방법을 설명한다.
6장, 관리 유지와 보안: 6장에서 소개되는 처음의 여섯 개의 예제에서는 결함을 찾고 고치는 작업, 클러스터 크기 변경, 설정 변경 등과 같은 여러 가지 HBase 관리 작업에 대해 배울 것이다.
6장에서는 보안 관련 이슈들도 살펴본다. 마지막 세 개의 예제에서는 커버로스(Kerberos)를 설치하고 이를 이용해 HDFS 보안을 설정하는 방법과 마지막으로 HBase 클라이언트 접근을 설정하는 방법을 다룬다.
7장, 문제 해결: 7장에서는 여러 가지 자주 부딪히는 문제들에 대해 살펴본다. 각 이슈들의 에러 메시지를 설명하고, 문제의 원인과 툴을 사용해 해결하는 방법을 설명한다.
8장, 기본 성능 튜닝: 8장에서는 좀더 좋은 성능을 얻기 위한 HBase 튜닝 방법을 설명한다. 우리는 또한 하둡 설정, JVM 가비지 콜렉션, OS 커널 파라미터와 같은 튜닝 포인트를 조절하는 방법도 설명한다.
9장, 고급 설정과 튜닝: 9장은 이 책에서 두 번째 성능 튜닝과 관련된 장이다. 8장에서는 HBase의 전반적인 성능 향상을 위한, 하둡 그리고 OS 설정, 자바, HBase 자체를 튜닝하는 방법을 설명했다. 이들은 많은 경우에 적용할 수 있는 일반적인 방법이다. 9장에서는 좀더 특수한 케이스를 다룬다. 그 중에서는 쓰기가 많은 클러스터에 특화되거나 클러스터의 읽기 성능 개선을 목표로 하는 방법들도 있다.
목차
목차
- 1장 HBase 클러스터 설치
- 소개
- 빠르게 시작하기
- 아마존 EC2 사용하기
- 하둡 설치
- 주키퍼 설치
- 커널 설정 변경
- HBase 설치
- 기본 하둡/주키퍼/HBase 설정
- 다중 고가용성 마스터 셋팅
- 2장 데이터 마이그레이션
- 소개
- 단일 클라이언트를 사용한 MySQL 데이터 임포트
- 벌크 로드 툴을 사용한 TSV 파일 임포트
- 맵리듀스를 사용한 데이터 임포트
- HBase에 데이터를 옮기기 전에 리전 생성하기
- 3장 관리 도구 사용 방법
- 소개
- HBase 마스터 웹 UI
- HBase 셸을 사용한 테이블 관리 방법
- HBase 셸을 사용한 HBase 데이터 액세스 방법
- HBase 셸을 사용한 클러스터 관리 방법
- HBase 셸에서 자바 메소드를 실행하는 방법
- 로우 카운터
- WAL 툴: 수동으로 WAL을 분할하고 덤프하기
- HFile 툴: HFile의 내용을 텍스트로 보기
- HBase hbck: HBase 클러스터의 일관성consistency 확인
- 하이브를 이용해 HBase 사용하기-SQL 유사 언어를 사용해 HBase에 질의하기
- 4장 HBase 데이터 백업과 복구
- 소개
- distcp를 이용한 풀 셧다운 백업
- CopyTable을 이용한 테이블 간 데이터 복사
- HBase 테이블을 HDFS에 덤프 파일로 익스포트하기
- HDFS 덤프 파일을 임포트해 HBase 데이터 복구하기
- NameNode 메타데이터 백업
- 리전 시작 키 백업
- 클러스터 복제
- 5장 모니터링과 진단
- 소개
- HBase 테이블의 디스크 사용량 보기
- HBase 클러스터 모니터한 Ganglia 설치하기
- OpenTSDB-HBase를 사용한 HBase 클러스터 모니터
- HBase 프로세스 모니터를 한 Nagios 설치
- Nagios를 사용한 하둡/HBase 로그 체크
- 클러스터 상태 보고를 위한 간단한 스크립트
- 핫 리전-쓰기 진단
- 6장 관리 유지와 보안
- 소개
- HBase RPC DEBUG 레벨 로깅
- 그레이스풀 노드 제거
- 클러스터에 노드 추가
- 롤링 재시작
- 간단한 HBase 프로세스 관리 스크립트
- 간단한 배치 스크립트
- 하둡과 HBase를 위한 커버로스 인증
- 커버로스를 사용한 HDFS 보안 설정
- HBase 보안 설정
- 7장 문제 해결
- 소개
- 문제 해결 툴
- XceiverCount 에러 처리
- ‘too many open files’ 에러 처리
- ‘unable to create new native thread’ 에러 처리
- ‘HBase ignores HDFS client configuration’ 이슈 처리
- 주키퍼 클라이언트 접속 에러 처리
- 주키퍼 세션 만료 에러 처리
- EC2에서의 HBase 시작 에러 처리
- 8장 기본 성능 튜닝
- 소개
- 디스크 I/O를 분산하도록 하둡 설정하기
- 하둡의 랙을 인식을 위한 네트워크 토폴로지 스크립트
- noatime과 nodiratime을 사용한 디스크 마운트
- 스왑을 막기 위해 vm.swappiness를 0으로 설정
- 자바 GC와 HBase 힙 설정
- 압축 사용
- 컴팩션 관리
- 리전 분할 관리
- 9장 고급 설정과 튜닝
- 소개
- YCSB를 사용한 HBase 클러스터 벤치마킹
- 리전 서버 핸들러 개수 증가
- 사용자가 작성한 알고리즘으로 리전 미리 생성하기
- 쓰기 연산이 많은 클러스터에서 업데이트 대기 피하기
- 멤스토어의 메모리 크기 튜닝
- 낮은 지연 시간 시스템의 클라이언트 튜닝
- 컬럼 패밀리의 블록 캐시 설정
- 읽기 연산이 많은 클러스터의 블록 캐시 크기 증가
- 클라이언트 측 스캐너 설정
- 탐색 성능 향상을 위한 블록 크기 튜닝
도서 오류 신고
정오표
[ p45 1행, 1번 1행, 2번 코드 1행, 2행, 3번 코드 1행, 2행, p46 1행, 2행, 3행, p51 4번 코드 2행, p52 14행, p53 3행, p54 세 번째 문단 2행, p383 왼쪽 열 3행 ]
ZooKeeper → zookeeper
[ p52 8번 코드 2행 ]
hadoop@master1$ rm -i $HBASE_HOME/lib/ZooKeeper-*.jar
→ hadoop@master1$ rm -i $HBASE_HOME/lib/zookeeper-*.jar
[ p56 6번 코드 1행 ]
hBASE-site.xml → hbase-site.xml
[ p77 맨 아래 행 ]
HTableconnectHBase → HTable connectHBase
[ p178 8번 코드 2행 ]
scan ' reptable1' → scan 'reptable1'
ZooKeeper → zookeeper
[ p52 8번 코드 2행 ]
hadoop@master1$ rm -i $HBASE_HOME/lib/ZooKeeper-*.jar
→ hadoop@master1$ rm -i $HBASE_HOME/lib/zookeeper-*.jar
[ p56 6번 코드 1행 ]
hBASE-site.xml → hbase-site.xml
[ p77 맨 아래 행 ]
HTableconnectHBase → HTable connectHBase
[ p178 8번 코드 2행 ]
scan ' reptable1' → scan 'reptable1'