SlideShare una empresa de Scribd logo
1 de 24
1
Cassandra
Youngki Kim
교육 자료
이 자료는 Cassandra를 상용환경에서 운용하기 위한, 운용자를 위한 교육 자료로
Cassandra 1.1.X를 기준으로 설명한 자료입니다.
2
Day 1. Cassandra 기본 개념 잡기
Day 2.
Cassandra 설치 및 cluster 구성하기
(실습)
Day 3.
Cassandra cluster 관리 및 엔지니어링
(실습)
목차
3
Day 1. Cassandra 기본 개념 잡기
1.Cassandra란?
2.Data model
3.Node
4.Cluster
목차(Day 1)
4
1.Cassandra란
고성능을 보장하면서도, 높은 확장성과 가용성을 원할 때 좋은 선택입니다.
연혁
›Facebook에서 최초로 개발됨
›Facebook에서 Opensource로 개방하여 apache 재단에서 관리됨(2008~)
Big data관련 인프라로 주요 기업에서 채택하여 사용 중임
In use at 1000s of organizations worldwide, including Twitter, Netflix, Cisco, Rackspace,
as well as in government/intelligence, financial services, telecommunications and
logistics
주요 특징
› 수평적 확장이 용이한 Ring 구조의 클러스터 아키텍쳐
› 유연한 데이터 구조 제공
› 아주 빠른 쓰기 속도
› 조절 가능한 consistency level
http://cassandra.apache.org/
Amazon Dynamo
Consistent hashing
Partitioning
Replication
One-hop routing
Google BigTable
Column Families
Memtables
SSTables
5
2.Data model
Column
Name과 value의 짝으로 이루어진 카산드라 데이터 구조의 최소 단위
›예1: 도형)
› 예2: thrift definition)
• struct Column
{ 1: binary name,
2: binary value,
3: i64 timestamp, }
› 예3: JSON 양식의 표현)
• { "name": "emailAddress",
"value": "foo@bar.com",
"timestamp": 123456789 }
- 실제 카산드라에서는 해당 컬럼의 중복이 발생했을 때의 우선권 관리(conflict resolution)를 위해 timestamp라는
field를 함께 관리함
Column 2 Column 3Column 1
6
2.Data model
Row and Row key
Row: 하나 이상의 column들이 순차적으로 저장되는 단위
Row key: Row에 부여하는 unique한 인자 값
›Row key는 column family에만 unique함
• 다른 column family에 같은 값의 row key가 있을 경우 두 column family 간의 relation을 표현
하는 수단이 됨
›예: 도형)
Row 2
(key: YYY)
Row 1
(key: XXX)
7
2.Data model
Column family
비슷한 유형의 데이터(column)을 묶는 컨테이너 형태의 데이터 구조
›RDBMS의 table과 유사한 개념
›예: 도형)
Row 2
(key: YYY)
Row 1
(key: XXX)
Column family
8
Super column family
›연관된 column들을 개념적으로 묶어서 관리하고 싶을 때에 사용하는 column family
Super column
›연관된 column들의 묶음을 정의하는 데이터 구조
예: 도형)
2.Data model
Super column family and Super column
Row 1
(key: XXX)
Super column family
Super column 1 Super column 2
Row 2
(key: XXX)
Super column 1 Super column 2
9
Column family 혹은 super column family의 컨테이너 역할, RDBMS의 database와 유사
복제 계수(Replication factor), 복제 정책(Replica placement)이 설정되는 단위
전체적인 카산드라 데이터 모델 구조
2.Data model
Keyspace
Column
Column family
Row (key)
Column
Column
Row (key) Column
Super
column
Super
column
Super column family
Keyspace
10
2.Data model
Real_System example
Super column family: files
(Keyspace: storageSubsystem)
Column family: Locationinfo
(Keyspace: System)
11
3. Node
데이터 쓰기 프로세스
Cassandra node
1. Commit log에 순차적으로 데이터를 씀
› 순차적 데이터 기록으로 빠른 쓰기 속도 제공
› 서버가 죽어도 commit log로 복구 가능
2. Memtable에 해당 데이터를 적재함
› 빠른 서비스 속도 제공을 위해
3. SSTable에 최종적으로 데이터를 기재함
12
3. Node
데이터 읽기 프로세스
Node CPU
Cassandra node
Client Read request
(row key: AA)
(row key: AA)
(row key: AA) (row key: AA)
1. 클라이언트에서 특정 row key 요청
2. 해당 row key를 가지고 있는
SSTable이나 memtable 추출
› 이 때에 모든 SSTable에 대한
Disk I/O를 만들지 않기 위해
memtable에 bloomfilter라는 index를 둠
3. Timestamp를 기준으로
가장 최신의 데이터를 응답합
13
3. Node
데이터 관리(Compaction)
K1 < Serialized data >
K2 < Serialized data >
K3 < Serialized data >
--
--
--
Sorted
K2 < Serialized data >
K10 < Serialized data >
K30 < Serialized data >
--
--
--
Sorted
K4 < Serialized data >
K5 < Serialized data >
K10 < Serialized data >
--
--
--
Sorted
MERGE SORT
K1 < Serialized data >
K2 < Serialized data >
K3 < Serialized data >
K4 < Serialized data >
K5 < Serialized data >
K10 < Serialized data >
K30 < Serialized data >
Sorted
Data File
D E L E T E D
1. 다수의 SSTable 파일을 하나의
SSTable 파일로 병합함
› 중복되는 row key를 정리해서
데이터 디스크 파일 사이즈를
컴팩트하게 관리함
› Threshold에 이르면 시행됨
14
카산드라의 각 노드의
상태 및 각 상태에 대한
Action을 다음과 SDL로
표현가능함
3. Node
Life Cycle
15
4. Cluster
Life Cycle
카산드라 클러스터는 개별 노드의 집합임
› 같은 cluster name
› 같은 seed node
16
4. Cluster
Token
각 노드는 고유한 값인 token 값을 가지며, 각 노드가 가지고 있는 token 값이 그 노드가 카
산드라 클러스터 내에서 데이터를 분담하는 기준이 됨
›Token은 cassandra가 최초 시작될 때에 설정파일(cassandra.yaml)에 있는 정보로 구동
›재 구동 될때에는 cache 정보를 기준으로 구동됨
›Nodetool로 노드의 token 값을 조정할 수 있음
Token 계산 식
N=클러스터의 전체 노드 개수, i=노드 번호
For(i=0;i++;i<N)
{
Token_for_Node(i)= i * (2**127 / N);
}
예)
How manynodesare in yourcluster?4
token0: 0
token1: 42535295865117307932921825928971026432
token2: 85070591730234615865843651857942052864
token3: 127605887595351923798765477786913079296
17
4. Cluster
데이터가 카산드라 클러스터에 저장되는 방법
<기본 용어 설명>
Keyspace
› Replication Factor: 카산드라 클러스터에 저장되는 원본 포함 복제본 데이터의 개수
› Replica Placement: RF가 1이 상일 때에 복제본을 다른 노드에 저장하는 방식
• Simple Strategy: 토큰을 기준으로 인접한 노드에 저장
• Network Topology Strategy: 카산드라 노드가 네트웍상에 배치된 구조를 고려하여 복사본 저장
Cluster
› Snitch: 카산드라 노드의 배치를 정의함
• Simple Snitch: 모든 노드가 같은 네트웍에 있는 기본 설정
• Rack Inferring Snitch: IP 대역으로 구분
• Property File Snitch: Config File에 명시
› Partitioner: 데이터의 분배 방식
18
<Replication factor=1일 경우>
› 노드 A, B, C로 클러스터가 구성됨
• 노드의 token 값의 오름차순 결과를 기준으로
시계방향으로 노드를 배치한 논리적인
Ring 구조를 이룸
› Row key1 쓰기 요청
• Row key1의 MD5 hash 계산
• Hash 결과 값을 기점으로 시계 방향
으로 이동했을 때에 첫번째 위치한
노드가 해당 데이터를 저장
› Row key2의 쓰기 요청(마찬가지)
노드 D,E,F가 클러스터에 추가될 경우
› 해당 노드의 token값을 기준으로 클러스터에
배치되며 데이터 관리 영역을 분배 받음
<Replication factor=3일 경우>
› 노드가 클러스터를 구성하는 방법은
RF=1일 경우와 동일
› 쓰기 요청된 Row key가 처음 저장되는 노드를
정하는 방식도 RF=1일 경우와 동일
› 차이점은 시계 방향으로 RF=3을 만족시키기 위해
연속된 2개의 노드에 데이터를 추가적으로 기록함
4. Cluster
클러스터에 데이터를 쓰는 방식 설명(animation)
02^127
2^127/2
F
E
D
C
B
A
N=3
h(key2)
h(key1)
• RF:1 or 3
• Partitioner: Random
• Snitch: Simple
• Replica Stragegy: Simple
19
4. Cluster
Consistency level
클라이언트에서 카산드라에 쓰기 혹은 읽기 오퍼레이션을 요청했을 때에, 카산드라가 응답
을 주는 Consistency level에 대한 조절이 가능함
›만약에 RF 3에, 읽기 쓰기 오퍼레이션 모두 QUORUM 옵션을 지정하여 사용 한다면,
•1개의 노드 down까지는 용납 가능함
참고: http://www.datastax.com/docs/1.0/dml/data_consistency
Level 필요한 Node 쓰기 읽기
ONE 1 commit log와
memtable이 성공하
면 클라이언트에 OK
반환
가장 가까운 노드에서 응답이 오면
바로 OK 반환, Read repair 실시
QUORUM (N /2) + 1,
소수점 1자리 내림
QUORUM 숫자의 응답을 받아 최
신 timestamp를 가진 값을 응답
ALL N = replication factor RF 숫자의 응답을 받아, 최신
timestamp를 가진 값을 응답
20
4. Cluster
Repair
Hinted Handoff
› 노드가 일시적으로 죽어 있을 경우나 해당 노드로의 네트웍 다운이 발생한 경우, 있었던
쓰기 오퍼레이션에 대해서 주의 노드에서 로그를 간직했다 노드가 살아났을 때에 재전송
해주는 기능
•현재는 최대 1시간 까지 데이터를 보관함
Anti entropy repair
› 클러스터에 있는 모든 노드의 데이터를 비교하여 최신의 데이터로 업데이트를 해주어 복
잡성을 감소시키는 과정
›Delete mark가 되어있었던 데이터를 실제 정리해줌
›주기적으로 시행되어야함
•자원 소모 및 퍼포먼스 저하가 있음
21
Day 2.
Cassandra 설치 및 cluster 구성하기
(실습)
1. 설치 준비 및 설치
2. 설정 파일 변경
3. 각 노드 구동 및 클러스터 구성
4. 클러스터 확장
5. 노드 제거 및 교체
목차(Day 2)
22
1. 설치 준비 및 설치
<JDK install>
›Java download
›java install(Cent OS 기준)
 <Cassandra install>
›Cassandra download
›Cassandra install
›JNA install
23
1. 설정 파일 변경
cassandra.yaml 변경
›<변경 필요 사항>
›java install(Cent OS 기준)
cassandra.yaml 변경
›Cassandra download
›Cassandra install
›JNA install
Cassandra 관련 설정 파일 셋팅
24
Day 3.
Cassandra cluster 관리 및 엔지니어링
(실습)
1. 개별 노드 백업 및 복원
2. 2 ring 구조 구성 및 크로스 백업 및 복원
3. Nodetool 및 Cassandra-cli 사용
4. Opscenter 사용
5. 벤치마크 테스트 하기
목차(Day 3)

Más contenido relacionado

La actualidad más candente

Redis trouble shooting
Redis trouble shootingRedis trouble shooting
Redis trouble shootingDaeMyung Kang
 
Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조Minchul Jung
 
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형Minchul Jung
 
cassandra overview & spark to cassandra
cassandra overview & spark to cassandra cassandra overview & spark to cassandra
cassandra overview & spark to cassandra SuseongPark
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기beom kyun choi
 
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례NAVER D2
 
[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기NAVER D2
 
[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기NAVER D2
 
AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTI Goo Lee
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기iFunFactory Inc.
 
Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개중선 곽
 
Zoo keeper 소개
Zoo keeper 소개Zoo keeper 소개
Zoo keeper 소개주표 홍
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리흥배 최
 
(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shellJay Park
 
DNS Express
DNS ExpressDNS Express
DNS Expressitian-f5
 
구글의 공룡화
구글의 공룡화구글의 공룡화
구글의 공룡화juhyun
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8HyeonSeok Choi
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)Hyunmin Lee
 

La actualidad más candente (20)

Redis trouble shooting
Redis trouble shootingRedis trouble shooting
Redis trouble shooting
 
Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
 
cassandra overview & spark to cassandra
cassandra overview & spark to cassandra cassandra overview & spark to cassandra
cassandra overview & spark to cassandra
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기
 
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례
 
[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기
 
[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기
 
AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMT
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개
 
Zoo keeper 소개
Zoo keeper 소개Zoo keeper 소개
Zoo keeper 소개
 
주키퍼
주키퍼주키퍼
주키퍼
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리
 
(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell
 
DNS Express
DNS ExpressDNS Express
DNS Express
 
구글의 공룡화
구글의 공룡화구글의 공룡화
구글의 공룡화
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
 

Destacado

자전거로 샌프란시스코를 즐길 여행자를 위한 안내서
자전거로 샌프란시스코를 즐길 여행자를 위한 안내서자전거로 샌프란시스코를 즐길 여행자를 위한 안내서
자전거로 샌프란시스코를 즐길 여행자를 위한 안내서Youngki Kim
 
NoSQL 동향
NoSQL 동향NoSQL 동향
NoSQL 동향NAVER D2
 
Galaxy on the GenomeCloud (Galaxy Community Conference 2014)
Galaxy on the GenomeCloud (Galaxy Community Conference 2014)Galaxy on the GenomeCloud (Galaxy Community Conference 2014)
Galaxy on the GenomeCloud (Galaxy Community Conference 2014)Youngki Kim
 
먹을거리와 공동체운동(우양)요약
먹을거리와 공동체운동(우양)요약먹을거리와 공동체운동(우양)요약
먹을거리와 공동체운동(우양)요약푸드스마일즈 우양
 
공생공소 역사
공생공소 역사공생공소 역사
공생공소 역사연근 배
 
2015년 푸드스마일즈우양 연차보고서
2015년 푸드스마일즈우양 연차보고서2015년 푸드스마일즈우양 연차보고서
2015년 푸드스마일즈우양 연차보고서푸드스마일즈 우양
 
2012 생각하는 청개구리 결과보고
2012 생각하는 청개구리 결과보고2012 생각하는 청개구리 결과보고
2012 생각하는 청개구리 결과보고Bo Ram Han
 
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.KTH, 케이티하이텔
 
Introduction to couchbase
Introduction to couchbaseIntroduction to couchbase
Introduction to couchbaseDipti Borkar
 
농업 빅데이터를 활용한 병해충 발생 예측 모형
농업 빅데이터를 활용한 병해충 발생 예측 모형농업 빅데이터를 활용한 병해충 발생 예측 모형
농업 빅데이터를 활용한 병해충 발생 예측 모형datasciencekorea
 
비즈니스모델 젠 worksheet for Industry
비즈니스모델 젠 worksheet for Industry비즈니스모델 젠 worksheet for Industry
비즈니스모델 젠 worksheet for IndustryThe Innovation Lab
 
비즈니스모델 차별화 전략 (What to Differentiate)
비즈니스모델 차별화 전략 (What to Differentiate)비즈니스모델 차별화 전략 (What to Differentiate)
비즈니스모델 차별화 전략 (What to Differentiate)The Innovation Lab
 
협동조합 비즈니스용 비즈니스모델 Zen 워크시트 (공개용)
협동조합 비즈니스용 비즈니스모델 Zen 워크시트 (공개용)협동조합 비즈니스용 비즈니스모델 Zen 워크시트 (공개용)
협동조합 비즈니스용 비즈니스모델 Zen 워크시트 (공개용)The Innovation Lab
 
Cassandra at Instagram 2016 (Dikang Gu, Facebook) | Cassandra Summit 2016
Cassandra at Instagram 2016 (Dikang Gu, Facebook) | Cassandra Summit 2016Cassandra at Instagram 2016 (Dikang Gu, Facebook) | Cassandra Summit 2016
Cassandra at Instagram 2016 (Dikang Gu, Facebook) | Cassandra Summit 2016DataStax
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)Channy Yun
 
Troubleshooting Cassandra (J.B. Langston, DataStax) | C* Summit 2016
Troubleshooting Cassandra (J.B. Langston, DataStax) | C* Summit 2016Troubleshooting Cassandra (J.B. Langston, DataStax) | C* Summit 2016
Troubleshooting Cassandra (J.B. Langston, DataStax) | C* Summit 2016DataStax
 
Cassandra 2.0 and timeseries
Cassandra 2.0 and timeseriesCassandra 2.0 and timeseries
Cassandra 2.0 and timeseriesPatrick McFadin
 

Destacado (20)

자전거로 샌프란시스코를 즐길 여행자를 위한 안내서
자전거로 샌프란시스코를 즐길 여행자를 위한 안내서자전거로 샌프란시스코를 즐길 여행자를 위한 안내서
자전거로 샌프란시스코를 즐길 여행자를 위한 안내서
 
NoSQL 동향
NoSQL 동향NoSQL 동향
NoSQL 동향
 
Galaxy on the GenomeCloud (Galaxy Community Conference 2014)
Galaxy on the GenomeCloud (Galaxy Community Conference 2014)Galaxy on the GenomeCloud (Galaxy Community Conference 2014)
Galaxy on the GenomeCloud (Galaxy Community Conference 2014)
 
우양직원서로배움_인디음악세계
우양직원서로배움_인디음악세계우양직원서로배움_인디음악세계
우양직원서로배움_인디음악세계
 
먹을거리와 공동체운동(우양)요약
먹을거리와 공동체운동(우양)요약먹을거리와 공동체운동(우양)요약
먹을거리와 공동체운동(우양)요약
 
공생공소 역사
공생공소 역사공생공소 역사
공생공소 역사
 
2015년 푸드스마일즈우양 연차보고서
2015년 푸드스마일즈우양 연차보고서2015년 푸드스마일즈우양 연차보고서
2015년 푸드스마일즈우양 연차보고서
 
2012 생각하는 청개구리 결과보고
2012 생각하는 청개구리 결과보고2012 생각하는 청개구리 결과보고
2012 생각하는 청개구리 결과보고
 
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
 
Big data
Big dataBig data
Big data
 
Cassandra
CassandraCassandra
Cassandra
 
Introduction to couchbase
Introduction to couchbaseIntroduction to couchbase
Introduction to couchbase
 
농업 빅데이터를 활용한 병해충 발생 예측 모형
농업 빅데이터를 활용한 병해충 발생 예측 모형농업 빅데이터를 활용한 병해충 발생 예측 모형
농업 빅데이터를 활용한 병해충 발생 예측 모형
 
비즈니스모델 젠 worksheet for Industry
비즈니스모델 젠 worksheet for Industry비즈니스모델 젠 worksheet for Industry
비즈니스모델 젠 worksheet for Industry
 
비즈니스모델 차별화 전략 (What to Differentiate)
비즈니스모델 차별화 전략 (What to Differentiate)비즈니스모델 차별화 전략 (What to Differentiate)
비즈니스모델 차별화 전략 (What to Differentiate)
 
협동조합 비즈니스용 비즈니스모델 Zen 워크시트 (공개용)
협동조합 비즈니스용 비즈니스모델 Zen 워크시트 (공개용)협동조합 비즈니스용 비즈니스모델 Zen 워크시트 (공개용)
협동조합 비즈니스용 비즈니스모델 Zen 워크시트 (공개용)
 
Cassandra at Instagram 2016 (Dikang Gu, Facebook) | Cassandra Summit 2016
Cassandra at Instagram 2016 (Dikang Gu, Facebook) | Cassandra Summit 2016Cassandra at Instagram 2016 (Dikang Gu, Facebook) | Cassandra Summit 2016
Cassandra at Instagram 2016 (Dikang Gu, Facebook) | Cassandra Summit 2016
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)
 
Troubleshooting Cassandra (J.B. Langston, DataStax) | C* Summit 2016
Troubleshooting Cassandra (J.B. Langston, DataStax) | C* Summit 2016Troubleshooting Cassandra (J.B. Langston, DataStax) | C* Summit 2016
Troubleshooting Cassandra (J.B. Langston, DataStax) | C* Summit 2016
 
Cassandra 2.0 and timeseries
Cassandra 2.0 and timeseriesCassandra 2.0 and timeseries
Cassandra 2.0 and timeseries
 

Similar a Cassandra education material

Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
Backend Master | 2.1.4 Cache - Redis Clustering part.1
Backend Master | 2.1.4 Cache - Redis Clustering part.1Backend Master | 2.1.4 Cache - Redis Clustering part.1
Backend Master | 2.1.4 Cache - Redis Clustering part.1Kyunghun Jeon
 
No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용YOUNGGYU CHUN
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAmazon Web Services Korea
 
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항Minchul Jung
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-uploadDong-Hwa jung
 
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기Amazon Web Services Korea
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)I Goo Lee.
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)Amazon Web Services Korea
 
CAST:Enhancing Code Summarization with Hierarchical Splitting and Reconstruct...
CAST:Enhancing Code Summarization with Hierarchical Splitting and Reconstruct...CAST:Enhancing Code Summarization with Hierarchical Splitting and Reconstruct...
CAST:Enhancing Code Summarization with Hierarchical Splitting and Reconstruct...taeseon ryu
 
AWS CLOUD 2017 - Amazon Aurora를 통한 고성능 데이터베이스 운용하기 (박선용 솔루션즈 아키텍트)
AWS CLOUD 2017 - Amazon Aurora를 통한 고성능 데이터베이스 운용하기 (박선용 솔루션즈 아키텍트)AWS CLOUD 2017 - Amazon Aurora를 통한 고성능 데이터베이스 운용하기 (박선용 솔루션즈 아키텍트)
AWS CLOUD 2017 - Amazon Aurora를 통한 고성능 데이터베이스 운용하기 (박선용 솔루션즈 아키텍트)Amazon Web Services Korea
 
What’s Evolving in the Elastic Stack
What’s Evolving in the Elastic StackWhat’s Evolving in the Elastic Stack
What’s Evolving in the Elastic StackElasticsearch
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
Dragon flow and tricircle
Dragon flow and tricircleDragon flow and tricircle
Dragon flow and tricircleYongyoon Shin
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arcNAVER D2
 
쿠버네티스의 이해 #1
쿠버네티스의 이해 #1쿠버네티스의 이해 #1
쿠버네티스의 이해 #1상욱 송
 
Cloudera Impala 1.0
Cloudera Impala 1.0Cloudera Impala 1.0
Cloudera Impala 1.0Minwoo Kim
 
Fundamental of ELK Stack
Fundamental of ELK StackFundamental of ELK Stack
Fundamental of ELK Stack주표 홍
 

Similar a Cassandra education material (20)

Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
 
Backend Master | 2.1.4 Cache - Redis Clustering part.1
Backend Master | 2.1.4 Cache - Redis Clustering part.1Backend Master | 2.1.4 Cache - Redis Clustering part.1
Backend Master | 2.1.4 Cache - Redis Clustering part.1
 
No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep Dive
 
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
 
10장
10장10장
10장
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-upload
 
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
 
CAST:Enhancing Code Summarization with Hierarchical Splitting and Reconstruct...
CAST:Enhancing Code Summarization with Hierarchical Splitting and Reconstruct...CAST:Enhancing Code Summarization with Hierarchical Splitting and Reconstruct...
CAST:Enhancing Code Summarization with Hierarchical Splitting and Reconstruct...
 
AWS CLOUD 2017 - Amazon Aurora를 통한 고성능 데이터베이스 운용하기 (박선용 솔루션즈 아키텍트)
AWS CLOUD 2017 - Amazon Aurora를 통한 고성능 데이터베이스 운용하기 (박선용 솔루션즈 아키텍트)AWS CLOUD 2017 - Amazon Aurora를 통한 고성능 데이터베이스 운용하기 (박선용 솔루션즈 아키텍트)
AWS CLOUD 2017 - Amazon Aurora를 통한 고성능 데이터베이스 운용하기 (박선용 솔루션즈 아키텍트)
 
What’s Evolving in the Elastic Stack
What’s Evolving in the Elastic StackWhat’s Evolving in the Elastic Stack
What’s Evolving in the Elastic Stack
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Dragon flow and tricircle
Dragon flow and tricircleDragon flow and tricircle
Dragon flow and tricircle
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
 
쿠버네티스의 이해 #1
쿠버네티스의 이해 #1쿠버네티스의 이해 #1
쿠버네티스의 이해 #1
 
Cloudera Impala 1.0
Cloudera Impala 1.0Cloudera Impala 1.0
Cloudera Impala 1.0
 
Fundamental of ELK Stack
Fundamental of ELK StackFundamental of ELK Stack
Fundamental of ELK Stack
 

Cassandra education material

  • 1. 1 Cassandra Youngki Kim 교육 자료 이 자료는 Cassandra를 상용환경에서 운용하기 위한, 운용자를 위한 교육 자료로 Cassandra 1.1.X를 기준으로 설명한 자료입니다.
  • 2. 2 Day 1. Cassandra 기본 개념 잡기 Day 2. Cassandra 설치 및 cluster 구성하기 (실습) Day 3. Cassandra cluster 관리 및 엔지니어링 (실습) 목차
  • 3. 3 Day 1. Cassandra 기본 개념 잡기 1.Cassandra란? 2.Data model 3.Node 4.Cluster 목차(Day 1)
  • 4. 4 1.Cassandra란 고성능을 보장하면서도, 높은 확장성과 가용성을 원할 때 좋은 선택입니다. 연혁 ›Facebook에서 최초로 개발됨 ›Facebook에서 Opensource로 개방하여 apache 재단에서 관리됨(2008~) Big data관련 인프라로 주요 기업에서 채택하여 사용 중임 In use at 1000s of organizations worldwide, including Twitter, Netflix, Cisco, Rackspace, as well as in government/intelligence, financial services, telecommunications and logistics 주요 특징 › 수평적 확장이 용이한 Ring 구조의 클러스터 아키텍쳐 › 유연한 데이터 구조 제공 › 아주 빠른 쓰기 속도 › 조절 가능한 consistency level http://cassandra.apache.org/ Amazon Dynamo Consistent hashing Partitioning Replication One-hop routing Google BigTable Column Families Memtables SSTables
  • 5. 5 2.Data model Column Name과 value의 짝으로 이루어진 카산드라 데이터 구조의 최소 단위 ›예1: 도형) › 예2: thrift definition) • struct Column { 1: binary name, 2: binary value, 3: i64 timestamp, } › 예3: JSON 양식의 표현) • { "name": "emailAddress", "value": "foo@bar.com", "timestamp": 123456789 } - 실제 카산드라에서는 해당 컬럼의 중복이 발생했을 때의 우선권 관리(conflict resolution)를 위해 timestamp라는 field를 함께 관리함 Column 2 Column 3Column 1
  • 6. 6 2.Data model Row and Row key Row: 하나 이상의 column들이 순차적으로 저장되는 단위 Row key: Row에 부여하는 unique한 인자 값 ›Row key는 column family에만 unique함 • 다른 column family에 같은 값의 row key가 있을 경우 두 column family 간의 relation을 표현 하는 수단이 됨 ›예: 도형) Row 2 (key: YYY) Row 1 (key: XXX)
  • 7. 7 2.Data model Column family 비슷한 유형의 데이터(column)을 묶는 컨테이너 형태의 데이터 구조 ›RDBMS의 table과 유사한 개념 ›예: 도형) Row 2 (key: YYY) Row 1 (key: XXX) Column family
  • 8. 8 Super column family ›연관된 column들을 개념적으로 묶어서 관리하고 싶을 때에 사용하는 column family Super column ›연관된 column들의 묶음을 정의하는 데이터 구조 예: 도형) 2.Data model Super column family and Super column Row 1 (key: XXX) Super column family Super column 1 Super column 2 Row 2 (key: XXX) Super column 1 Super column 2
  • 9. 9 Column family 혹은 super column family의 컨테이너 역할, RDBMS의 database와 유사 복제 계수(Replication factor), 복제 정책(Replica placement)이 설정되는 단위 전체적인 카산드라 데이터 모델 구조 2.Data model Keyspace Column Column family Row (key) Column Column Row (key) Column Super column Super column Super column family Keyspace
  • 10. 10 2.Data model Real_System example Super column family: files (Keyspace: storageSubsystem) Column family: Locationinfo (Keyspace: System)
  • 11. 11 3. Node 데이터 쓰기 프로세스 Cassandra node 1. Commit log에 순차적으로 데이터를 씀 › 순차적 데이터 기록으로 빠른 쓰기 속도 제공 › 서버가 죽어도 commit log로 복구 가능 2. Memtable에 해당 데이터를 적재함 › 빠른 서비스 속도 제공을 위해 3. SSTable에 최종적으로 데이터를 기재함
  • 12. 12 3. Node 데이터 읽기 프로세스 Node CPU Cassandra node Client Read request (row key: AA) (row key: AA) (row key: AA) (row key: AA) 1. 클라이언트에서 특정 row key 요청 2. 해당 row key를 가지고 있는 SSTable이나 memtable 추출 › 이 때에 모든 SSTable에 대한 Disk I/O를 만들지 않기 위해 memtable에 bloomfilter라는 index를 둠 3. Timestamp를 기준으로 가장 최신의 데이터를 응답합
  • 13. 13 3. Node 데이터 관리(Compaction) K1 < Serialized data > K2 < Serialized data > K3 < Serialized data > -- -- -- Sorted K2 < Serialized data > K10 < Serialized data > K30 < Serialized data > -- -- -- Sorted K4 < Serialized data > K5 < Serialized data > K10 < Serialized data > -- -- -- Sorted MERGE SORT K1 < Serialized data > K2 < Serialized data > K3 < Serialized data > K4 < Serialized data > K5 < Serialized data > K10 < Serialized data > K30 < Serialized data > Sorted Data File D E L E T E D 1. 다수의 SSTable 파일을 하나의 SSTable 파일로 병합함 › 중복되는 row key를 정리해서 데이터 디스크 파일 사이즈를 컴팩트하게 관리함 › Threshold에 이르면 시행됨
  • 14. 14 카산드라의 각 노드의 상태 및 각 상태에 대한 Action을 다음과 SDL로 표현가능함 3. Node Life Cycle
  • 15. 15 4. Cluster Life Cycle 카산드라 클러스터는 개별 노드의 집합임 › 같은 cluster name › 같은 seed node
  • 16. 16 4. Cluster Token 각 노드는 고유한 값인 token 값을 가지며, 각 노드가 가지고 있는 token 값이 그 노드가 카 산드라 클러스터 내에서 데이터를 분담하는 기준이 됨 ›Token은 cassandra가 최초 시작될 때에 설정파일(cassandra.yaml)에 있는 정보로 구동 ›재 구동 될때에는 cache 정보를 기준으로 구동됨 ›Nodetool로 노드의 token 값을 조정할 수 있음 Token 계산 식 N=클러스터의 전체 노드 개수, i=노드 번호 For(i=0;i++;i<N) { Token_for_Node(i)= i * (2**127 / N); } 예) How manynodesare in yourcluster?4 token0: 0 token1: 42535295865117307932921825928971026432 token2: 85070591730234615865843651857942052864 token3: 127605887595351923798765477786913079296
  • 17. 17 4. Cluster 데이터가 카산드라 클러스터에 저장되는 방법 <기본 용어 설명> Keyspace › Replication Factor: 카산드라 클러스터에 저장되는 원본 포함 복제본 데이터의 개수 › Replica Placement: RF가 1이 상일 때에 복제본을 다른 노드에 저장하는 방식 • Simple Strategy: 토큰을 기준으로 인접한 노드에 저장 • Network Topology Strategy: 카산드라 노드가 네트웍상에 배치된 구조를 고려하여 복사본 저장 Cluster › Snitch: 카산드라 노드의 배치를 정의함 • Simple Snitch: 모든 노드가 같은 네트웍에 있는 기본 설정 • Rack Inferring Snitch: IP 대역으로 구분 • Property File Snitch: Config File에 명시 › Partitioner: 데이터의 분배 방식
  • 18. 18 <Replication factor=1일 경우> › 노드 A, B, C로 클러스터가 구성됨 • 노드의 token 값의 오름차순 결과를 기준으로 시계방향으로 노드를 배치한 논리적인 Ring 구조를 이룸 › Row key1 쓰기 요청 • Row key1의 MD5 hash 계산 • Hash 결과 값을 기점으로 시계 방향 으로 이동했을 때에 첫번째 위치한 노드가 해당 데이터를 저장 › Row key2의 쓰기 요청(마찬가지) 노드 D,E,F가 클러스터에 추가될 경우 › 해당 노드의 token값을 기준으로 클러스터에 배치되며 데이터 관리 영역을 분배 받음 <Replication factor=3일 경우> › 노드가 클러스터를 구성하는 방법은 RF=1일 경우와 동일 › 쓰기 요청된 Row key가 처음 저장되는 노드를 정하는 방식도 RF=1일 경우와 동일 › 차이점은 시계 방향으로 RF=3을 만족시키기 위해 연속된 2개의 노드에 데이터를 추가적으로 기록함 4. Cluster 클러스터에 데이터를 쓰는 방식 설명(animation) 02^127 2^127/2 F E D C B A N=3 h(key2) h(key1) • RF:1 or 3 • Partitioner: Random • Snitch: Simple • Replica Stragegy: Simple
  • 19. 19 4. Cluster Consistency level 클라이언트에서 카산드라에 쓰기 혹은 읽기 오퍼레이션을 요청했을 때에, 카산드라가 응답 을 주는 Consistency level에 대한 조절이 가능함 ›만약에 RF 3에, 읽기 쓰기 오퍼레이션 모두 QUORUM 옵션을 지정하여 사용 한다면, •1개의 노드 down까지는 용납 가능함 참고: http://www.datastax.com/docs/1.0/dml/data_consistency Level 필요한 Node 쓰기 읽기 ONE 1 commit log와 memtable이 성공하 면 클라이언트에 OK 반환 가장 가까운 노드에서 응답이 오면 바로 OK 반환, Read repair 실시 QUORUM (N /2) + 1, 소수점 1자리 내림 QUORUM 숫자의 응답을 받아 최 신 timestamp를 가진 값을 응답 ALL N = replication factor RF 숫자의 응답을 받아, 최신 timestamp를 가진 값을 응답
  • 20. 20 4. Cluster Repair Hinted Handoff › 노드가 일시적으로 죽어 있을 경우나 해당 노드로의 네트웍 다운이 발생한 경우, 있었던 쓰기 오퍼레이션에 대해서 주의 노드에서 로그를 간직했다 노드가 살아났을 때에 재전송 해주는 기능 •현재는 최대 1시간 까지 데이터를 보관함 Anti entropy repair › 클러스터에 있는 모든 노드의 데이터를 비교하여 최신의 데이터로 업데이트를 해주어 복 잡성을 감소시키는 과정 ›Delete mark가 되어있었던 데이터를 실제 정리해줌 ›주기적으로 시행되어야함 •자원 소모 및 퍼포먼스 저하가 있음
  • 21. 21 Day 2. Cassandra 설치 및 cluster 구성하기 (실습) 1. 설치 준비 및 설치 2. 설정 파일 변경 3. 각 노드 구동 및 클러스터 구성 4. 클러스터 확장 5. 노드 제거 및 교체 목차(Day 2)
  • 22. 22 1. 설치 준비 및 설치 <JDK install> ›Java download ›java install(Cent OS 기준)  <Cassandra install> ›Cassandra download ›Cassandra install ›JNA install
  • 23. 23 1. 설정 파일 변경 cassandra.yaml 변경 ›<변경 필요 사항> ›java install(Cent OS 기준) cassandra.yaml 변경 ›Cassandra download ›Cassandra install ›JNA install Cassandra 관련 설정 파일 셋팅
  • 24. 24 Day 3. Cassandra cluster 관리 및 엔지니어링 (실습) 1. 개별 노드 백업 및 복원 2. 2 ring 구조 구성 및 크로스 백업 및 복원 3. Nodetool 및 Cassandra-cli 사용 4. Opscenter 사용 5. 벤치마크 테스트 하기 목차(Day 3)