top of page

Apache™ Hadoop®

hadoop.png

대규모 데이터 세트를 효율적으로 처리하는 데 사용할 수 있는 오픈 소스 소프트웨어 프로젝트입니다. 하나의 대형 컴퓨터를 사용하여 데이터를 처리 및 저장하는 대신, 하둡을 사용하면 상용 하드웨어를 함께 클러스터링하여 대량의 데이터 세트를 병렬로 분석할 수 있습니다.

하둡(Hadoop) 이란?

하둡은 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈 소스 프레임워크이다. 하둡은 구글이 논문으로 발표한 GFS(Google File System)과 맵리듀스(MapReduce)를 2005년 더그커팅이 구현한 결과물이다. 하둡은 분산시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장하고, 맵리듀스를 이용해 데이터를 처리한다.

하둡은 여러 대의 서버에 데이터를 저장하고, 저장된 각 서버에서 동시에 데이터를 처리하는 방식이다.

 

하둡은 기존의 RDBMS(Oracle,MS-SQL, MySQL등)을 대치하는 것이 아니다. 즉 트랜젝션이나 무결성을 보장해야하는 데이터처리에는 적합하지 않다. 하둡은 배치성으로 데이터를 저장하고 처리하는데 적합한 시스템이다.

쇼핑물에서 회원가입이나, 결제진행등은 모두 트랜젝션이나 무결성을 보장해야한다. 이런 것들을 하둡으로 처리하는 것이 아니라, 회원이 관심있게 보는 물품들이나, 이동경로, 머무르는 시간등 배치성으로 저장되는 데이터에 적합하다. 이런 것들을 매번 비용이 비싼 RDBMS에 저장하면 낭비요소이다.

그러므로 하둡은 RDBMS와 경쟁하는 것이 아닌 RDBMS와 협력하는 것이라 볼 수 있다.

하둡은 일반적으로 MapReduce(실행 프레임워크), YARN(리소스 관리자) 및 HDFS(분산 스토리지)가 포함된 실제 Apache Hadoop 프로젝트를 지칭합니다. 하둡 MapReduce 대신 실행 엔진으로 사용할 수 있는 차세대 프레임워크인 Apache Tez를 설치할 수 있습니다.  

하둡 에코시스템에는 지연 시간이 짧은 쿼리, 대화형 쿼리를 위한 GUI, SQL과 같은 다양한 인터페이스, 분산 NoSQL 데이터베이스 등을 지원하는 도구를 포함하여 다른 애플리케이션 및 프레임워크가 있습니다. 하둡 에코시스템에는 하둡 핵심 구성 요소에 추가 기능을 구축할 수 있도록 설계된 다양한 오픈 소스 도구가 포함되어 있으며, Amazon EMR을 사용하여 Hive, Pig, Hue, Ganglia, Oozie 및 HBase와 같은 도구를 클러스터에 손쉽게 설치 및 구성할 수 있습니다. 또한, 하둡 외에도 인 메모리 처리를 위한 Apache Spark 또는 대화형 SQL을 위한 Presto 등 다른 프레임워크를 실행할 수 있습니다.

"하둡이라고 알려져 있는 프레임워크는 몇 가지 구성요소들로 이뤄져 있는데, 그 가운데 특히 중요한 두 요소는 맵리듀스 데이터처리 프레임워크와 하둡 분산형 파일시스템(Hadoop Distributed Filesystem, HDFS)과 유사한 분산형 파일시스템이다.”

hadoop01.png

하둡 분산형 파일시스템(Hadoop Distributed FileSystem, HDFS)

1. HDFS는 데이터를 저장하면, 다수의 노드에 복제 데이터도 함께 저장해서 데이터 유실을 방지

2. HDFS에 파일을 저장하거나, 저장된 파일을 조회하려면 스트리밍 방식으로 데이터에 접근해야 함.

3. 한번 저장한 데이터는 수정할 수 없고, 읽기만 가능하게 해서 데이터 무결성을 유지.

      (2.0 알파버전부터는 저장된 파일에 append가 가능하게 됨)

4. 데이터 수정은 불가능 하지만 파일이동, 삭제, 복사할 수 있는 인터페이스를 제공함.

hadoop02.png

네임노드(Namenode)는 마스터 노드(Master node) 또는 파일 시스템 네임스페이스(File System Namespace) 역할을 담당하는 노드로써, 파일과 디렉토리에 대한 메타 데이터(Meta data) 정보를 저장하는 역할을 담당합니다. 메타 데이터에는 디렉토리(Directory)의 구조, 파일에 대한 정보와 파일이 저장되어 있는 물리적인 위치와 같은 정보가 저장됩니다. 또한 데이터노드로의 블록 매핑을 판단합니다. 데이터노드(Datanode)는 요청한 파일을 읽거나 저장하는 역할을 담당하고 네임노드의 지시에 따라 블록을 생성, 삭제 그리고 복제 작업을 수행합니다.

 

네임노드와 데이터노드는 컴퓨터에서 실행하도록 설계된 소프트웨어의 조각입니다. 이러한 컴퓨터들은 일반적으로 GNU 리눅스(Linux) 운영체제를 사용합니다. 하둡 분산 파일 시스템(HDFS)은 자바 언어(Java Language)를 사용하여 만들어졌습니다. 자바를 지원하는 어떤 컴퓨터에서도 네임노드 또는 데이터노드 소프트웨어를 수행할 수 있습니다. 높은 이식성의 자바 언어의 사용은 하둡 분산 파일 시스템(HDFS)가 광범위한 컴퓨터에 배포될 수 있음을 의미합니다.

MapReduce

  • MapReduce는 Hadoop 클러스터의 데이터를 처리하기 위한 시스템으로 총 2개(Map, Reduce)의 phase로 구성됩니다.

  • Map과 Reduce 사이에는 shuffle과 sort라는 스테이지가 존재합니다.

  • 각 Map task는 전체 데이터 셋에 대해서 별개의 부분에 대한 작업을 수행하게 되는데, 기본적으로 하나의 HDFS block을 대상으로 수행하게 됩니다. 

  • 모든 Map 태스크가 종료되면, MapReduce 시스템은 intermediate 데이터를 Reduce phase를 수행할 노드로 분산하여 전송합니다. 

hadoop05.png

​하둡 에코시스템

hadoop04.png
bottom of page