Your SlideShare is downloading. ×
0
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Cassandra education material
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cassandra education material

1,469

Published on

This material is made to educate operators, who deal with cassandra in production environment and based on cassandra version 1.1.X …

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를 기준으로 설명한 자료입니다.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,469
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
50
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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)

×