본문 바로가기

Distributed Computing for Big Data

What is Hadoop?

컴퓨터가 발전하고, 처리해야할 데이터의 양이 많아지면서 빅데이터를 저장, 처리, 분석할 수 있는 소프트웨어 프레임워크가 필요해졌다.

이후 구글에서 이러한 프레임워크를 만들었지만 공개하지 않았다.

그래서 공개 소프트웨어를 만드는 비영리조직 Apache에서 Hadoop이라는 빅데이터를 저장, 처리, 분석 할 수 있는 소프트웨어 프레임워크를 만들었다. (더그 커팅과 마이크 캐퍼렐라가 개발. 더그 커팅은 당시 야후에 있었는데 이후 아파치 재단으로 넘어가 공개 소프트웨어로 개발되고 있다.)

 

 

빅데이터 저장, 처리, 분석 하는 소프트웨어 프레임워크의 특징

Distributed: 수십만대의 컴퓨터에 자료 분산 저장 및 처리
Scalable: 용량이 증대되는 대로 컴퓨터 추가(컴퓨터 100대를 이용하다가, 데이터의 용량이 커지는 대로 100대를 붙여서 200대를 사용할 수 있음.)
Falult-tolerant: 하나 이상의 컴퓨터가 고장나는 경우에도 시스템이 정상 동작(수십만대의 컴퓨터를 이용하다가 100대가 고장났을 때, 시스템이 정상 동작할 수 있도록 한다)
Open source: 공개 소프트웨어

 


What is Hadoop?


오픈소스, 약 10개 회사의 60명의 committer가 있다.
(Cloudera, Yahoo!, Facebook, Apple, ...)

수 백명의 contributer들이 개발 중, bug 수정 등의 작업 수행

다양하고 많은 프로젝트, 애플리케이션, 도구에서 사용됨

다양한 에코 시스템( Hive 대표적, 여러 회사에서 여러 소프트웨어를 추가해서 사용할 수 있음) - 에코시스템이 다양한 소프트웨어는 발전 가능성이 높음


 

 

google이 만든 소프트웨어 구조

기존에는 processor에 의존하는 computation을 수행했다.

그러나 이러한 방식은 많은 양의 복잡한 처리가 요구되고, 상대적으로 적은 양의 데이터를 처리한다.

 

그래서 당시 컴퓨터의 성능을 향상시켜서 문제를 해결하려 했다.

ex) IBM main frame, cray, super computer

 

이와 다르게 구글은 초기에 자본이 충분하지 않아서 가격이 저렴한 legacy pc를 구매해서 여러 대 붙였다.

더 많은 컴퓨터를 사용하여 문제를 해결하려 한 것이다. 

이에 따라 분산 처리 시스템이 진화하게 되었다.

 

초기에는 MPI(Message Passing Interface)를 사용했다. 컴퓨터와 컴퓨터 사이의 메세지를 연결해 주는 역할을 한다. 이 시스템은 매우 복잡하다. 또한 수많은 컴퓨터를 사용할 때, 일부의 컴퓨터가 고장이 나면 처리할 수가 없었다.

이러한 문제점들을 처리할 수 있는 방식을 구글이 찾기 시작했다.

 

이후 나온 것이 GFS(Google File System), MR(Map Reduce) 이다. 

 

GFS 의 특징

partial failure에 대처: 데이터를 3개로 copy해 분산해서 저장한다.

 

데이터 recoverability: 데이터 하나가 손실되더라도 다른 copy 되어 있는 데이터로 복구 가능하다.

 

컴포넌트 recovery: 컴퓨터가 고장나면 cpu가 진행하던 일을 멈추게 된다. 이때 다시 일을 진행하면 재시작하게 되는데, 재시작하는 것 없이 하던 일을 그래도 수행할 수 있는 특성이다. 

 

Scalability: 데이터의 양이 증가하면, 시스템 resource(pc)을 증가시켜 비례적으로 로드 capacity를 증가시킨다.

(데이터 양 증가하면 pc 붙이면 문제 안 생김)

 

 

 Apache에서 위와 비슷하게 만든 오픈소스 소프트웨어 프레임워크가 Hadoop이다.

 

 

정리

Hadoop은 1990~2000년 사이의 google의 연구로부터 시작

   -GFS

   -MapReduce

 

기존 분산 컴퓨팅의 문제점을 해결할 수 있는 새로운 접근법

   - reliability와 scalability 문제를 모두 해결

 

Core concept: 초기 데이터를 시스템에 분산하여 저장

   - 클러스터의 각 노드가 로컬 데이터에 대한 작업을 처리

       -initial processing 을 위해 네트워크를 통해 데이터가 전송되지 않음

 

 

Core Hadoop Concepts

 

애플리케이션을 high-level 코드로 작성

각 노드들은 가급적 최소한의 데이터를 주고 받음

데이터는 여러 노드에 미리 분산되어 저장 

 

Hadoop: Very High-Level Overview

 

-시스템이 데이터를 로드할 때 'block'으로 나누어짐(기본적으로 64MB 또는 128MB 크기를 이용)

-Map tasks(MapReduce 시스템의 첫 번째 파트)는 single block단위의 작업을 처리

-마스터 프로그램은 분산되어 저장된 데이터의 block에 대한 Map task 작업을 각 노드에 할당(전체 데이터 셋 중 각 노드에 저장된 데이터를 이용해 병렬적으로 작업을 수행 ex: Map-Reduce-Map-Reduce----)

 

Fault Tolerance

 

-Node가 fail한 경우, master node는 failure를 감지하고 작업을 다른 node에 할당

-Task를 재시작하는 것은 다른 부분에 대한 작업을 수행중인 다른 노드와의 통신을 필요로 하지 않음

-Fail된 node를 재시작하는 경우, 자동적으로 시스템에 연결되어 새로운 task를 할당함

-특정 node의 성능이 매우 낮은 것으로 감지되면, master node는 같은 task 를 다른 node에 할당

 

 

숭실대학교 컴퓨터학부 박영택 교수님의 <빅데이터 분산 컴퓨팅> 강의를 듣고 정리한 포스트

'Distributed Computing for Big Data' 카테고리의 다른 글

Hive and Pig  (0) 2019.10.06
How Hadoop Works (Computation)  (0) 2019.10.04
How Hadoop Works (Storage)  (0) 2019.10.03
Starting Hadoop with virtual box  (0) 2019.09.12
Introduction  (0) 2019.09.05