래원

[Hadoop] Apache Hadoop 소개 본문

Data Engineering/Hadoop

[Hadoop] Apache Hadoop 소개

Laewon Jeong 2024. 11. 24. 17:36

Apache Hadoop

 

이번 글에서는 Apache Hadoop에 대한 소개를 하려고 한다.

 

Hadoop을 이해하기 위해서는 빅데이터(Big Data)에 대한 이해가 필요하다.

 

빅데이터에 대해 먼저 알아보자

 

빅데이터(Big Data)? 


빅데이터 3V.

 

21세기에 들어서면서 데이터 생성량이 기하급수적으로 증가하기 시작해 빅데이터라는 개념이 등장했다.

 

그렇다면 빅데이터는 뭘까? 빅데이터에 대한 정의는 다음과 같다.

기존 DB 관리도구의 능력을 넘어서는 대량의 데이터(수십 TB(Terabyte)) 혹은 비정형의 데이터 집합

 

 

빅데이터는 3V(크기(Volume), 속도(Velocity), 다양성(Variety))라는 특징을 가지게 된다.

  • 크기(Volume): 방대한 데이터의 양을 특징으로 함, 단순히 데이터베이스나 단일 서버에서 처리할 수 없는 수준의 데이터
  • 속도(Velocity): 데이터가 생성되고 전달되는 속도도 중요, 최근 데이터는 실시간으로 생성되며 빠르게 처리되지 않으면 의미를 잃어버릴 수 있음
  • 다양성(Variety): 텍스트, 이미지, 동영상, 오디오 등 다양한 데이터 형태의 데이터를 포함

 

이러한 빅데이터가 등장하면서 이를 처리하기 위해 기존의 데이터 처리 기술의 문제점들이 드러났다.

  1. 저장 공간 부족
  2. 처리 속도 문제
  3. 비용 문제

이 문제를 해결하기 위해 분산 저장과 병렬 처리를 기반으로 새로운 기술이 필요하게 되었다.

 

그 중 대표적인 것이 Apache Hadoop이다.

 

What is Hadoop?


Hadoop Overview.

 

Hadoop이란 다음과 같다.

분산 컴퓨팅 환경에서 대량의 데이터를 저장하고 처리하는 데 사용되는 오픈소스 소프트웨어 프레임워크

 

 

이는 Java 프로그래밍을 기반으로 하며 일부 네이티브 코드는 C와 shell script로 되어있다.

 

Hadoop에 대해 간단하게 설명하면 데이터를 여러 서버에 분산하여 저장하고, 데이터를 병렬로 처리하여 속도를 향상시킨다.

이는 HDFS(Hadoop Distributed File System)MapReduce를 통해 가능하다.

 

위 그림에서 볼 수 있듯, HDFS를 통해 데이터를 블록 단위로 분산하여 저장하고 MapReduce를 통해 결과를 받아오는 것을 알 수 있다.

(HDFS와 MapReduce의 대한 내용은 추후에 포스팅할 예정이다.)

 

Hadoop 탄생 배경


Hadoop의 탄생 배경은 Google의 두 가지 논문에서 시작되었다.

  1. Ghemawat, Sanjay, Howard Gobioff, and Shun-Tak Leung, "The Google file system." Proceedings of the nineteenth ACM symposium on Operating systems principles. 2003.
  2. Dean, Jeffrey, and Sanjay Ghemawat. "MapReduce: Simplified data processing on large clusters." (2004).

이 두 논문은 Hadoop 설계의 기초가 되었으며, Yahoo!의 엔지니어였던 Doug Cutting이 이를 오픈소스 프로젝트로 구현하면서 Hadoop이 탄생하게 되었다.

 

이름이 Hadoop인 이유는 그의 아들이 사랑하던 장난감 코끼리 이름 Hadoop에서 명명했다고 한다.

 

현재 Hadoop은 아파치 소프트웨어 재단에서 관리하며, 공개 소프트웨어로 지속적으로 개발 및 개선되고 있다.

글 작성 기준 최신 버전은 3.4.1

 

Hadoop Ecosystem


Hadoop Ecosystem.

 

Hadoop의 인기가 높아짐에 따라, 다양한 오픈소스 솔루션들이 Hadoop과 연동되어 지속적으로 발전하며 Hadoop Ecosystem을 구성하게 되었다.

 

Hadoop Ecosystem은 Apache Hadoop 소프트웨어 라이브러리의 다양한 구성 요소들이 모여 이루어진 시스템으로, 이를 통해 대규모 데이터를 저장, 처리, 분석하는 데 필요한 필수적인 기능들이 제공된다.

 

그림을 보면 대부분 동물 이름으로 이루어져 마치 생태계를 이루는 것처럼 보여서 Ecosystem(생태계)이라는 이름이 붙지 않았을까 하는 생각이 든다..

 

Hadoop Ecosystem은 크게 두 가지 주요 부분으로 나눌 수 있다:

  1. Core Hadoop modules: Hadoop의 핵심 기능을 담당하는 모듈들 (예: HDFS, YARN, MapReduce 등)
  2. Hadoop Ecosystem modules(sub modules): Hadoop을 보완하는 서브 모듈들 (예: Apache Hive, Apache Pig 등)

각 모듈에 대해 알아보자

 

Core Hadoop modules

Core Hadoop modules.

 

Core Hadoop 모듈은 Hadoop의 핵심 기능을 담당하는 모듈들로 4가지의 모듈이 있다.

각 모듈에 대해 간단히 소개하면 아래와 같다.

  • HDFS (Hadoop Distributed File System): 클러스터에서 대규모 데이터를 저장하고 처리하도록 설계된 분산 파일 시스템
  • YARN (Yet Another Resource Negotiator): 리소스 관리, 작업 계획, 작업 스케줄링 프레임워크
  • MapReduce: 프로그래밍 모델이자 대용량 데이터 집합의 병렬 처리에 사용되는 빅데이터 처리 엔진
  • Hadoop Common: 다른 Hadoop 모듈을 지원하기 위해 라이브러리와 유틸리티 전반에 걸쳐 일련의 서비스를 제공

각 HDFS와 YARN, MapReduce의 자세한 내용은 추후에 포스팅할 예정이다.

 

Hadoop은 위 모듈들(HDFS, YARN, MapReduce, Hadoop Common)만으로도 분산 데이터 저장 및 처리가 가능하지만,
서브 모듈들을 통해 Hadoop의 기능을 확장하거나 특정 작업을 더 편리하게 수행할 수 있다.

 

몇가지 알아보자

 

Hadoop Ecosystem modules (sub modules)

앞서 설명했듯이, Hadoop은 기본 모듈만으로도 분산 데이터 저장 및 처리가 가능하지만, 에코시스템에 포함된 다양한 기술을 활용하면 기능을 확장하거나 특정 작업을 더 편리하게 수행할 수 있다.

 

아래는 몇가지 예를 보여준다.

  • Apache Hive: SQL 기반의 데이터 웨어하우스 시스템
  • Apache Impala: Hive와 유사하지만 실시간 SQL 쿼리 처리에 초점을 맞춘 데이터 분석 엔진
  • Apache Pig: 고급 데이터 분석 및 스크립팅을 위한 플랫폼
  • Apache Zookeeper: 분산 시스템의 동기화 서비스를 제공하며, 주로 분산 애플리케이션의 관리 및 조정에 사용
  • Apache Sqoop: 관계형 데이터베이스와 Hadoop 간에 데이터를 전송하는 데 사용되는 도구
  • Apache Oozie: Hadoop 작업의 워크플로우 관리 시스템
  • Apache Flume: 실시간으로 데이터를 수집하고 전송하는 시스템으로, 로그 데이터 수집 및 스트리밍 데이터 처리를 위한 도구
  • Apache Mahout: 기계 학습을 위한 알고리즘 라이브러리로, 대규모 데이터 처리에 적합한 기계 학습 모델을 제공

이 외에도 다양하게 존재하며 각각 특정 작업에 최적화된 기능을 제공한다.

 

Hadoop Ecosystem은 Hadoop 환경을 더욱 강력하게 확장하며, 대규모 데이터 저장 및 처리뿐만 아니라 실시간 분석, 데이터 수집, 기계 학습까지 폭넓은 기능을 제공한다.

 

마무리


이번 글에서는 왜 Hadoop을 사용해야 하는지와 Hadoop의 탄생 배경, Hadoop Ecosystem에 대한 내용을 소개하였다.

 

추후에는 Hadoop의 핵심 기능을 담당하는 HDFS, YARN, MapReduce에 대한 내용을 포스팅할 예정이다.

 

나아가 Hadoop 설치 및 간단한 실습들을 진행해볼 예정이다.

 

'Data Engineering > Hadoop' 카테고리의 다른 글

[Hadoop] Hadoop MapReduce를 이용한 Word Count 실습  (3) 2024.12.03
[Hadoop] Apache Hadoop 설치  (1) 2024.12.03
[Hadoop] MapReduce와 YARN  (0) 2024.12.02
[Hadoop] HDFS란?  (0) 2024.12.01