책 소개
여전히 전통적인 관계형 데이터베이스(RDBMS)는 많은 곳에서 쓰고 있지만, 요즘 가장 핫한 IT 기업들 중 NoSQL을 사용하지 않는 기업은 거의 없다고 해도 과언이 아니다. 이전에는 상상도 할 수 없었던 어마어마한 양의 데이터가 쌓이고 있는 지금 빅데이터와 NoSQL은 오늘날은 대표하는 키워드들이라고도 볼 수 있다. 카산드라(Cassandra)는 페이스북에서 직접 만든 NoSQL 데이터베이스의 대표적인 한 예로, 넷플릭스(Netflix)와 트위터 등에서도 활용하는 것으로 알려져 있다. 이 책에서는 풍부한 예제들을 통해, 기본적으로 카산드라를 설치하고 구성하는 방법부터, 카산드라의 성능을 최적화하고 분산 처리하는 방법까지 매우 광범위한 내용을 다룬다. 독자들은 이 책을 통해 NoSQL 데이터베이스 및 분산처리에 대한 기본적인 지식과 더불어 카산드라의 매우 다양한 모습을 재미있게 배울 수 있을 것이다.
[ 소개 ]
대규모의 아파치 카산드라 데이터베이스를 설계하고 최적화하는 데 필요한 150가지 이상의 예제들이 제공된다.
이 책에서는 카산드라의 기능들을 활용하는 방법과 카산드라의 성능을 향상시키는 방법을 다루는 다양한 예제들이 제공된다. 이러한 예제들은 카산드라를 처음 설치하고 구성하는 방법부터 매우 복잡한 다수의 데이터센터를 설치하는 방법까지 모두 포괄한다. 이 책에서는 예제라는 형식을 이용하여 카산드라의 기능을 이용하고 최적화하는 방법들을 매우 간결하게 다룬다.
[ 이 책에서 다루는 내용 ]
■ 카산드라의 커맨드라인 인터페이스 이용하기
■ 카산드라에 있는 데이터를 이용하는 프로그램 만들기
■ 카산드라의 성능을 향상시키기 위한 설정 및 구성환경
■ 저장공간 활용과 접근성을 극대화할 수 있도록 데이터 모델링하기
■ 일관성(Consistency)을 조절하여 데이터 액세스 최적화하기
■ 하나 혹은 여러 개의 데이터센터에서 카산드라 사용하기
■ 카산드라의 성능 모니터링하기
■ 노드를 추가하거나 제거하며 클러스터 관리하기
[ 이 책의 대상 독자 ]
이 책은 카산드라의 고성능의 확장 가능한 데이터 스토리지에 관심이 있는 관리자, 개발자, 그리고 데이터 아키텍트를 위한 책이다. 독자들은 대부분, 데이터베이스 기술과 여러 개의 노드가 달려있는 컴퓨터 클러스터와 높은 가용성을 보장하는 솔루션을 경험해 보았을 것이다.
[ 이 책의 구성 ]
1장. 시작하기: 이 장에서는 카산드라를 간략히 둘러본다. 설치 예제에서는 카산드라를 다운로드하고 싱글 인스턴스로 설치하거나 혹은 여러 인스턴스 클러스터를 시뮬레이팅하는 방법을 알아본다. 트러블슈팅 예제에서는 카산드라를 돌릴 때 디버깅 정보를 포함시켜 실행시키는 방법과 관리 도구를 사용하는 방법을 알아본다. 또한, 엔드 유저가 카산드라에 접근 할 수 있도록 하는 커맨드라인 툴 등도 소개한다.
2장. 커맨드라인 인터페이스: 이 장은 카산드라의 커맨드라인 인터페이스에 관한 예제들을 다룬다. 각 예제들은 키 스페이스, 칼럼, 캐쉬 세팅 등과 같은 메타데이터를 조작하기 위해 CLI가 어떻게 사용될 수 있는지 보여준다. 이와 함께 CLI로 데이터를 가져오고 변경하며 검색하는 방법을 배울 수 있다.
3장. API: 카산드라는 데이터에 접근하고 이를 삽입할 수 있는 API를 제공한다. 이 장에서는 데이터를 삽입하고, 가져오고, 삭제하고, 범위 스캔을 할 수 있는 방법을 보여준다. 또한 배치 프로그램에 사용되는 배치 코드 등을 설명한다.
4장. 성능 튜닝: 카산드라는 여러가지 설정이 가능하며, 하드웨어의 구성과 시스템 레벨에서 튜닝을 하는 것이 성능에 영향을 줄 수 있다. 여기서는 여러 환경설정 옵션을 통해 성능을 최적화하는 방법을 알아본다.
5장. 카산드라에서의 일관성, 가용성, 파티션 허용: 카산드라는 여러 개의 노드에 데이터를 저장하고 복제하기 위해 처음부터 새로 만들어진 프로젝트다. 이 장에서는 일관성 레벨을 튜닝하고 읽기 수리(read repair) 같은 기능들을 설정하는 방법을 알아본다. 이러한 예제를 통해 네트워크에 문제가 생기는 등의 상황에서도 가용성을 지킬 수 있는 방법을 알아본다.
6장. 스키마 디자인: 카산드라의 데이터 모델은 방대한 양의 데이터를 여러 개의 노드에 저장할 수 있도록 디자인되었다. 이 장에서는 주로 맞닥뜨리게 되는 저장공간 문제를 카산드라를 사용해서 해결하는 방법을 보여준다. 여기서는 데이터를 직렬화하고, 큰 데이터와 타임 시리즈, 정규화되었거나 비정규화한 데이터를 저장하는 방법을 소개한다.
7장. 관리: 카산드라는 노드를 리드타임 없이 클러스터에 넣거나 뺄 수 있는 것을 가능하게 한다. 이 장에서는 노드를 추가하거나, 옮기거나, 제거하는 것과 데이터를 백업하고 복원하는 관리 테크닉을 배우게 된다.
8장. 다수의 데이터센터 사용하기: 카산드라는 노드들이 로컬 네트워크에 배포되어 있거나 지리적으로 서로 멀리 떨어져 있을 때에도 잘 동작할 수 있도록 디자인되어있다. 이 장에서는 여러 개의 데이터센터가 있을 때 카산드라가 동작하는 방식을 설정해 최적화하는 방법을 알아본다.
9장. 코딩과 내부구조: 이 장에서는 카산드라를 소스에서부터 컴파일하기, 카산드라에 사용할 수 있는 커스텀 타입 만들기, JSON 추출 툴 수정하기 등 통상적인 API 접근에서 벗어난 방법을 알아본다.
10장. 라이브러리와 애플리케이션: 카산드라를 위한 여러 라이브러리와 어플리케이션이 존재한다. 이 장에서는 프로그래밍을 쉽게 해주는 하이 레벨 클라이언트 헥토르(Hector)와 오브젝트 매핑 툴 쿤데라(Kundera) 등을 소개한다. 또한 이 장에서는 풀 텍스트 검색엔진 솔란드라(Solandra) 등, 카산드라를 사용해 만들어진 프로그램을 설치하고 사용하는 방법을 보여준다.
11장. 하둡과 카산드라: 하둡은 높은 속도와 큰 공간을 사용할 수 있도록 하는 분산 파일 시스템 HDFS와 클러스터에서 큰 데이터 셋을 처리할 수 있게 하는 맵리듀스(MapReduce)를 합친 프레임워크다. 이 장에서는 하둡과 카산드라를 각각 따로, 혹은 공통의 하드웨어에 설치하는 방법에 대해서 알아본다. 여기서는 카산드라를 맵리듀스의 인풋 혹은 아웃풋으로 사용하는 방법과, 데이터 개수를 세거나 합치는 등의 하둡 내에서 카산드라로 할 수 있는 일들에 대해 알아본다.
12장. 성능 통계 수집 및 분석: 카산드라와 운영체제로부터 성능 통계 데이터를 모으는 방법을 알아본다. 여기서는 이러한 정보를 모으고 화면에 표시하는 방법과, 이를 활용해 카산드라 서버를 튜닝하는 방법을 알아본다.
13장. 카산드라 서버 모니터링: 이 장에서는 카산드라의 현재 성능에 대해 알아볼 수 있는 툴을 설치하고 사용하는 방법을 알아본다. 또한 로그 이벤트를 하나의 중앙 서버로 집합시키고, 위험한 상황에 대비해 로그를 모니터링하는 법에 대하여도 알아본다.
[ 소개 ]
대규모의 아파치 카산드라 데이터베이스를 설계하고 최적화하는 데 필요한 150가지 이상의 예제들이 제공된다.
이 책에서는 카산드라의 기능들을 활용하는 방법과 카산드라의 성능을 향상시키는 방법을 다루는 다양한 예제들이 제공된다. 이러한 예제들은 카산드라를 처음 설치하고 구성하는 방법부터 매우 복잡한 다수의 데이터센터를 설치하는 방법까지 모두 포괄한다. 이 책에서는 예제라는 형식을 이용하여 카산드라의 기능을 이용하고 최적화하는 방법들을 매우 간결하게 다룬다.
[ 이 책에서 다루는 내용 ]
■ 카산드라의 커맨드라인 인터페이스 이용하기
■ 카산드라에 있는 데이터를 이용하는 프로그램 만들기
■ 카산드라의 성능을 향상시키기 위한 설정 및 구성환경
■ 저장공간 활용과 접근성을 극대화할 수 있도록 데이터 모델링하기
■ 일관성(Consistency)을 조절하여 데이터 액세스 최적화하기
■ 하나 혹은 여러 개의 데이터센터에서 카산드라 사용하기
■ 카산드라의 성능 모니터링하기
■ 노드를 추가하거나 제거하며 클러스터 관리하기
[ 이 책의 대상 독자 ]
이 책은 카산드라의 고성능의 확장 가능한 데이터 스토리지에 관심이 있는 관리자, 개발자, 그리고 데이터 아키텍트를 위한 책이다. 독자들은 대부분, 데이터베이스 기술과 여러 개의 노드가 달려있는 컴퓨터 클러스터와 높은 가용성을 보장하는 솔루션을 경험해 보았을 것이다.
[ 이 책의 구성 ]
1장. 시작하기: 이 장에서는 카산드라를 간략히 둘러본다. 설치 예제에서는 카산드라를 다운로드하고 싱글 인스턴스로 설치하거나 혹은 여러 인스턴스 클러스터를 시뮬레이팅하는 방법을 알아본다. 트러블슈팅 예제에서는 카산드라를 돌릴 때 디버깅 정보를 포함시켜 실행시키는 방법과 관리 도구를 사용하는 방법을 알아본다. 또한, 엔드 유저가 카산드라에 접근 할 수 있도록 하는 커맨드라인 툴 등도 소개한다.
2장. 커맨드라인 인터페이스: 이 장은 카산드라의 커맨드라인 인터페이스에 관한 예제들을 다룬다. 각 예제들은 키 스페이스, 칼럼, 캐쉬 세팅 등과 같은 메타데이터를 조작하기 위해 CLI가 어떻게 사용될 수 있는지 보여준다. 이와 함께 CLI로 데이터를 가져오고 변경하며 검색하는 방법을 배울 수 있다.
3장. API: 카산드라는 데이터에 접근하고 이를 삽입할 수 있는 API를 제공한다. 이 장에서는 데이터를 삽입하고, 가져오고, 삭제하고, 범위 스캔을 할 수 있는 방법을 보여준다. 또한 배치 프로그램에 사용되는 배치 코드 등을 설명한다.
4장. 성능 튜닝: 카산드라는 여러가지 설정이 가능하며, 하드웨어의 구성과 시스템 레벨에서 튜닝을 하는 것이 성능에 영향을 줄 수 있다. 여기서는 여러 환경설정 옵션을 통해 성능을 최적화하는 방법을 알아본다.
5장. 카산드라에서의 일관성, 가용성, 파티션 허용: 카산드라는 여러 개의 노드에 데이터를 저장하고 복제하기 위해 처음부터 새로 만들어진 프로젝트다. 이 장에서는 일관성 레벨을 튜닝하고 읽기 수리(read repair) 같은 기능들을 설정하는 방법을 알아본다. 이러한 예제를 통해 네트워크에 문제가 생기는 등의 상황에서도 가용성을 지킬 수 있는 방법을 알아본다.
6장. 스키마 디자인: 카산드라의 데이터 모델은 방대한 양의 데이터를 여러 개의 노드에 저장할 수 있도록 디자인되었다. 이 장에서는 주로 맞닥뜨리게 되는 저장공간 문제를 카산드라를 사용해서 해결하는 방법을 보여준다. 여기서는 데이터를 직렬화하고, 큰 데이터와 타임 시리즈, 정규화되었거나 비정규화한 데이터를 저장하는 방법을 소개한다.
7장. 관리: 카산드라는 노드를 리드타임 없이 클러스터에 넣거나 뺄 수 있는 것을 가능하게 한다. 이 장에서는 노드를 추가하거나, 옮기거나, 제거하는 것과 데이터를 백업하고 복원하는 관리 테크닉을 배우게 된다.
8장. 다수의 데이터센터 사용하기: 카산드라는 노드들이 로컬 네트워크에 배포되어 있거나 지리적으로 서로 멀리 떨어져 있을 때에도 잘 동작할 수 있도록 디자인되어있다. 이 장에서는 여러 개의 데이터센터가 있을 때 카산드라가 동작하는 방식을 설정해 최적화하는 방법을 알아본다.
9장. 코딩과 내부구조: 이 장에서는 카산드라를 소스에서부터 컴파일하기, 카산드라에 사용할 수 있는 커스텀 타입 만들기, JSON 추출 툴 수정하기 등 통상적인 API 접근에서 벗어난 방법을 알아본다.
10장. 라이브러리와 애플리케이션: 카산드라를 위한 여러 라이브러리와 어플리케이션이 존재한다. 이 장에서는 프로그래밍을 쉽게 해주는 하이 레벨 클라이언트 헥토르(Hector)와 오브젝트 매핑 툴 쿤데라(Kundera) 등을 소개한다. 또한 이 장에서는 풀 텍스트 검색엔진 솔란드라(Solandra) 등, 카산드라를 사용해 만들어진 프로그램을 설치하고 사용하는 방법을 보여준다.
11장. 하둡과 카산드라: 하둡은 높은 속도와 큰 공간을 사용할 수 있도록 하는 분산 파일 시스템 HDFS와 클러스터에서 큰 데이터 셋을 처리할 수 있게 하는 맵리듀스(MapReduce)를 합친 프레임워크다. 이 장에서는 하둡과 카산드라를 각각 따로, 혹은 공통의 하드웨어에 설치하는 방법에 대해서 알아본다. 여기서는 카산드라를 맵리듀스의 인풋 혹은 아웃풋으로 사용하는 방법과, 데이터 개수를 세거나 합치는 등의 하둡 내에서 카산드라로 할 수 있는 일들에 대해 알아본다.
12장. 성능 통계 수집 및 분석: 카산드라와 운영체제로부터 성능 통계 데이터를 모으는 방법을 알아본다. 여기서는 이러한 정보를 모으고 화면에 표시하는 방법과, 이를 활용해 카산드라 서버를 튜닝하는 방법을 알아본다.
13장. 카산드라 서버 모니터링: 이 장에서는 카산드라의 현재 성능에 대해 알아볼 수 있는 툴을 설치하고 사용하는 방법을 알아본다. 또한 로그 이벤트를 하나의 중앙 서버로 집합시키고, 위험한 상황에 대비해 로그를 모니터링하는 법에 대하여도 알아본다.
목차
목차
- 1장 시작하기
- 들어가며
- 하나의 노드로 구성된 간단한 카산드라 설치하기
- 커맨드라인을 이용해 테스트 데이터 읽고 쓰기
- 하나의 머신에서 여러 개의 인스턴스 실행하기
- 다중 인스턴스 설치를 스크립트로 처리하기
- 빌드 및 테스트 환경 갖추기
- 디버깅 가능하도록 포어그라운드에서 실행하기
- 임의 파티셔너에 사용할 이상적인 초기 토큰 구하기
- 순서 보존 파티셔너에 사용할 초기 토큰들 선택하기
- 카산드라와 JConsole 이해하기
- SOCKS 프록시를 이용해 JConsole과 연결하기
- 자바와 스리프트로 카산드라에 연결하기
- CLI를 이용하여 카산드라에 연결하기
- 2장 커맨드라인 인터페이스
- CLI에서 키스페이스 생성하기
- CLI에서 컬럼 패밀리 만들기
- 키스페이스 상세 정보 보기
- CLI를 이용하여 데이터 기록하기
- CLI를 이용하여 데이터 읽기
- CLI에서 로우와 컬럼 지우기
- 컬럼 패밀리에 있는 모든 로우의 목록 보기
- 키스페이스와 컬럼 패밀리 삭제하기
- CLI에서 슈퍼 컬럼 다루기
- assume 명령어로 컬럼 이름과 컬럼 값 디코드하기
- 컬럼을 삽입할 때 TTL값 넣기
- CLI 내장 함수들 사용하기
- 컬럼 메타데이터와 컴패러터 사용으로 타입 정하기
- CLI의 일관성 레벨 바꾸기
- CLI에서 도움말 보기
- 파일에서 CLI 명령어 불러오기
- 3장 API
- 들어가며
- 카산드라 서버에 연결하기
- 클라이언트에서 키스페이스와 컬럼 패밀리 생성하기
- MultiGet을 이용하여 라운드 트립과 오버헤드 제한하기
- 임베디드 카산드라 서버를 이용하여 유닛 테스트 작성하기
- 유닛 테스트 전에 데이터 디렉토리 비우기
- 다양한 언어를 위한 스리프트 바인딩 생성 (C++, PHP 등)
- 카산드라 스토리지 프록시, 팻 클라이언트(Fat Client) 사용하기
- 범위 검색을 이용하여 오래된 데이터를 검색하고 삭제하기
- 큰 키에 대해 모든 컬럼 탐색하기
- 컬럼 순서 뒤바꾸기
- 데이터 삽입 성능을 향상시키고 코드를 견고하게 하기 위해 배치 뮤테이션 사용하기
- TTL을 이용하여 자가 탐지 시간이 있는 컬럼 만들기
- 2차 인덱스 이용하기
- 4장 성능 튜닝
- 들어가며
- 운영체제와 배포판 선택하기
- JVM 선택하기
- 커밋 로그 전용 디스크 사용하기
- RAID 레벨 설정하기
- 하드디스크 성능 개선을 위한 파일시스템 최적화
- 키 캐시로 읽기 성능 개선하기
- 로우 캐시로 읽기 성능 개선하기
- 예측 가능한 성능을 위한 스왑 메모리 비활성화
- 시스템 설정을 건드리지 않은 채 카산드라에서만 스왑 메모리 사용하지 않게 하기
- 메모리 맵 디스크 모드 활성화하기
- 쓰기집약적 작업에 맞는 멤테이블 튜닝
- 64비트 아키텍처에서 압축된 포인터 사용으로 메모리 절약하기
- 처리량 증가를 위한 동시접근 읽기와 동시접근 쓰기 튜닝
- 컴팩션 한계값 설정하기
- JVM 멈춤 현상을 최소화하는 가비지 컬렉션 튜닝
- 여러 클라이언트의 연결을 허용하기 위해 동시에 열 수 있는 파일 개수 올리기
- 규모를 확대해서 성능 개선하기
- 서버와 클라이언트에 네트워크 타임 프로토콜 활성화하기
- 5장 카산드라에서의 일관성, 가용성, 파티션 허용
- 들어가며
- 강한 일관성 보장을 위해 공식 이용하기
- 쓰기 작업시 타임스탬프 설정하기
- 힌트 핸드오프 비활성화하기
- 성능 향상을 위해 읽기 수리 확률 조절하기
- 클러스터들 사이에서 같은 스키마 레벨 보장하기
- Quorum에 맞추기 위해 복제 계수 조절하기
- 지연시간이 짧아야 하는 작업을 위해 쓰기 일관성 ONE, 읽기 일관성 ONE 사용하기
- 강한 일관성을 위해 쓰기 일관성 QUORUM, 읽기 일관성 QUORUM 사용하기
- 쓰기 일관성 QUORUM, 읽기 일관성 ONE 두 레벨을 섞어서 사용하기
- 일관성 ALL을 사용하여 가용성보다 일관성을 우위에 두기
- 쓰기 일관성 ANY를 사용하여 일관성보다 가용성을 우위에 두기
- 일관성이 락이나 트랜잭션과 다르다는 것을 보이기
- 6장 스키마 디자인
- 들어가며
- 짧은 컬럼 이름을 사용하여 용량 줄이기
- 작은 인덱스 크기를 위해 데이터를 큰 컬럼으로 직렬화하기
- 시계열 자료를 효과적으로 저장하기
- 중첩 구조 맵을 사용하기 위해서 슈퍼 컬럼 사용하기
- 디스크 용량을 절약하고 성능을 개선하기 위하여 복제 계수 낮추기
- 순서 보존 파티셔너를 사용한 하이브리드 랜덤 파티셔너
- 큰 데이터 저장하기
- 카산드라로 분산 캐싱하기
- 크기가 크거나 자주 접근하지 않는 데이터를 따로 분리된 컬럼 패밀리에 저장하기
- 카산드라에서 에지 그래프 데이터 저장 및 검색하기
- 이차 데이터 정렬 방법과 인덱스 만들기
- 7장 관리
- 가십 통신을 위한 시드 노드 정의하기
- 노드툴 Move: 노드를 특정한 링 위치로 옮기기
- 노드툴 Remove: 정지된 노드 제거하기
- 노드툴 Decommission: 작동중인 노드 제거하기
- 자동 부트스랩을 중지해 노드를 빠르게 추가하기
- 새로운 하드웨어에 데이터 디렉토리 복사하기
- 데이터 복사를 통해 노드 추가하기
- 노드툴 Repair: 안티엔트로피 수리를 언제 사용해야 하는가
- 노드툴 Drain: 업그레이드시 파일 보호하기
- 빠른 툼스톤 cleanup을 위해 gc_grace 낮추기
- 메이저 컴팩션 스케줄링 하기
- 백업을 위해 노드툴 snapshot 사용하기
- 노드툴 clearsnapshot을 이용해 스냅샷 전부 지우기
- 스냅샷으로부터 복원하기
- sstable2json을 이용하여 데이터를 JSON으로 내보내기
- 노드툴 cleanup: 불필요한 데이터 제거하기
- 노드툴 compact: 데이터 조각모음 및 삭제된 데이터 디스크에서 제거하기
- 8장 다수의 데이터센터 사용하기
- 디버깅 환경을 수정하여 읽기가 라우팅되는 위치 알아보기
- IPTable을 이용해서 로컬 환경에서 복잡한 네트워크 시나리오 시뮬레이션 해보기
- RackInferringSnitch에 사용할 IP주소 결정하기
- 다수의 데이터센터에 설치하기 위한 스크립트 작성하기
- 주어진 키에 대해 랙, 데이터센터와 엔드포인트 찾기
- 프로퍼티 파일 스니치를 사용해 임의로 랙과 데이터센터 설정값 명시하기
- JConsole을 사용해 다이나믹 스니치 오류 해결하기
- 다수의 데이터센터 환경에서 Quorum 레벨 사용하기
- Traceroute를 사용해서 네트워크 기기 간 지연 시간 개선하기
- 여러 개의 랙 사용시 스위치간 대역폭 확보하기
- 데이터센터간 지연 시간 개선을 위해 rpc_timeout값 올리기
- 다수 데이터센터 환경에서 CLI를 이용한 일관성 레벨 테스트
- 일관성 레벨 TWO와 THREE 사용해보기
- 네트워크 토폴로지 전략과 임의 파티셔너에 사용하는 이상적인 초기 토큰 지정하기
- 9장 코딩과 내부구조
- 들어가며
- 공통 개발 툴 설치하기
- 소스코드에서 카산드라 빌드하기
- 기본 타입을 서브클래스화하여 새로운 타입 만들기
- 데이터 삽입시 데이터 밸리데이션하기
- IRC와 이메일을 활용해 카산드라 개발자들과 연락하기
- 서브버전의 diff 기능 활용하기
- 패치 명령의 diff 기능 활용하기
- Strings와 od 명령어를 통하여 데이터 파일 검색하기
- Sstable2json 내보내기 유틸리티 커스터마이징
- 메모리 사용량을 낮춰주는 인덱스 인터벌 기간 설정하기
- 불안정한 네트워크를 위하여 phiconvictthreshold 값 올리기
- 카산드라 메이븐 플러그인 사용하기
- 10장 라이브러리와 애플리케이션
- 들어가며
- 벤치마킹을 위한 contrib 스트레스 툴 빌드하기
- Stress 툴을 사용해서 데이터를 삽입하고 읽기
- 야후 클라우드 서빙 벤치마크 실행하기
- 카산드라를 위한 하이레벨 클라이언트 헥토르
- 헥토르를 이용하여 일괄처리하기
- 카산드라와 자바 퍼시스턴스 아키텍처
- 카산드라를 사용하는 텍스트 인덱싱 프로그램 솔란드라 설정하기
- 트랜잭션 잠금을 위한 케이지를 지원하도록 주키퍼 설치하기
- 케이지를 사용하여 원자성을 만족하는 읽기와 쓰기 구현하기
- CLI의 대안책, 그루반드라 사용하기
- 로그산드라를 이용한 검색 가능한 로그 스토리지
- 11장 하둡과 카산드라
- 들어가며
- 임의의 형태의 하둡 클러스터 설치하기
- ColumnFamilyInputFormat을 이용하여 카산드라로부터 데이터를 읽는 맵핑 프로그램
- CassandraOutputFormat을 이용하여 카산드라에 데이터를 쓰는 맵핑 프로그램
- 맵리듀스를 이용하여 카산드라의 입출력을 그룹화하고 카운팅하기
- 카산드라 스토리지 핸들러를 지원하는 하이브 구성하기
- 카산드라 컬럼 패밀리 위에 하이브 테이블 정의하기
- 하이브를 이용하여 두 개의 컬럼 패밀리 조인하기
- 하이브를 이용하여 컬럼의 값을 그룹짓고 그 수를 세기
- 카산드라 노드와 하둡 태스크트래커 함께 이용하기
- 맵리듀스 작업을 위한 ‘섀도우’ 데이터센터 구성하기
- 카산드라, 하둡, 하이브로 구성된 스택인 데이터스택스 브리스크 구성하기
- 12장 성능 통계 수집 및 분석
- 노드툴 tpstats를 이용하여 병목 지점 찾기
- 노드툴 cfstats를 이용하여 컬럼 패밀리 통계 얻기
- CPU 사용량 모니터링
- 읽기/쓰기 그래프를 추가하여 활동 중인 컬럼 패밀리 찾기
- 멤테이블 그래프를 사용하여 멤테이블이 언제, 왜 디스크에 기록되는지 알아보기
- SSTable 개수 그래프화하기
- 디스크 사용량 모니터링 및 성능의 기초선 갖기
- 캐시 그래프를 사용하여 캐시의 유효성 확인하기
- 그래프를 사용하여 컴팩션 모니터링하기
- 노드툴 컴팩션 stats를 사용하여 컴팩션의 진척도 알아보기
- 컬럼 패밀리에 대한 통계 그래프를 통하여 로우 크기의 평균과 최대값 알아보기
- 지연시간 그래프를 사용하여 키를 검색하는 데 드는 시간 측정하기
- 컬럼 패밀리의 시간에 따른 크기 트래킹하기
- 쿼리 지연시간의 분포를 알아보기 위하여 노드툴 cfhistograms 사용하기
- 열려있는 네트워크 연결 트래킹하기
- 13장 카산드라 서버 모니터링
- 들어가며
- Log4j 로그를 중앙 서버로 보내기
- 전체적 성능 파악을 위하여 top 사용하기
- 현재 디스크 성능 파악을 위하여 iostat 사용하기
- 시간에 따른 성능 파악을 위하여 sar 사용하기
- 카산드라 JMX에 접근하기 위하여 JMXTerm 사용하기
- 가비지 컬렉션 이벤트 모니터링
- 병목 지점 판단을 위하여 tpstats 명령 사용하기
- 카산드라를 위한 나기오스 체크 스크립트 작성하기
- 컴팩션 리미트 값을 사용하여 대용량의 로우 주시하기
- IPTraf를 사용하여 네트워크 트래픽 검토하기
- 드랍된 메시지 찾아보기