본문 바로가기

NoSQL/Cassandra

Key Components for Configuring Cassandra

Partitioner

Partitioner는 data의 조각의 첫번째 replica를 받을 노드를 결정하는 것과 cluster안에서 어떻게 다른 노드들과 교차로 분산시킬지에 대해 노드를 결정합니다.

데이터의 각각의 줄은 primary key에 의해서 유니크하게 존재합니다. partition key가 똑같을 수 있지만 clustering column이 다를 것 입니다.

partitioner는 row의 primary key로부터 token을 다루는 hash 함수입니다.

Partitioner는 token 값은 클러스터안에서 row의 복제본을 받을 노드를 결정하기 위해 사용합니다.

Murmur3Partitioner는 새로운 Cassandra Cluster를 위한 기본 partitioning 계획이고 거의 모든 케이스에서 새로운 클러스터를 위한 올바른 선택입니다.

각 노드들을 위해 num_tokens 값을 노드에 담당하는 것과 partitioner를 반드시 설정해야합니다. token의 수는 서비스에 맞게끔 설정해야합니다. 만약 가상노드(virtual node)를 사용하지 않으면 initial_token을 세팅해서 사용해야합니다.

replication factor(replication 구성요소)

cluster의 replica 수 입니다. replication factor가 1이면 하나의 노드에서 각 줄을 하나의 복제본만 만든다는 것 입니다. replication factor가 2이면 각 줄별로 각각 다른노드에게 2개의 복제본을 만든다는 것입니다.

모든 replica들은 동일하게 중요합니다. primary나 master replica가 존재하지 않습니다. 각각의 다른 data center들을 위해 replication을 정의합니다.

일반적으로 하나보다 더 많이 replication 계획을 세웁니다. 하지만 cluster안에서 node의 수보다 더 클 수는 없습니다.

replica placement strategy

Cassandra는 신뢰성을 보장하고 장애허용성(fault tolerance)을 위해 여러개의 node들에 데이터의 복제본들을 저장합니다.

replication 계획은 replica node 위치에 따라 결정이 됩니다. 첫번째 data의 복사본이 간단하게 첫 copy입니다. 이것은 unique하지 않습니다.

NetworkTopologyStrategy는 대부분의 환경을 위해 권장됩니다. 왜나하면 이것은 확장이 요구될 때 여러개의 data center를 쉽게 확장시킬수 있게 해주기 때문입니다.

keyspace를 생성할 때, replica 위치 계획과 관리자가 원하는 replica의 개수를 정해야만합니다. 이때 NetworkTopologyStrategy를 설정할 수 있습니다.

Snitch

snitch는 복제본을 만들기 위한 replication 계획을 data center와 racks(topology)에 존재하는 장비의 group을 정의합니다.

cluster를 생성할 때 반드시 snitch를 구성해야만 합니다. 모든 snitch들은 monitoring 성능과 최적의 replica를 찾기 위해 동적인 snitch layer를 사용합니다.

대부분의 서버배치는 default를 사용하는 것을 권장합니다. cassandra.yaml 설정파일안에 각 node들을 위해 동적 snitch 기준치를 구성해야합니다.

기본값인 SimpleSnitch는 data center나 rack정보를 재구성하지 않습니다. single-data center 배치이거나 public cloud에서 single-zone이면 사용해도 됩니다.

GossipingPropertyFileSnitch는 production 환경에서 권장됩니다. 이것은 다른 노드들에게 정보를 전파하기위해 gossip protocol을 이용하여 node의 data center와 rack을 정의합니다.

cassandra.yaml configure file

튜닝을 위한 환경설정과 자원 활용, timeout 설정, client 접속, 백업, 보안, table을 위한 파라미터 캐싱, cluster 기본적인 환경설정을 세팅하기 위한 main 구성 파일입니다. 

기본적으로 node는 data를 적재하기 위해 구성됩니다. 이것은 directory에서 관리가 되며 cassandra.yaml 파일에서 설정합니다.
Package installation : /var/lib/cassandra
Tarball installation : install_location/data/data
Production cluster 환경에서 data_file_directories로부터 다른 디스크 드라이브로 commitlog_directory를 변경할 수 있습니다.

참조사이트


'NoSQL > Cassandra' 카테고리의 다른 글

Cassandra version 3.7 install on AWS Ubuntu 16.04  (0) 2016.12.04
Requirements for Cassandra on AWS  (0) 2016.11.27
Apache Cassandra 란?  (0) 2016.11.27