Cassandra 아키텍처 설명: 종합 튜토리얼

게시 됨: 2021-03-10

Cassandra는 Facebook에서 시작된 이후로 가장 인기 있는 Apache 프로젝트 중 하나가 되었습니다. 널리 사용되는 오픈 소스, 고성능 및 분산 데이터베이스이며 소프트웨어 엔지니어, 데이터 과학자 및 웹 개발자의 삶을 더 쉽게 만듭니다.

이 강력한 데이터베이스 솔루션의 사용자로는 IBM, Facebook, Reddit, eBay, Twitter 등이 있습니다.

그러나 Cassandra에 익숙해지려면 해당 아키텍처에 대해 알아야 하며 Apache Cassandra 아키텍처는 이해하기가 약간 까다로울 수 있습니다.

이것이 우리가 Cassandra 아키텍처에 대한 다음 소개 가이드를 만든 이유입니다. Cassandra 아키텍처에 필요한 모든 개념에 익숙해질 것입니다.

목차

카산드라 아키텍처의 기초

Apache Cassandra 아키텍처에는 마스터 또는 슬레이브 노드가 없습니다. 대신 노드가 논리적으로 링에 분산되어 있는 링과 유사한 아키텍처가 있습니다. 아키텍처를 통해 데이터가 모든 노드에 자동으로 배포될 수 있습니다. HDFS와 마찬가지로 Cassandra의 데이터는 중복성을 위해 노드 간에 복제되고 메모리에 저장됩니다. 키의 해시 값을 사용하여 클러스터의 노드 간에 데이터를 배포합니다.

Cassandra 아키텍처를 통해 시스템은 단일 장애 지점과 상관없이 작동할 수 있습니다. 즉, 클러스터에 100개의 노드가 있고 그 중 하나에 장애가 발생하더라도 클러스터는 계속 실행됩니다. 반면에 하둡에서는 네임노드가 실패하면 전체 시스템이 실패합니다.

Cassandra 아키텍처는 클러스터가 수천 개의 노드를 가질 수 있도록 높은 확장성을 제공합니다. 또한 작업을 중단하지 않고 클러스터에 새 노드를 추가할 수 있습니다.

위에서 논의한 기능 외에도 Apache Cassandra 아키텍처는 여러 데이터 센터도 지원하고 데이터 센터 간에 데이터 복제를 가능하게 합니다.

토폴로지 및 설계

Cassandra 아키텍처는 분산 시스템 아키텍처를 기반으로 합니다. Cassandra의 가장 간단한 버전은 하나의 시스템에서 실행될 수 있으며 기본 테스트와 잘 작동합니다. 하나의 Cassandra 인스턴스를 노드라고 합니다.

Cassandra는 클러스터의 구성 요소로 둘 이상의 노드를 추가할 수 있는 수평 확장성을 제공합니다. 각 노드가 다른 모든 노드에 연결되는 피어 투 피어 아키텍처와 함께 작동합니다. 모든 Cassandra 노드는 마스터 노드 없이 모든 데이터베이스 작업과 서버 클라이언트 요청을 수행합니다.

이 P2P 분산 아키텍처는 단일 실패 지점으로 인해 전체 시스템이 실패하지 않도록 합니다. Cassandra의 클러스터는 다양한 기능을 위해 서로 통신할 수 있습니다. 이러한 의사 소통에는 다음 개념이 중요합니다.

잡담

가십은 노드가 P2P 통신에 사용하는 Cassandra 프로토콜입니다. 다른 노드의 상태를 노드에 알립니다. 매초 한 노드가 최대 3개의 다른 노드와 가십을 수행하고 모든 가십 메시지는 통신 효율성을 유지하기 위해 특정 형식과 버전 번호를 따릅니다.

씨앗

Cassandra의 모든 노드는 다른 노드의 목록인 시드 목록을 구성합니다. 시드 노드는 클러스터에 처음 가입할 때 노드를 부트스트랩하는 것 외에는 다른 목적이 없습니다. 부트스트랩 후 노드는 다시 시작할 때 시드가 필요하지 않습니다. Cassandra 데이터 센터당 2~3개의 시드 노드를 사용하고 시드 목록을 균일하게 유지하는 것이 가장 좋습니다.

데이터베이스 구조

Cassandra에서 데이터는 모든 테이블이 행과 열로 구성된 테이블에 저장됩니다. 또한 Cassandra의 테이블은 고객 데이터의 테이블이 하나의 키스페이스로 그룹화될 수 있는 반면 비즈니스 트랜잭션의 테이블은 다른 키스페이스에 저장될 수 있는 것과 같이 키스페이스로 그룹화됩니다.

모든 테이블에는 클러스터링 열과 파티션 키로 구분되는 기본 키가 있습니다. 클러스터링 열은 선택 사항입니다. Cassandra는 파티션 키를 사용하여 데이터를 인덱싱합니다. 공통 파티션 키가 있는 모든 행은 데이터 파티션의 기본 단위인 하나의 데이터 파티션을 구성합니다.

카산드라에서 파티셔닝

Cassandra에서 파티셔너는 파티션 키를 토큰으로 변환합니다. Murmur3Partitioner가 기본값인 Cassandra에는 여러 파티셔너 옵션이 있습니다. 모든 토큰에는 -2^63에서 +2^63-1 사이의 정수 값이 할당되며 이 범위의 이름은 토큰 범위입니다.

모든 카산드라는 이 범위의 일부를 소유하고 있으며 주로 범위와 관련된 데이터를 보유합니다. 우리는 토큰을 사용하여 노드 사이에서 데이터를 정확하게 찾습니다.

이 개념으로 소유권 시스템을 이해할 수 있습니다. 클러스터에 노드가 하나만 있으면 해당 노드가 전체 토큰 범위를 소유하게 됩니다. 더 많은 노드가 추가되면 토큰 범위 소유권이 그에 따라 분할됩니다.

가상 노드

Cassandra는 Vnode라고도 하는 가상 노드를 사용하여 토큰 계산 및 할당 문제를 단순화합니다.

클러스터를 수많은 가상 노드로 분할하여 토큰을 할당하고 모든 물리적 노드는 동일한 양의 Vnode를 얻습니다. 노드가 소유한 기본 Vnode 수는 256입니다. num_tokens 속성을 사용하여 동일하게 설정할 수 있습니다. 클러스터에 새 노드를 추가하면 토큰 할당 알고리즘이 Vnode를 사용하여 필요한 토큰을 할당합니다.

복제

Cassandra는 복제 요소를 사용하여 모든 키스페이스에 있는 데이터를 복제합니다. 데이터의 기본 복제본 하나는 토큰 소유자 노드에 남아 있고 나머지는 복제본 배치 전략을 통해 Cassandra가 특정 노드에 배치합니다. 모든 복제본은 대부분의 데이터베이스 작업에서 동일한 중요성을 가집니다.

카산드라의 복제 배치에 영향을 미치는 두 가지 설정은 스니치와 복제 전략입니다. Snitch는 노드가 속한 데이터 센터와 랙을 결정합니다. 그들은 일을 효율적으로 유지하기 위한 토폴로지에 대해 Cassandra에 알릴 책임이 있습니다.

복제 전략은 키스페이스 수준에서 설정되며 NetworkTopologyStrategy와 단순 전략의 두 가지가 있습니다. 전자는 랙 및 데이터 센터를 인식하지만 후자는 인식하지 못합니다.

CAP 정리

모든 분산 시스템은 CAP 정리를 기반으로 작동합니다. 이 정리에 따르면 모든 분산 시스템은 일관성, 가용성 및 파티션 허용의 세 가지 속성 중 두 가지를 적절하게 전달할 수 있습니다.

Cassandra에서는 가용성과 일관성 중에서 선택할 수 있습니다. 이는 데이터가 낮은 가용성으로 높은 일관성을 유지하거나 낮은 일관성으로 높은 가용성을 나타낼 수 있음을 의미합니다.

특정 수의 승인을 요청하는 개념을 조정 가능한 일관성이라고 하며 개별 쿼리 수준에서 적용할 수 있습니다.

쓰기 프로세스

이 과정에서 데이터는 디스크의 주석 로그에 기록된 후 해시 값에 따라 담당 노드로 전송됩니다.

그 후, 노드는 데이터가 메모리의 "sstable"에 기록되는 메모리 내 테이블인 memtable에 데이터를 씁니다. 다음으로 실제 테이블로 업데이트됩니다.

어떤 이유로 책임 노드가 다운되면 데이터가 다른 노드에 기록됩니다.

카산드라 아키텍처에 대해 자세히 알아보기

Apache Cassandra 아키텍처를 이해하면 이 솔루션의 작동 방식을 이해하는 데 도움이 됩니다. 이제 Cassandra가 경쟁에서 눈에 띄는 이유와 인기 있는 이유도 알게 되었습니다.

데이터베이스에 대해 자세히 알아보려면 다음 리소스를 확인하세요.

데이터 과학을 위한 SQL: SQL을 선택해야 하는 이유, 이점 및 명령 목록

20가지 가장 일반적인 SQL 면접 질문 및 답변 [신입생을 위한]

인증서가 있는 SQL 무료 온라인 과정 [2021]

반면에 개인화된 학습 경험을 찾고 있다면 데이터 과학 과정을 수강하는 것이 좋습니다. upGrad에서는 데이터 과학의 PG 디플로마와 데이터 과학 이학 석사를 제공합니다 . 이 과정은 데이터 과학 전문가가 되기 위해 필요한 모든 기술을 가르칩니다.

결론

빅 데이터 프로그램에 대해 더 알고 싶으시면 PG 디플로마 소프트웨어 개발 전문 빅 데이터 프로그램을 확인하세요. 이 프로그램은 실무 전문가를 위해 설계되었으며 7개 이상의 사례 연구 및 프로젝트를 제공하고 14개 프로그래밍 언어 및 도구, 실용적인 실습을 다룹니다. 워크샵, 400시간 이상의 엄격한 학습 및 최고의 기업과의 취업 지원.

upGrad에서 다른 소프트웨어 엔지니어링 과정을 확인하십시오.

빅 데이터의 최첨단 커리큘럼으로

IIIT-B의 빅 데이터에 있는 최첨단 커리큘럼
IIT Bangalore의 빅 데이터 고급 인증 프로그램