본문 바로가기
Big Data/Hadoop

하둡(Hadoop) 이란? - 빅데이터와 하둡

by ssenim 2023. 2. 12.

하둡은 빅데이터를 다루는 유용한 도구로서, 기존의 기술로 할 수 없었던 대량의 데이터를 처리할 수 있게 해 주었습니다.

대량의 데이터에 대한 프로세싱 확장성, 데이터 포맷과 구조에 관계없이 데이터를 처리할 수 있게 되었습니다.

즉, 하둡의 사용으로 기존의 데이터 관리 솔루션으로 하지 못하던 대용량 데이터를 처리할 수 있게 되었고,

이러한 이유로 하둡과 빅데이터는 밀접하게 관련되어 함께 거론되거나 혹은 같이 등장하는 경우가 많아지게 되었습니다.

 


 

하둡(High-Availability Distributed Object-Oriented Platform, Hadoop)

하둡(Hadoop)은 대용량 데이터를 분산처리 할 수 있는 자바 기반의 오픈소스 프레임워크입니다.

또한, 대량의 데이터 처리를 위한 병렬 분산 처리 소프트웨어입니다.

** 참고로 하둡이란 하둡의 개발자인 커딩의 아들이 가지고 놀던 코끼리 인형의 이름입니다.

 

1. Hadoop Version

하둡의 버전은 다양합니다.

하둡의 버전이 다양한 것은 하둡이 가지는 단점 중 하나라고 할 수 있는데, 왜 단점인지 이해하기 위해서는

기본적으로 각 버전별 특징을 알아야 하지만, 본 포스팅에서는 대략적인 흐름만 확인하고 넘어가도록 하겠습니다.

 

hadoop 1.0 : 2011년 자바 프레임워크로 분산저장과 병렬처리를 목적으로 탄생

hadoop 2.0 : 1.0을 보완 및 발전시켜 2012년에 정식 발표 (YARN 아키텍처 등장)

hadoop 3.0 : 2.0을 업그레이드하여 2017년에 정식 발표

 

2. 하둡의 구성

하둡은 하둡 분산 파일 시스템인 HDFS에 데이터를 분산저장한 뒤,

병렬처리 시스템인 MapReduce를 이용해 데이터를 병렬처리 합니다.

 

분산저장

- HDFS를 이용해 파일을 적당한 블록 사이즈(64MB)로 나눠 각 노드 클러스터(개별 컴퓨터)에 저장

- 데이터 유실의 위험이나 사람들이 많이 접근할 때 부하처리를 위해 각 블록의 복사본(Replication)을 만들어 저장

 

병렬처리

- 맵리듀스(MapReduce)라는 프레임워크를 이용해 계산

- 맵리듀스는 Map + Reduce라는 두 가지 형식으로 나누어짐

- Map 함수에서 데이터를 처리하고, Reduce 함수에서 원하는 결괏값을 계산

 

 

3. 하둡의 특성

하둡은 아래와 같은 특성/특징을 가지고 있습니다.

  • 대용량 데이터의 일괄 처리에 적합 ⇒ 테라바이트 ~ 페타바이트
  • 확장성이 우수 ⇒ 서버 대수를 늘리면 저장할 수 있는 용량과 처리 성능이 향상
  • 유연한 데이터 구조에 대응 ⇒ 처리 시점에 데이터 정의가 가능
  • Scale-Out 방식을 사용 ⇒ 노드를 추가하여 분산 처리가 가능

** 참고로 단순 Scale-Up 방식으로는 엄청난 양의 데이터를 수집, 가공, 분석할 수 없습니다.

 

3.1 하둡의 서버 구성

HDFS의 마스터 서버 : 네임노드(NameNode)  /  슬레이브 서버 : 데이터노드(DataNode)

MapReduce의 마스터 서버 : 잡트래커(JobTracker)  /  슬레이브 서버 : 태스크트래커(TaskTracker)

** 참고로 소규모 하둡 클러스터에서는 JobTracker와 NameNode를 하나의 장비 내에서 동작하고,

    대규모 하둡 클러스터에서는 각 한 대씩 동작합니다.

 

3.2 HDFS의 편리성

- 투과성 : 사용자는 파일이 어떻게 블록으로 분할되어 있는지 의식할 필요가 없음

- 확장성 : 디스크 용량이 부족하면 서버를 추가하기만 하면 됨

 

3.3 HDFS의 신뢰성

하나의 서버가 고장 나 블록에 접근할 수 없게 되더라도 다른 서버에 동일한 블록이 존재하므로 데이터 소실 위험 낮음

 

3.4 NameNode의 위험성

- 마스터 서버인 NameNode가 고장 나면 HDFS 전체가 망가질 수 있음

- HDFS에서 NameNode는 단일 장애지점(Single point of failure, SPOF)

- 이러한 경우, NameNode의 이중화(HA 구성)로 해결

  • NameNode가 손상되거나 중단되면 모든 작업이 중지되고, 파일을 읽거나 쓸 수 없게 됨
  • Hadoop 2.0에서 위의 문제를 해결하기 위해 제공한 것이 HDFS High Availability (HDFS의 고가용성)
단일 장애지점(Sigle point of failure, SPOF)이란,
시스템 구성 요소 중 동작하지 않으면 전체 시스템이 중단되는 요소입니다.
장애회복성을 위해서는 SPOF가 없어야합니다.
고가용성(High Availability, HA)이란,
서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말합니다.

가장 기본적인 구성이 바로 활성(Active) - 대기(Standby) 구조이며,
고가용성은 이중화된 두 대의 서버인 Active NameNode와 Standby NameNode를 이용해 지원합니다.

액티브 네임노드와 스탠바이 네임노드는 데이터 노드로부터 block report와 heartbeat를 모두 받아서 동일한
메타데이터를 유지하고, 공유 스토리지를 이용하여 에디트파일을 공유합니다.

HA 솔루션은 쉽게 말해, 서버 2대를 통해 한쪽 서버가 장애 시 다른 한쪽 서버가 해당 서비스를 대신 운영하여

가용성을 높이는 높이는 것입니다.

HA 구성에는 GJM(Quorum Journal Manager) 방식과 NFS(Network File System) 방식이 있고,
이중화 HA 솔루션이 갖추어야 할 기본 기능은 데이터 복제 기능과 장애 감시 기능입니다.

액티브 네임노드에 문제가 발생하는 것을 자동으로 확인하는 것이 어렵기 때문에

보통 Zookeeper를 이용하여 장애 발생 시 자동으로 스탠바이 네임노드로 변경될 수 있도록 합니다.

스탠바이 네임노드는 보조 네임노드(Secondary NameNode)의 역할을 동일하게 수행하기 때문에

HDFS를 고가용성 모드로 설정하였을 때는 보조 네임노드를 실행하지 않아도 됩니다.

** 참고로 고가용성 모드에서 보조 네임노드를 실행하면 오류가 발생합니다.

 

 

4. 하둡과 RDBMS

하둡은 분산 파일 시스템인 HDFS에 데이터를 저장하고, MapReduce를 이용하여 대용량의 데이터를 처리합니다.

하둡은 DBMS가 아닌 프레임워크로, 여러 개의 컴퓨터를 하나로 묶어 대용량 데이터를 처리하는 기술입니다.

 

관계형 데이터베이스 관리 시스템(RDBMS)은 데이터를 수집해 2차원의 테이블로 분류하여 관리합니다.

하지만, 이것은 데이터의 크기가 어느 정도 일정할 때의 이야기이며, SNS와 같은 여러 형태/종류의

비정형 데이터일 때는 이야기가 달라지게 됩니다.

특히, RDBMS에서는 데이터의 중복성과 종속성을 제거하기 위해 정규화를 수행하는데, 이러한 동작은 MapReduce에서 모든 데이터의 정규화가 불가능할 뿐만 아니라, 속도 및 성능의 저하가 일어나기 때문에 문제가 됩니다.

 

4.1 하둡 vs RDBMS

  • 정형데이터 → RDBMS 저장
    • RDBMS: 데이터가 저장된 서버에서 데이터를 처리
  • 비정형데이터(사이즈 큼) → Hadoop 저장
    • Hadoop: 여러 대의 서버에 데이터를 저장하고, 데이터가 저장된 각 서버에서 동시에 데이터를 처리

기존 RDBMS와 비교

 

  • RDBMS의 디스크 I/O단위인 블록사이즈는 8kB, 16kB 정도로 1초에도 여러 번 실행하지만,                                Hadoop에서는 1회 접속으로 수십 메가바이트에서 수백 테라바이트까지 처리
  • RDBMS는 수 밀리초~수 초 정도의 짧은 응답시간을 요구하지만,                                                                        Hadoop에서는 분산처리를 위한 전처리가 필요하여 최저 10~20초 정도의 오버헤드가 발생

 


 

 

하둡 카테고리의 모든 포스팅에 작성된 내용은 제가 대학교 수업 과정에서 내운 배용과

따로 찾아서 공부한 내용들을 이해하고 정리해서 작성한 내용입니다.

틀린 부분 혹은 이상한 부분이 있으면 말씀해 주시면 확인 후 바로 수정하도록 하겠습니다.

 

하둡의 기본적인 배경과 구성 등 기초적인 부분부터 hdfs, map-reduce, eco-system, yarn까지

쭉 읽으면서 흐름대로 따라갈 수 있도록 한 포스팅에 정리하여 작성하였다가, 따로 정리해서 포스팅하는게 복잡하지 않을 것 같아서 다시 수정하였습니다. 하둡과 관련된 모든 포스팅에 해당하는 참고 자료는 아래 주소를 확인 바랍니다.

이외에 추가적인 부분, 참고해야 할 부분이 생길 텐데 그에 대한 내용은 새롭게 포스팅하여 작성할 예정입니다.

 

 


 

 

참고자료

시작하세요! 하둡 프로그래밍 - 정재화 - 위키북스

빅데이터 시대의 하둡 완벽 입문 - 오오타 카스키 외 - 제이펍

https://mangkyu.tistory.com/127

https://developer-woong.tistory.com/9

https://kadensungbincho.tistory.com/36

https://dabingk.tistory.com

https://suseongkim87.tistory.com/11

https://tkdev.tistory.com/92?category=627395

https://magpienote.tistory.com/224

https://c774c6a9d658.gitbooks.io/hadoop_study/content/yarnc758_c774_d574.html

https://wooono.tistory.com/57

https://www.2e.co.kr/news/articleView.html?idxno=301587

https://benlee73.tistory.com/194

https://blrunner.tistory.com/99

https://velog.io/@kimdukbae/Hadoop-Eco-System-%ED%95%98%EB%91%A1-%EC%97%90%EC%BD%94-%EC%8B%9C%EC%8A%A4%ED%85%9C

https://www.ibinfo.co.kr/computer-tip-2/%EC%84%9C%EB%B2%84-%EC%9D%B4%EC%A4%91%ED%99%94ha-%EC%86%94%EB%A3%A8%EC%85%98%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

https://123okk2.tistory.com/252

댓글