- 하둡 공부 3일차2024년 11월 25일
- 31514
- 작성자
- 2024.11.25.:54
오늘은 하둡과 관련하여 비관계형 데이터베이스(NoSQL)에 대해 학습했고, 어떤 상황에서 어떤 저장소를 선택할지에 대해 알아봤다.
HBase
HBase는 HDFS 위에서 작동하고 API를 통해 CRUD 연산을 할 수 있는 비관계형 데이터베이스이다.
Master-Slave 구조를 가지고 있어서 Master가 모든 Slave 노드를 추적하며, Zookeeper를 통해 Master 노드를 추적한다.
HBase는 키의 범위를 기준으로 데이터를 분산한다.
HBase에는 Cell과 Column Family라는 개념이 있다.
Row Key user:name user:email stats:visits 1 Alice alice@email.com 34 2 Bob bob@email.com 12 - Cell은 Row Key, Column(Column Family + Qualifier), Timestamp, Value로 정의되는 가장 작은 데이터 저장 단위를 말한다.
- Column Family는 데이터를 논리적으로 그룹화하며, 같은 그룹의 데이터를 물리적으로 함께 저장하고 설정을 공유하는 단위를 말한다.
위의 테이블에서 user:name을 예로 들었을 때, Column Family는 user, Qualifier는 name이다.
Column Family 덕분에 데이터 로컬리티와 선택적 읽기를 할 수 있어서 I/O 성능을 향상할 수 있다.
Cassandra
카산드라는 HBase와 달리 독립적인 데이터 저장소를 사용한다.
Master가 없는 Masterless 아키텍처를 가지고 있고, 각 노드들이 원형으로 연결되어서 서로 통신한다.
CQL(Cassandra Query Language)이라는 독자적인 언어를 사용하고 SQL과 유사한 문법을 가지고 있다.
나중에 다시 한번 언급하겠지만, 카산드라는 특히 가용성과 파티션 내구성에 뛰어나다.
MongoDB
몽고 DB는 HBase와 카산드라와 달리 문서 기반 NoSQL 데이터베이스이다.
따라서 원하는 구조의 모든 데이터를 저장할 수 있다.
MongoDB는 데이터를 여러 서버에 분산하여 저장하는 Sharding 기능을 제공한다.
샤딩은 데이터를 특정 Key를 기준으로 나누어 저장하고, 각 Shard는 데이터를 독립적으로 관리하여 클러스터에서의 부하를 분산한다.
그리고 데이터의 내구성과 고가용성을 보장하기 위해 Replication 메커니즘을 제공합니다.
한 개의 Primary 노드와 여러 개의 Secondary 노드로 구성되어 있고, Primary는 쓰기 작업을, Secondary는 읽기 작업과 장애 복구에 사용된다.
카산드라와 마찬가지로 독자적인 언어인 MQL을 가지고 있고, 메모리 중심의 저장소 엔진으로 데이터를 처리하여 높은 성능을 제공한다.
결론
이렇게 HBase, Casandra 그리고 MongoDB에 대해 얕고 넓게 배울 수 있었는데, 이 과정에서 '분산 컴퓨팅' 책에서 접한 CAP 이론을 다시 상기시킬 수 있었다.
CAP 이론에 대해 다시 정리하자면, 다음과 같다.
- 일관성(Consistency) : 모든 노드가 같은 데이터를 보장한다는 뜻
- 가용성(Availability) : 모든 요청에 대해 항상 응답을 제공한다는 뜻
- 파티션 내구성(Partition-Tolerance) : 네트워크 파티션(분리)이 발생해도 동작한다는 뜻
보통 CAP 이론 중 최대 2개를 만족할 수 있다고 한다.
하지만 기술의 발전 속도가 빨라지면서 사용자가 어떻게 사용하냐에 따라 3개 모두를 만족시킬 수도 있다.위 그림을 보고 만약 일관성과 파티션 내구성에 특화되어 있는 저장소를 찾는다면, HBase와 MongoDB를 떠올리면 된다.
하지만 CAP 이론만을 가지고 데이터 저장소를 선택하면 안 되고, 그 밖에도 예산, 보안, 단순함 등을 고려해야 한다.
예를 들어 MongoDB는 전문가를 지원해 주기 때문에 보안적인 측면에서 뛰어날 것이다.
HBase는 회사에서 HDFS를 이미 운영하고 있다면 가장 간단하게 구축할 수 있을 것이다.
느낀 점
데이터 엔지니어의 역량 중에 알맞은 기술을 선택하는 능력도 중요하다고 생각하는데, 오늘 강의를 통해 조금이나마 기술 선택에 다양한 관점을 갖게 된 거 같다.
'개발' 카테고리의 다른 글
Airflow 뜯어보기(1) (1) 2024.12.16 하둡 공부 4일차 (0) 2024.11.26 하둡 공부 2일차 (1) 2024.11.22 하둡 공부 1일차 (0) 2024.11.21 GCP VM Instance 저스펙으로 Airflow 서버 구축하고 안정적으로 크롤링하기 (0) 2024.11.14 다음글이전글이전 글이 없습니다.댓글