cassandra education material

24
1 Cassandra Youngki Kim 교교 교교 교 교교교 Cassandra 교 교교교교교교 교교교교 교교 , 교교교교 교교 교교 교교교 Cassandra 1.1.X 교 교교교교 교교교 교교교교교 .

Upload: youngki-kim

Post on 05-Dec-2014

1.327 views

Category:

Technology


0 download

DESCRIPTION

This material is made to educate operators, who deal with cassandra in production environment and based on cassandra version 1.1.X 이 자료는 Cassandra를 상용 환경에서 운용하기 위한, 운용자를 위한 교육 자료로 Cassandra 1.1.X를 기준으로 설명한 자료입니다.

TRANSCRIPT

Page 1: Cassandra education material

1

Cassandra

Youngki Kim

교육 자료

이 자료는 Cassandra 를 상용환경에서 운용하기 위한 , 운용자를 위한 교육 자료로 Cassandra 1.1.X 를 기준으로 설명한 자료입니다 .

Page 2: Cassandra education material

2

Day 1. Cassandra 기본 개념 잡기

Day 2.Cassandra 설치 및 cluster 구성하기

( 실습 )

Day 3.Cassandra cluster 관리 및 엔지니어링

( 실습 )

목차

Page 3: Cassandra education material

3

Day 1. Cassandra 기본 개념 잡기

1.Cassandra 란 ?

2.Data model

3.Node

4.Cluster

목차 (Day 1)

Page 4: Cassandra education material

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 DynamoConsistent hashing

PartitioningReplication

One-hop routing

Google BigTableColumn Families

MemtablesSSTables

Page 5: Cassandra education material

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": "[email protected]",

"timestamp": 123456789 }

실제 카산드라에서는 해당 컬럼의 중복이 발생했을 때의 우선권 관리 (conflict resolution) 를 위해 timestamp라는 field 를 함께 관리함

Column 2

Column 3

Column 1

Page 6: Cassandra education material

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 간의 rela-tion 을 표현하는 수단이 됨

›예 : 도형 )

Row 2 (key: YYY)

Row 1 (key: XXX)

Page 7: Cassandra education material

7

2.Data model

Column family

비슷한 유형의 데이터 (column) 을 묶는 컨테이너 형태의 데이터 구조

›RDBMS 의 table 과 유사한 개념

›예 : 도형 )

Row 2 (key: YYY)

Row 1 (key: XXX)

Column family

Page 8: Cassandra education material

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 familySuper column

1Super column

2

Row 2 (key: XXX)

Super column 1

Super column 2

Page 9: Cassandra education material

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

Supercolumn

Supercolumn

Super column family

Keyspace

Page 10: Cassandra education material

10

2.Data model

Real_System example

Super column family: files(Keyspace: storageSub-system)

Column family: Location-info(Keyspace: System)

Page 11: Cassandra education material

11

3. Node

데이터 쓰기 프로세스

Cassandra node

1. Commit log 에 순차적으로 데이터를 씀

› 순차적 데이터 기록으로 빠른 쓰기 속도 제공

› 서버가 죽어도 commit log 로 복구 가능

2. Memtable 에 해당 데이터를 적재함

› 빠른 서비스 속도 제공을 위해

3. SSTable 에 최종적으로 데이터를 기재함

Page 12: Cassandra education material

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 를 기준으로가장 최신의 데이터를 응답합

Page 13: Cassandra education material

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 에 이르면 시행됨

Page 14: Cassandra education material

14

카산드라의 각 노드의상태 및 각 상태에 대한 Action 을 다음과 SDL 로표현가능함

3. Node

Life Cycle

Page 15: Cassandra education material

15

4. Cluster

Life Cycle

카산드라 클러스터는 개별 노드의 집합임›같은 cluster name

›같은 seed node

Page 16: Cassandra education material

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 many nodes are in your cluster? 4 token 0: 0 token 1: 42535295865117307932921825928971026432 token 2: 85070591730234615865843651857942052864 token 3: 127605887595351923798765477786913079296

Page 17: Cassandra education material

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: 데이터의 분배 방식

Page 18: Cassandra education material

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

AN=3

h(key2)

h(key1)

• RF:1 or 3• Partitioner: Random• Snitch: Simple• Replica Stragegy: Simple

Page 19: Cassandra education material

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 를 가진 값을 응답

Page 20: Cassandra education material

20

4. Cluster

Repair

Hinted Handoff

› 노드가 일시적으로 죽어 있을 경우나 해당 노드로의 네트웍 다운이 발생한 경우 , 있었던 쓰기 오퍼레이션에 대해서 주의 노드에서 로그를 간직했다 노드가 살아났을 때에 재전송 해주는 기능•현재는 최대 1 시간 까지 데이터를 보관함

Anti entropy repair

› 클러스터에 있는 모든 노드의 데이터를 비교하여 최신의 데이터로 업데이트를 해주어 복잡성을 감소시키는 과정

›Delete mark 가 되어있었던 데이터를 실제 정리해줌

›주기적으로 시행되어야함•자원 소모 및 퍼포먼스 저하가 있음

Page 21: Cassandra education material

21

Day 2.Cassandra 설치 및 cluster 구성하기

( 실습 )

1. 설치 준비 및 설치

2. 설정 파일 변경

3. 각 노드 구동 및 클러스터 구성

4. 클러스터 확장

5. 노드 제거 및 교체

목차 (Day 2)

Page 22: Cassandra education material

22

1. 설치 준비 및 설치

<JDK install>

›Java download

›java install(Cent OS 기준 )

 <Cassandra install>

›Cassandra download

›Cassandra install

›JNA install

참조

›http://dbnosql.wordpress.com/2012/07/16/cassandra-jna-%EA%B5%AC%EC%84%B1/

Page 23: Cassandra education material

23

1. 설정 파일 변경

cassandra.yaml 변경

›< 변경 필요 사항 >

›java install(Cent OS 기준 )

cassandra.yaml 변경

›Cassandra download

›Cassandra install

›JNA install

참조

›http://dbnosql.wordpress.com/2012/07/16/cassandra-jna-%EA%B5%AC%EC%84%B1/

Cassandra 관련 설정 파일 셋팅

Page 24: Cassandra education material

24

Day 3.Cassandra cluster 관리 및 엔지니어링

( 실습 )

1. 개별 노드 백업 및 복원

2. 2 ring 구조 구성 및 크로스 백업 및 복원

3. Nodetool 및 Cassandra-cli 사용

4. Opscenter 사용

5. 벤치마크 테스트 하기

목차 (Day 3)