morebo2ks / hadoop

5 stars 0 forks source link

7주차 hadoop 스터디 #9

Closed KilJaeeun closed 2 years ago

KilJaeeun commented 2 years ago

파트

jasonkang14 commented 2 years ago

https://byeongjinkang.notion.site/NoSQL-9d65baf415314ba6b6939cbd4a38abf5

wookiist commented 2 years ago

스터디 내용

JSYoo5B commented 2 years ago

유재상 스터디 로그

전반적으로 점점 제 이해 속도가 딸리는 주제가 찾아오네요

NoSQL

Wiki 설명 찾아보면 Non-SQL, Non-relational, Not only SQL 등의 의미로 제안된 개념
RDBMS로 해결하기 힘든 문제를 처리하기 위해 제안됨

NoSQL 이전의 문제 해결법 (실패한 방법)

RDBMS (MySQL 등)을 극한으로 확장하는 방법, 대부분 실제 적용에 난이도가 높거나, 관리 비용 등의 문제로 실패했다는 듯

이런 경험에서, 반대로 꼭 SQL(RDBMS)가 필요할까? 같은 의문을 가지게 됨

HBase

Google의 BigTable 기반으로 Hadoop 버전으로 구현한 것 NoSQL이라 SQL이 없고 CRUD API만 제공됨

내부 구조

내부적으로 키를 기준으로 리전으로 구분 (자동 샤딩) 샤딩된 데이터는 HDFS 위에 올라감 마스터 노드: 각 데이터의 위치를 아는 노드, (파일시스템의 inode를 서비스로 제공하는 셈) 이후 실제 데이터 접근은 리전 서버 (샤딩된 데이터)에서 접근 Zookeeper: 마스터노드 고가용성

데이터 모델

Key를 통한 Row 접근 Column family 개념: 각 스키마에 해당하는 데이터가 여러 개 존재 기존 RDBMS에서 Row가 primitive type들만 사용한 구조체라면, HBase에서는 내부에 Collection type이 존재할 수 있는 느낌? (Collection은 Dictionary처럼 sparse하게 접근) (실습 예시를 보면 기존 MapReduce에서 Shuffle & Sort 한 상태가 Row 단위로 제공되는 듯)

Cassandra

HBase와 비슷하지만 SPoF(HBase의 경우 Master Node)가 없음

설계

CAP(Consistency, Availability, Partition-Tolerance) 정리라는 개념이 있는데, 위 3가지 중 2개의 특성은 구현할 수 있지만 3개 모두 구현할 수는 없음

Hadoop은 분산처리를 목적으로 하므로 Partition-tolerance를 포기할 수 없음 Cassandra는 일관성을 궁극적 일관성(어쨋든 일관성이란 표현이 더 정확할듯)으로 접근함 (급한거 아닌 때 쓰는거면, 처리 속도 조금 늦어져도 결과만 잘 처리해주면 된다) 그래서 가용성에 집중하고, 일관성은 편법으로 만족시키는 방식으로 3개를 다 만족한다고 함

구현 원리

Node간에 Master-Slave 등의 관계가 없이 동등한 관계 서로 레플리카를 가지고, 어디에 데이터가 있는지 서로 프로토콜로 확인하여 응답

CQL (Cassandra Query Language)

SQL과 비슷하게 제공되지만, JOIN이 불가능하고, PK를 기반으로 하는 질의여야 함

hyunju-song commented 2 years ago

https://hazel-developer.tistory.com/287

아휴..주말에 미리 안 했다가 늦을 뻔했네요 🤦🏻‍♀️

KilJaeeun commented 2 years ago

https://www.notion.so/6-1-hadoop-NoSQL-68da0af63fc948cabc5b9096468ee875#4490b3c04d2041ad96e23420ce6c47a2