Skip to content

하둡 #
Find similar titles

Structured data

Category
Big Data

하둡(Hadoop)이란? #

  • 대용량 데이터를 분산 처리할 수 있는 자바기반의 오픈소스 프레임워크이다. 구글이 나오면서 굉장히 많은 데이터를 가져온 사례가 있었다. 구글에서의 데이터들이 빅데이터가 되었으나, 빅데이터를 분석하고 처리하는 프레임워크가 존재하지 않았다. 그래서 구글이 생각한게 데이터를 모아서 처리할 수 있는 프레임워크가 필요하다고 생각했고, 실제 빅데이터를 처리할 수 있는 프레임워크를 만들었으나, 구글은 그 소스를 오픈하지 않았다. 반면, 아파치는 전세계 공개 소프트웨어를 생산하는 비영리 조직이고 구글의 방식을 따라 아파치 그룹에서 제공한 오픈소스 프로젝트이다.
  • 하둡이 인기가 있는 이유?
    • 분산 프로그래밍에 대한 IT업계에서의 요구를 충족시켜주는 software이기 때문
  • 그렇다면 분산 프로그래밍이 대체 무엇인가?
    • 하드디스크 드라이브의 저장 용량은 지난 수년 동안 엄청나게 증가한 반면, 엑세스 속도는 그에 미치지 못하였다.
    • 1990년 전체드라이브를 읽어오는 시간이 5분이라면, 20년이 지난 현재 1테라바이트 저장공간은 2시간 반 이상이 걸린다.
  • 시간을 줄이기 위한 최고의 방법은?
    • 한번에 여러 디스크로부터 데이터를 읽는 것.
      • 100개의 드라이브가 있고, 각 드라이브는 데이터의 100분의 1을 저장했다고 가정해보자. 병렬로 동작한다면 우리는 2분 내에 데이터를 읽을 수 있다.
      • 다시 말해 하둡은 HDFS(Hadoop Distributed File System)라는 데이터 저장소와 맵리듀스(MapReduce)라는 분석 시스템을 통해 분산 프로그래밍을 수행하는 프레임워크인 것이다.
  • 그런데 왜 하둡을 사용하는가?
    • 한마디로 RDBMS는 비싸고 하둡은 저렴하기 때문이다.
    • RDBMS는 빅데이터의 대용량 데이터를 감당하기엔 비용이 너무 크다.
    • 한 예로, 2008년 뉴욕타임즈의 130년 분량의 신문기사 1,100만 페이지를 하둡을 이용해 하루만에 200만원의 비용을 들여 PDF로 변환하였다. 이는 일반 서버로 진행했을 경우, 약 14년이 소요되는 작업이였다.
    • 이렇듯 하둡은 분산 컴퓨팅 방식을 이용해서 저렴한 구축 비용과 비용대비 빠른 데이터 처리, 그리고 장애를 대비한 특성을 갖추고 있으므로 사용한다.

HDFS(Hadoop Distributed File System) #

수십 테라바이트 또는 페타바이트 이상의 대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 파일 시스템이다. 또한, 저사양의 서버를 이용해서 스토리지를 구성할 수 있어 기존의 대용량 파일시스템(NAS, DAS, SAN 등)에 비해 장점을 가진다. HDFS는 블록 구조의 파일 시스템이다. 파일을 특정크기의 블록으로 나누어 분산된 서버에 저장된다. 블록크기는 64MB에서 하둡 2.0부터는 128M로 증가되었다.

하둡의 특징 #

- Distributed : 수십만대의 컴퓨터에 자료 분산 저장 및 처리
- Scalable : 용량이 증대되는 대로 컴퓨터 추가
- Fault-tolerant : 하나 이상의 컴퓨터가 고장나는 경우에도 시스템이 정상 동작
- Open source : 공개 소프트웨어

Image

하둡 에코 시스템 #

하둡에는 다양한 에코 시스템이 존재한다. 여기서 에코 시스템이란 중앙시스템, 여기에서는 하둡을 가리킨다. 중앙화된 시스템에 여러 회사들이 가져다 쓸 때 활용성을 더 높이기 위해 여러가지 소프트웨어가 추가된 시스템을 가지고 에코시스템이라고 한다. 어떤 소프트웨어가 발전하려면 이러한 에코시스템이 많이 존재하는 것이 중요하다. 하둡이라는 분산처리 시스템을 중심으로 많은 에코시스템이 존재한다. 대표적으로 Hbase, Solr, Zookeeper, Hive 등의 시스템이 그 예이다.

Image

실제 우리가 하둡시스템을 프로그래밍 할 때 java나 scala를 사용해서 프로그래밍을 하게된다. 이때 프로그래머들은 하둡 시스템을 쓸 수 있지만, 일반 유저들은 하둡시스템을 쓸 때, java, scala를 써서 사용하기가 어렵기 때문에, 그 중간에 echo 시스템이 일반 사용자들의 사용성을 좋게 한다.

Image

하둡과 빅 데이터와의 관계 #

  • 하둡은 대량으로 확장 가능하므로, 빅데이터 워크로드를 처리하는데 주로 사용한다. 하둡 클러스터의 처리 성능을 향상하려면, 요구에 맞춰 필요한 CPU 및 메모리 리소스가 있는 서버를 추가해야 한다.
  • 하둡은 컴퓨팅 분석 워크로드를 병렬로 처리하면서 동시에 높은 수준의 내구성과 가용성을 제공한다. 처리의 가용성, 내구성 및 확장성이 조합된 하둡은 빅데이터 워크로드에 아주 적합하다.

맵리듀스의 개념 #

Image

출처https://12bme.tistory.com/154

하둡은 HDFS와 맵리듀스로 구성된다. 맵리듀스는 HDFS에 저장된 파일을 분산 배치 분석을 할 수 있게 도와주는 프레임워크다. 개발자는 맵리듀스 프로그래밍 모델에 맞게 애플리케이션을 구현하고, 데이터 전송, 분산처리, 내고장성 등의 복잡한 처리는 맵리듀스 프레임워크가 자동으로 처리해준다. 맵리듀스 프로그래밍 모델은 맵(Map)과 리듀스(Reduce)라는 두 가지 단계로 데이터를 처리합니다. 맵은 입력 파일을 한 줄씩 읽어서 데이터를 변형(transformation)하며, 리듀스는 맵의 결과 데잍어를 집계(aggregation)합니다. 이때 맵의 데이터 변형 규칙은 개발자가 자유롭게 정의할 수 있으며, 한 줄에 하나의 데이터가 출력된다.

맵리듀스 아키텍처 #

맵리듀스 프레임워크는 개발자가 분석 로직을 구현하는 데 집중하게 해주고, 데이터에 대한 분산과 병렬 처리를 프레임워크가 전담한다. 맵리듀스 시스템은 클라이언트, 잡트래커, 태스크트래커로 구성된다.

Image

출처https://www.geeksforgeeks.org/mapreduce-architecture/

클라이언트 #

클라이언트는 사용자가 실행한 맵리듀스 프로그램과 하둡에서 제공하는 맵리듀스 API를 의미.

잡트래커 #

클라이언트가 하둡으로 실행을 요청하는 맵리듀스 프로그램은 잡(job)이라는 하나의 작업 단위로 관리된다. 잡트래커(JobTracker)는 하둡 클러스터에 등록된 전체 잡의 스케줄링을 관리하고 모니터링 한다. 전체 하둡 클러스터에서 하나의 잡트래커가 실행되며, 보통 하둡의 네임노드 서버에서 실행된다.

태스크트래커 #

태스크트래커(TaskTracker)는 사용자가 설정한 맵리듀스 프로그램을 실행하며, 하둡의 데이터 노드에서 실행되는 데몬이다. 태스크트래커는 잡트래커의 작업을 요청받고, 잡트래커가 요청한 맵과 리듀스 개수만큼 맵 태스크(map task)와 리듀스 태스크(reduce task)를 생성한다. 여기서 맵 태스크와 리듀스 태스크란 사용자가 설정한 맵과 리듀스 프로그램을 의미한다.

Incoming Links #

Related Data Sciences #

0.0.1_20210630_7_v33