본 포스팅은 패스트캠퍼스의 '초격차 데이터 엔지니어링 강의' 일부를 개인적으로 정리한 내용입니다.
문제가 되는 부분이나 잘못된 부분은 댓글로 남겨주시면 감사하겠습니다.
1. Hadoop의 필요성
하둡(Hadoop)은 대용량 비정형 데이터를 처리하기 위해 설계된 분산 데이터 처리 시스템이다.
기존 RDBMS는 대용량 데이터를 처리하는데 한계가 있고 비용이 많이 들지만, 하둡은 저렴한 x86 리눅스 서버에서도 쉽게 설치 및 운영할 수 있다. 데이터 용량이 늘어나면 단순히 노드를 추가해 확장할 수 있으며, 데이터 복제 기능을 통해 장애에도 데이터 복구가 가능하다.
또한, 분산된 여러 서버에서 동시에 데이터 처리가 가능해 기존의 데이터 처리 방법보다 성능이 뛰어나다.
한 가지 사례로, 뉴욕 타임즈는 130년치 신문 기사를 하둡을 이용해 하루 만에 모두 PDF로 변환(비용 200만원)했지만, 일반적인 서버에서는 당시 14년이 걸리는 작업이었다고 한다.
Hadoop의 역사
1. Nutch와 Google 논문 (2002-2004)
- Nutch: 2002년에 Doug Cutting과 Mike Cafarella가 오픈소스 웹 크롤러 프로젝트인 Nutch를 시작했고, 이 과정에서 대규모 데이터를 효율적으로 저장하고 처리할 방법을 찾고 있었다.
- Google 논문: 2003년에 Google이 발표한 GFS(Google File System)와 MapReduce 논문은 대규모 데이터 처리를 위한 혁신적인 접근 방식을 제시한다. 이후 해당 논문들은 Hadoop의 핵심 개념이 된다.
- DFS와 MapReduce 추가: Doug Cutting이 Nutch에 DFS(Distributed File System)와 MapReduce를 추가하게 된다.
2. Hadoop의 탄생 (2005)
- Doug Cutting은 Nutch 프로젝트의 경험을 바탕으로 Google의 GFS와 MapReduce 개념을 적용해 새로운 프로젝트인 Hadoop을 시작했다. (이 때, Hadoop이라는 이름은 자신의 아들이 가진 장난감 코끼리에서 따온 것🐘)
3. Apache Hadoop (2006)
- Apache Software Foundation의 프로젝트로 채택되어 오픈소스 커뮤니티에서 발전하기 시작했다. 초기에는 주로 웹 크롤링과 인덱싱 작업에 사용됐다.
- Yahoo!가 Doug Cutting을 고용하고, Hadoop이 Nutch에서 분리되어 독립적인 프로젝트가 됐다.
4. 대규모 채택과 발전 (2007-2010)
- Yahoo는 Hadoop을 검색 엔진에 광범위하게 도입하며 Hadoop의 발전을 크게 촉진하기 시작한다. 이 시기에 Hadoop은 대규모 데이터 분석을 위한 표준 도구로 자리 잡았고, Facebook은 Hive를 출시하여 Hadoop에 SQL 지원을 추가했으며, 뉴욕타임즈는 Hadoop을 사용해 4TB의 이미지 아카이브를 하루 만에 변환하기도 한다.
5. Hadoop 생태계의 발전 (2010년대)
- Hadoop의 기본 구성 요소인 HDFS와 MapReduce 외에도, 데이터 처리와 분석을 위한 다양한 도구와 프레임워크들이 등장하기 시작한다. Hive, Pig, HBase 등은 Hadoop 생태계의 중요한 부분이 됐으며, 2008년에는 Cloudera가 설립되어 Hadoop을 상업적 솔루션으로 제공하기 시작한다.
2. Hadoop의 특징
- 확장성 (Scalable): 하둡은 페타바이트(PB) 규모의 데이터도 문제없이 저장하고 처리할 수 있다.
- 경제성 (Economical): 하둡은 저렴하게 구할 수 있는 컴퓨터들을 묶어 대규모 클러스터를 구성한다. 이러한 클러스터는 수천 대의 노드로 확장할 수 있다.
- 효율성 (Efficient): 데이터를 여러 서버에 분산 저장하고, 각 서버에서 데이터를 병렬로 처리하기 때문에 매우 빠르게 작업을 수행할 수 있다.
- 신뢰성 (Reliable): 하둡은 데이터를 여러 복사본으로 저장하고, 장애가 발생하면 자동으로 작업을 다른 서버에서 다시 수행하여 안정성을 보장한다.
3. Hadoop 생태계
Hadoop V2로의 진화
하둡 생태계의 진화는 크게 두 가지 주요 버전인 Hadoop 1과 Hadoop 2로 나눌 수 있다.
Hadoop 1
- 구조: Hadoop 1은 HDFS(파일 저장 시스템)와 MapReduce(데이터 처리 및 리소스 관리) 두 가지 주요 구성 요소로 이루어져 있다.
- MapReduce: 데이터 처리와 동시에 클러스터의 리소스를 관리하는 역할도 맡았다. 즉, 데이터를 처리하는 작업을 할당하고, 클러스터 내에서 필요한 자원을 관리하는 역할을 모두 했다.
- 제약: 모든 작업이 MapReduce 프레임워크에 의존했기 때문에, 다양한 형태의 데이터 처리에 한계가 있었다. 또한, 리소스 관리가 제한적이어서 대규모 클러스터에서 효율적인 자원 활용이 어려웠다.
Hadoop 2
- 구조: Hadoop 2는 구조가 확장되어 HDFS와 MapReduce 외에도 YARN이라는 새로운 리소스 관리 계층이 추가됐다.
- YARN (Yet Another Resource Negotiator): YARN은 클러스터의 리소스 관리를 전담하는 계층으로, Hadoop 1에서 MapReduce가 맡았던 리소스 관리 기능을 분리하여 담당한다. 이를 통해 더 다양한 종류의 데이터 처리 작업(예: 실시간 스트리밍, 그래프 처리 등)을 수행할 수 있게 됐다.
- 유연성: MapReduce 외에도 Spark, Flink, Storm, HBase, Tez와 같은 다른 데이터 처리 프레임워크를 사용할 수 있게 되어, 하둡 클러스터에서 다양한 작업을 동시에 실행할 수 있게 됐다.
Winner Takes All
대용량 데이터를 다루는 것은 기술적으로 어렵고, 다양한 하드웨어와 소프트웨어와의 호환성 문제로 개발에 많은 시간이 소요된다.
또한, 데이터 규모가 크기 때문에 버그로 인한 문제도 커서 안정적으로 사용하려면 충분한 (성숙의)시간이 필요하다.
하둡 에코시스템은 HDFS와 Yarn을 기반으로 성숙해진 시스템이기 때문에 이제는 이를 대체할 만한 시스템이 나오기가 어려워졌다.
이로 인해 새로운 대용량 분산시스템이 등장할 때는 새로운 시스템을 만들더라도 하둡 생태계를 지원하는 방향으로 기술 개발이 이루어지고 있다.
'Data Engineering > Hadoop' 카테고리의 다른 글
HDFS(Hadoop Distributed File System) (0) | 2024.09.06 |
---|