상세 컨텐츠

본문 제목

[빅데이터처리] Hadoop, Sqoop, 실시간 데이터 처리 (Kafka, Spark Streaming)

😎 지식/머신러닝 딥러닝🦾

by :부셔져버린개발자 2024. 12. 17. 12:54

본문

HDFS(Hadoop Distributed File System)

대규모 데이터를 여러 노드에 분산 저장하는 Hadoop의 분산 파일 시스템

 
- 파일을 블록 단위로 나누어 저장한다
- 대용량 데이터 처리에 최적화되어 있다
- 블록 단위로 저장되기 때문에 데이터 복제가 용이하다
 

NameNode와 DataNode의 역할

- HDFS는 마스터 슬레이브 구조를 따른다
 
1) NameNode(마스터 노드)
 메타데이터 관리 : 파일의 이름, 블록의 위치, 파일 시스템 트리 등을 관리함
 데이터 블록의 위치와 상태를 추적함
 클러스터에 중앙 집중식 역할을 수행함
 단일 장애 지점(Single Point of Failure)가 될 수 있어 고가용성을 위해 Secondary NameNode를 사용
 
2) DataNode(슬레이브 노드)
 실제 데이터 블록을 저장함
 주기적으로 NameNode에 상태 보고를 하며, 데이터의 복제본을 유지함
 NameNode의 명령에 따라 블록을 읽거나 쓰는 작업을 수행함
 

HDFS 데이터 저장 과정 예시

1. 사용자가 파일을 HDFS에 업로드하면 NameNode가 파일을 블록으로 나눈다
2. 나눠진 블록은 DataNode에 분산 저장된다
3. NameNode는 블록의 위치 정보를 기록한다.
4. 데이터 복제본(디폴트3개)을 다른 DataNode에 저장해 데이터 신뢰성을 보장한다.
 
 

스쿱

Sqoop

RDBMS <=> HDFS 데이터 전송하는 ETL 도구 

 

데이터베이스 데이터를 HDFS로 가져와 Hive에서 분석
RDBMS로 분석된 데이터를 다시 내보내기
 

Hadoop 자체는 배치 처리에 강점이 있지만,
실시간 데이터 처리 요구에 대응하기 위해 Spark와 Kafka 등의 도구를 활용

 

 

Hadoop과 Spark Streaming, Kafka 연계 예시

  1. 데이터 발생지: IoT 센서, 웹 로그, 애플워치 데이터 등
  2. Kafka: 데이터를 토픽으로 발행하여 실시간 수집
  3. Spark Streaming:
    • Kafka에서 데이터를 실시간 구독
    • 데이터를 필터링, 변환, 집계
  4. HDFS 저장: 처리된 데이터를 HDFS에 저장하여 배치 분석 수행
  5. API 제공: Spark SQL이나 HBase를 통해 실시간 분석 결과를 API로 제공

 

Kafka

실시간 데이터 스트림을 처리하는데 널리 사용됨

  • Publish/Subscribe 모델 기반
  • 토픽(Topic)에 데이터를 발행하고, 여러 구독자(Consumer)가 데이터를 처리

 

Spark Streaming

데이터를 병렬 처리하기 위한 인메모리 기반 분산 처리 프레임워크
HDFS랑 연계가 잘 됨

  1. Kafka에서 데이터 스트림 수신
  2. Spark Streaming에서 데이터를 실시간 처리
  3. 처리된 결과를 HDFS, HBase, 또는 RDBMS에 저장
  4. 필요 시 결과를 API를 통해 제공

 


Kafka가 필요한 이유

1. 실시간 데이터 스트림 관리
Kafka는 실시간 데이터를 수집하고 분산처리하는데 특화되어 있다
Producer가 발행하고 Consumer가 구독하는 비동기 처리를 지원함으로서 시스템 간의 독립성이 보장된다
Kafka 없이 직접 데이터 처리 시스템과 연결된다면 확장성과 유연성에 문제가 발생할 수 있다
 
2. 여러 시스템에 데이터 분배
실시간 로그 데이터 => Spark Streaming 
동일한 데이터 => HBase에 저장
 
3. 확장성과 유연성 확보
분산시스템으로 데이터를 여러 노드로 분산하여 저장한다
Topic은 데이터를 여러 개의 파티션에 나누어 저장하므로 수평 확장이 용이하다
데이터 발생량이 증가해도 Kafka를 통해 시스템 부하를 분산할 수 있다
 
4. 데이터의 내구성과 재처리
Kafka는 데이터를 디스크에 저장하므로 데이터 유실 가능성이 적고, 
Offset 기반으로 특정 시점의 데이터를 재처리하거나 다시 읽는 것도 가능하다
 
데이터 유실 가능성: 데이터 소스와 소비 시스템 사이의 연결이 끊기면 데이터 유실 위험이 큼.
 
 
 

728x90

관련글 더보기