Hello World/빅데이터전문가

3차시 (빅데이터 저장소)

혼복필 2025. 9. 22. 03:09
728x90
SMALL

[1] 빅데이터 저장소 개요

1. CAP 이론

 

일관성 Consistency → 모든 노드 동일 시점 동일 데이터 출력 보장

가용성 Availability → 일부 노드 불가능해도 다른 노드 정상 작동 보장

지속성 Partition Tolerance → 데이터 손실 발생해도 시스템 정상 작동 보장

→ RDBMS의 한계 존재

 

2. RDBMS의 대안

 

하둡 Hadoop → 하둡 분산파일시스템(HDFS), 대용량 데이터 처리

NoSQL → 비관계형 데이터 저장소, 데이터 손실 대응

레디스 Redis → NoSQL의 일종, 키-값 구조 저장, 인메모리 기반

우지 Oozie → 자바 서블릿 컨테이너 기반 작업 엔진, DAG 기반 작업 제어


[2] 빅데이터 저장소 설계

1. 하둡 분산 파일 시스템 (HDFS)

 

구성 요소

네임노드(NameNode) → 파일 위치(iNode), 메타정보 관리, 클라이언트 요청 처리

보조네임노드(Secondary NameNode) → 네임노드 백업, 복구 담당

데이터노드(DataNode) → 데이터를 블록 단위로 분산 저장

클라이언트(Client) → 데이터를 요청하는 사용자

동작 과정
1️⃣ 클라이언트 → 네임노드 : 파일 액세스 위해 메타정보 요청
2️⃣ 네임노드 → 클라이언트 : 데이터노드 위치 정보 반환
3️⃣ 클라이언트 → 데이터노드 : 반환된 정보로 실제 파일 접근

 

2. NoSQL (Not Only SQL)

 

데이터 모델 분류

키-밸류 (Key-Value) → 고유키-값 쌍으로 스키마 없이 저장

순차적 키-밸류 (Ordered Key-Value) → 연속성 부여, 영역 스캔 효율 ↑

빅테이블 (BigTable) → 테이블 형식, 2~3단계 재귀 구조 가능

도큐먼트 (Document) → 객체 DB 파생형, 데이터 구조 깊이 제한 없음

그래프 (Graph) → 노드 간 연결, 유연한 관계 표현

시스템 구성

마스터-슬레이브 → 마스터 노드가 메타정보 관리, 서버 추가/삭제 용이, 마스터 부하 ↑

라운드 테이블 → 해시테이블 기반, 트래픽 분산, 단점은 데이터 이동 발생


[3] 빅데이터 저장소 관리

1. 하둡 명령어

 

ls → 파일(폴더) 조회

> hadoop fs -ls /

put → 로컬 → HDFS 업로드

> hadoop fs -put l_myData.txt h_myData.txt

get → HDFS → 파일 가져오기

> hadoop fs -get h_myData.txt l_myData.txt

cp → HDFS 내 파일 복사

> hadoop fs -cp myData.txt myData2.txt

rm → HDFS 파일 삭제

> hadoop fs -rm myData2.txt

chmod → 권한 변경

> hadoop fs -chmod 700 myData.txt

chown → 소유권 변경

> hadoop fs -chown bjhan myData.txt

 

2. MongoDB (몽고DB)

 

MongoDB 특징

문서 지향 DB → 문서(document), 배열(array) 개념 도입

복잡한 계층 관계 → 하나의 레코드로 표현 가능

NoSQL DB

더블 링크드 리스트 구조 → 양방향 탐색 가능

 

MongoDB 주요 개념

데이터베이스 (Database) → 컬렉션들의 집합

컬렉션 (Collection) → 유사한 도큐먼트의 집합

익스텐트 (Extent) → 데이터 저장의 논리 단위

도큐먼트 (Document) → 정렬된 키-값 쌍의 집합

 

주요 명령어

use → DB 생성 및 사용

use mydatabase

dropDatabase() → 현재 DB 삭제

> db.dropDatabase()

createCollection() → 컬렉션 생성

> db.creatCollection("test")
drop() → 컬렉션 삭제

> db.test.drop()

insert() → 도큐먼트 삽입

> db.test.insert({...})

remove() → 도큐먼트 삭제

>  db.test.remove({...})

 

 

728x90
LIST