Hadoop
- Apache Hadoop, High-Availability Distributed Object-Oriented Platform
- 대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크
- Hadoop은 주로 디스크 사용량이 많고 맵리듀스 패러다임을 사용하는 작업에 사용된다.
Hadoop 아키텍처
- 하둡은 하둡 공통 패키지로 구성되어 있다.
- 해당 패키지에는
1. 하둡 파일 시스템 (HDFS)
2. OS 수준 앱스트랙션 (OS level abstractions)
- 맵 리듀스 엔진 (MapReduce)
- 자바 아카이브 파일, 하둡을 시작할 스크립트, 소스 코드들과 관련 자료
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
Advantages of Haddop
-
다음과 같은 장점이 있다.
1. Flexibility
- 구조화, 반구조화, 비구조화 데이터를 모두 처리할 수 있다.
2. Scalability
3. Falut tolerance and data protection
- Hadoop은 데이터 손실을 방지하기 위해 데이터 정보를 복제하고 또한 클러스터의 노드에 문제가 생겨도 지속적으로 운영할 수 있도록 설계되었다.
4. Cost-effective
- hadoop은 값싼 상용 하드웨어에서 실행할 수 있다.
Limitations of 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, 다양한 언어 지원하므로 쉽게 배우고 사용할 수 있다.
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/
잘정리해주셔서 감사합니다