분산 처리 - Hadoop, Spark, Kafka

강혜성·2023년 2월 22일
3

분산처리

목록 보기
1/18

Hadoop

  • Apache Hadoop, High-Availability Distributed Object-Oriented Platform
  • 대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크
  • Hadoop은 주로 디스크 사용량이 많고 맵리듀스 패러다임을 사용하는 작업에 사용된다.

Hadoop 아키텍처

  • 하둡은 하둡 공통 패키지로 구성되어 있다.
  • 해당 패키지에는
    1. 하둡 파일 시스템 (HDFS)
    2. OS 수준 앱스트랙션 (OS level abstractions)
    1. 맵 리듀스 엔진 (MapReduce)
    2. 자바 아카이브 파일, 하둡을 시작할 스크립트, 소스 코드들과 관련 자료

Spark

  • 오픈 소스 클러스터 컴퓨팅 프레임워크
  • SQL, 스트리밍, 머신러닝 및 그래프 처리를 위한 기본 제공 모듈이 있는 대규모 데이터 처리용 통합 분석 엔진

Apache Spark의 이점

  • 속도 : Hadoop 맵리듀스보다 100배 빠른 속도로 워크로드를 실행할 수 있다. (In-memory)
  • 사용 편의성 : 병렬 앱을 쉽게 빌드할 수 있게 해주는 80개가 넘는 상위 수준 연산자를 제공
  • 보편성 : 다양한 라이브러리를 지원
  • 오픈소스 프레임워크 혁신 : 글로벌 오픈소스 커뮤니티를 통해 문제 발생시 쉽게 해결할 수 있다.

https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%ED%95%98%EB%91%A1

https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%8A%A4%ED%8C%8C%ED%81%AC

https://cloud.google.com/learn/what-is-apache-spark?hl=ko


Hadoop vs. Spark vs. Kafka - How to Structure Modern Big Data Architecture?

Apache Hadoop as a Data Processing Engin

  • Apache Hadoop은 오프소스 big data 처리 프레임워크이다.
  • 분산 방식으로 많은 양의 데이터를 다루기 위한 목적으로 설계되었다.
  • 구조화, 반구조화, 비구조화 된 데이터를 저장할 수 있으며 비용 효율적이며 확장성이 뛰어나다.
  • 큰 데이터를 작은 조각으로 나눈다음 하둡 클러스테어 속해 있는 다른 서버나 노드에 보낼 수 있다.
  • 사용자가 사용하기 쉬운 API를 통해 시스템의 기능에 직접 접근할 수 있다.

Apache Hadoop Use Cases

  • Apache Hadoop에는 다양한 사용 사례가 있지만 일반적으로 MapReduce를 사용하는 지연 처리가 허용되는 계산 작업에 사요오딘다.

  • 나중에 분석할 수 있는 보관된 데이터를 저장한는데 적합하다.

  • 아래는 Use Case

    1. Web log analysis

    • Hadoop은 웹 사이트의 사용과 활동과 관련된 보고서를 생성하는 웹 서버 로그를 처리하는데 사용된다.

    2. Clickstream anaysis

    • 웹 사이트에 대한 사용자의 행동을 이해하기 위한 clickstream 데이터를 처리한데 사용된다.

    3. Big data analytics

    • insights를 제공하기 위해 대규모 데이터를 분석하는데 사용할 수 있다.

    4. Calculating tasks that are not time-sensitive

    • hadoop은 실시간 처리 엔진이 아니기 때문에 시간에 민감하지 않은 작업을 처리하는데 적합하다.

Advantages of Haddop

  • 다음과 같은 장점이 있다.

    1. Flexibility

    • 구조화, 반구조화, 비구조화 데이터를 모두 처리할 수 있다.

    2. Scalability

    • 확장성이 좋다.

    3. Falut tolerance and data protection

    • Hadoop은 데이터 손실을 방지하기 위해 데이터 정보를 복제하고 또한 클러스터의 노드에 문제가 생겨도 지속적으로 운영할 수 있도록 설계되었다.

    4. Cost-effective

    • hadoop은 값싼 상용 하드웨어에서 실행할 수 있다.

Limitations of Hadoop

  • 많은 이점에도 불구하고, hadoop은 big data 처리하기 위해 고려해야 할 몇가지 사항들이있다.

    1. High-thorughput, but with high latency

    • 대용량 데이터를 처리할 수 있지만 hadoop은 배치 처리용으로 설계되었기 때문에 처리 시간이 오래걸린다.

    2. Not suitable for real-time data processing

    • hadoop은 실시간 처리용으로 설계되어있지 않다.

    3. Complexity

    • hadoop은 최적의 성능을 위해 조정해야 하는 많은 구성요소가 있다.

Apache Spark as a Batch Processing and Streaming Mechanism

  • Apache Spark는 높은 수준의 API를 제공하는 오픈소스 범용 분산 처리 시스템이다.
  • MapReduce를 대체하고 느린 배치 처리 시간과 실시간 데이터 분석 지원 부족 등의 단점을 개선하도록 설계되었다.

Spark Ecosystem

1. Spark Core

2. Spark SQL

3. Spark Streaming and Structured Streaming

4. MLlib

5. GraphX

Apache Spark Use Cases

  • 일반적으로 처리 시간이 중요할 때 사용된다.

1. Real-time processing and insight

  • 실시간에 가까운 데이터 처리가 가능하다.

2. Machine learning

  • Spark의 MLlib를 이용해 대용량 데이터 셋을 이용해 머신러닝 모델을 학습키고 애플리케이션에 적용시킬 수 있다.

3. Graph processing

  • Spark GraphX를 사용하여 소셜 네트워크 또는 도로 네트워크와 같은 그래프 구조 데이터를 처리할 수 있다.

Advantages of Spark

1. Flexibility

  • Apache Spark는 일괄 처리, 스트리밍, 대화형 분석, 기계 학습 및 SQL에 사용할 수 있다. 이 모든 프로세스는 하나의 애플리케이션에 결합될 수 있다.

2. Speed

  • RAM을 사용하므로 대부분의 워크로드에서 MapReduce보다 훨씬 빠르다.

3. Developer friendly

  • 간단한 API, 다양한 언어 지원하므로 쉽게 배우고 사용할 수 있다.

Apache Kafka as a Distributed Streaming Platform

  • Apache Kafka는 개발자가 데이터 스트림을 지속적으로 생성하고 소비하는 애클리케이션을 만들 수 있는 오픈 소스 분산 스트리밍 플랫폼이다.

  • 실시간으로 발생하는 이벤트에 반응하는 애플리케이션을 생성할 수 있다.

Kafka Ecosystem

1. Kafka Brokers

2. Kafka Topics

3. Kafka Producers

4. Kafka Consumers

5. Zookeeper

Apache Kafka Use Cases

  • Apache Kafka는 실시간 스트리밍 데이터 파이프라인 및 실시간 스트리밍 애플리케이션과 같은 다양한 사용 사례에 사용할 수 있다.

1. Messaging

  • Kafka를 Message broker로 메시지를 발행하고 구독하는데 사용할 수 있다.

2. Website Activity Tracking

  • 거의 실시간에 가까운 웹 사이트 활동을 추적할 수 있다.

3. Metrics

  • 거의 실시간으로 여러 서버에서 System metrics 수집하고 모니터링 할 수 있다.

4. Log Aggregation

  • 거의 실시간으로 여러 서버의 애플리케이션 로그를 집계하고 모니터링 할 수 있다.

Advantages of Kafka

1. Scalability

  • 수평적 확장이 가능하다. 시스템에 노드들이 추가되어 데이터의 양이 늘어나도 수평적 확장으로 처리가 가능하다.

2. Fault-tolerant

  • 여러 서버에 데이터를 복제하고 노드 오류에서 자동으로 복구할 수 있다.

3. Low latency and high throughput

  • 지연이 적어 메세지가 빨리 처리된다.

Limitations of Kafka

1. Tweaking messages

  • 메세지가 발행 된 이후 바꾸기 어렵다. 또한 메세지는 시스템에 영향을 끼친다.

2. Retention of data and reading directly from Kafka is expensive

  • Kafka clusters에 데이터를 오래 저장하는 경우 비용이 비싸다.

3. Unnecessary consuming and computing

  • Consumer는 특정 필드에 Access 하기 위해 전체 레코드를 읽는다.

https://nexocode.com/blog/posts/hadoop-spark-kafka-modern-big-data-architecture/


1개의 댓글

comment-user-thumbnail
2023년 12월 8일

잘정리해주셔서 감사합니다

답글 달기