티스토리 뷰

Development/Big Data

아파치 하둡이란?

Junchoi 2019. 12. 26. 14:50

아파치 하둡이란?

대용량 데이터를 처리해주는 소프트웨어 프레임워크 입니다.

 

원래는 웹 검색 엔진이었던 아파치 너치(Apache Nutch)의 데이터를 관리하기 위해 개발되었습니다.

 

당시 너치는 수십억 웹 페이지를 크롤링하고 색인을 할 만큼의 데이터를 처리하는 기술이 없었지만

 

구글에서 공개한 GFS(Google File System)와 맵리듀스(Map Reduce)를 바탕으로 NDFS(Nutch Distributed File System)를 오픈소스로 구현하여 맵리듀스와 함께 너치에 적용할 수 있었습니다.

 

그리고 프로젝트가 점차 확장하여 독립된 프로젝트로 구성되었고 하둡과 같이 사용해 데이터를 관리할 수 있는 다양한 프로젝트들이 생겨나며 하둡 에코시스템이라는 하둡 생태계가 갖추어졌고 현재 다양한 기업에서 하둡 에코시스템을 사용하고 있습니다.

 

(당신이 배워야 할 수많은 프로젝트들로 구성된) 하둡 에코 시스템

 

그래서 하둡이 어떻게 대용량 데이터를 처리할 수 있을까?

 

하둡의 핵심 아이디어는 데이터를 분산시켜 저장하는 것 입니다.

 

아무리 컴퓨팅 성능이 좋아지고 있지만 데이터의 양이 증가하는 만큼 성능이 비례해서 발전하지 못합니다.

그렇기 때문에 뛰어난 성능의 컴퓨터 한 대에서 데이터를 처리하는 방식인 Scale Up 방식으로는 엄청나게 많은 양의 데이터를 처리하기가 힘드니까 여러 대의 컴퓨터에 데이터를 분산시켜 저장하고 처리하는 Scale Out 방식을 적용하는 것이죠.

 

이러한 Scale Out 방식을 적용하기 위해선 여러 기능들이 필요한데요

 

1) Partial Failure 대처

2) 데이터 Recoverability

3) 컴포넌트 Recovery

4) Consistency

5) Scalability

 

이러한 5가지 기능들이 포함되어야 분산 시스템의 기능을 제대로 사용할 수 있습니다.

 

여러 대의 노드들 중 하나의 노드가 고장이 나면 성능에 영향을 미치니 해당 노드를 recover한 후 시스템에 rejoin 할 수 있어야하고, 고장이 나더라도 작업은 계속 수행되어야 하며 고장으로 인한 데이터 손실이나 작업의 결과에 영향이 있어서는 안되겠죠

 

하둡은 이러한 기능을 포함하여 분산처리를 할 수 있도록 구성요소가 이루어져 있습니다.

하둡에 있는 HDFS(Hadoop Distributed File System)맵 리듀스가 바로 그 기능을 수행합니다.

 

이 두가지 요소에 대해서는 다음 글에서 자세하게 다뤄보겠습니다!