Thing's by Actruce

하둡 소개글 본문

IT/Hadoop

하둡 소개글

Actruce 2017. 12. 3. 22:37

아래 내용은 "거침 없이 배우는 하둡 - Hadoop In Action, 지앤선" 에서 발췌했습니다.

 

형식적 정의

    하둡은 대용량 데이터를 처리하는 분산 응용 프로그램을 작성하고 실행시키기 위한 오픈 소스 프레임워크(Framework) 이다.

 


 

다른 분산 컴퓨팅과 다른 주된 차이점

    1. 접근(Accessible) - 하둡은 윈도우 PC 같은 범용 컴퓨터들로 구성된 큰 규모의 클러스터나 아마존의 Elastic Compute Cloud(EC2)와 같은 클라우드 컴퓨팅 서비스에서 실행된다.

    2. 견고성(Robust) - 하둡은 윈도우 PC와 같은 범용 컴퓨터에서 실행되도록 의도되었기 때문에, 하드웨어의 빈번한 고장을 가정하고 설계되었다. 하둡은 그러한 고장 시 대부분 적절하게 대응할 수 있다.

    3. 확장가능성(Scalable) - 하둡은 대용량 데이터를 처리하는 데 있어서 클러스터에 단순히 컴퓨터(nodes)를 추가함으로써 선형적으로 확장할 수 있다.

    4. 간단성(Simple) - 하둡을 사용하면 효과적인 병렬 코드를 빠르게 작성할 수 있다.

 


 

SQL 데이터베이스와 하둡의 비교

    1. 스케일(scale) 증가가 아닌 스케일의 확장 - 하둡은 일반 범용 PC로 구성된 클러스터를 계속 확장시킬 수 있도록 디자인 되었다.

    2. 관계형 테이블이 아닌 키 / 값 - 텍스트 문서, 이미지, xml 파일은 관계형 모델에 맞지 않은 데이터 타입이다. 하둡은 구조화 되어 있지 않은 데이터를 처리하기 위해 키와 값으로 이루어진 쌍을 데이터의 기본 구조로 사용한다.

    3. 선언적 언어(SQL)이 아닌 기능적 프로그래밍(MapReduce) - MapReduce 는 스크립트와 코드를 사용하고, SQL 쿼리보다 좀 더 일반적인 데이터 처리를 수행할 수 있게 해준다.

    4. 온라인 처리가 아닌 오프라인 배치 처리 - 하둡은 대용량 데이터 처리와 분석을 오프라인에서 수행하도록 디자인 되었다.

 


 

Doug Cutting

1. Hadoop 의 창시자, 현재 Cloudera 의 Chief Architect

2. 2003 년 경, 구글에서 오픈 소스 Web Search engine ('Nutch') 를 연구하던 중, 분산 파일 시스템(TFS) 와 그것의 processing, framework, MapReduce 에 대한 내용을 Paper 로 발표. 

3. 초기 Nutch 를 위한 4~5 Machine 환경에서 20~30 대 환경으로 확장이 불완전한 성공을 거두었고, Yahoo 의 투자 제안으로 2006년 1월 Yahoo 의 연구팀으로 옮김.

 


 

Hadoop 용어의 유래

아들이 가지고 놀던 장난감 코끼리를 H-A-D-O-O-P! 이라고 어느날 불렀다. 그 즉시 Doug 는 자신의 노트에 메모를 해 뒀다고 한다. 그에게는 일종의 습관이 있었는데 소프트웨어 개발에 필요한 이름들을 즉흥적인 일상속에서 기록하는 습관말이다.




하둡의 구성 요소

 

  1. HDFS

    하둡은 분산과 저장에 대해 master / slave 구조를 가지고 있다. 이 분산 저장 시스템은 하둡 파일 시스템(Hadoop File System) 또는 줄여서 HDFS 라고 한다.

 

  2. NameNode

    NameNode 는 HDFS 의 master 역할을 하는데 slave 인 DataNode 데몬에게 I/O 작업을 지시한다. NameNode 는 HDFS 의 일종의 기록원이라고 할 수 있다. 어떻게 파일이 블록 단위로 나누어져 있는지, 어느 노드가 해당 블록을 가지고 있는지와 분산 파일 시스템의 전반적인 상태를 알고 있다.

    NameNode 는 주로 메모리와 I/O 에 관한 일을 한다. NameNode 를 제공하는 서버는 보통 작업량을 덜기 위해 데이터를 저장하지도 않고 MapReduce 프로그램을 위한 어떤 연산 작업도 담당하지 않는다. NameNode 서버는 DataNode 나 TaskTracker 처럼 복수로 구성되지 않는다.

    단점은, 하둡 클러스터에서 단일 실패 지점을 가진다는 것이다.

 

  3. DataNode

    클러스터에 포함되어 있는 slave 머신에는 DataNode 데몬이 존재하는데, 이것은 로컬 파일 시스템에 위치한 파일에 HDFS 블록을 기록하거나 해당 파일을 읽는 등의 단순한 기능을 수행한다. 사용자가 HDFS 파일을 읽거나 쓸 때, 이 파일들은 블록 단위로 나누어진다. 그리고 NameNode 는 각 블록이 어느 DataNode 에 위치하고 있는지 클라이언트(사용자)에게 알려준다. 클라이언트는 HDFS 블록들에 대응되는 로컬 파일을 처리하기 위해 DataNode 데몬과 직접 통신한다. 또한 DataNode 는 다른 DataNode 와 통신함으로써, 자기가 가지고 있는 블록을 다른 DataNode 에 복사할 수 있다.

    아래 그림에서 NameNode 와 DataNode 의 역할을 살펴 볼 수 있다. 이 그림에서 각 블록은 세 개의 사본을 가지고 있다.




  4. Secondary NameNode

    Secondary NameNode(SNN) 는 클러스터로 구성된 HDFS 의 상태를 모니터링하는 보조 성격을 가진 데몬이다. 주기적으로 HDFS 메타데이터(metadata)의 스냅샷을 찍는다. NameNode 가 단일 실패 지점을 가지고 있기 때문에 SNN 의 스냅샷은 데이터의 손실과 시스템의 정지 시간을 최소화하는데 사용된다.

 

  5. Job Tracker

    클러스터 Node 에서 실행되는 사용자 애플리케이션들을 관리한다. 사용자가 코드를 하둡 클러스터에 넘기고 나면, JobTracker 는 여러가지 실행 계획을 결정하게 된다.

    하둡 클러스터에는 하나의 JobTacker 데몬만 존재한다. JobTracker 는 보통 클러스터의 master 노드에서 실행된다.

 

  6. TaskTracker

    JobTracker 는 master 로서 MapReduce 의 전체적인 실행을 감독한다. TaskTracker 는 각 slave 노드에 할당된 작업의 실행을 담당한다. TaskTacker 의 또 다른 일은 JobTracker 와 계속해서 통신하는 것이다. JobTracker 는 hearbeat 메시지가 TaskTracker 로부터 정해진 주기 내에 도착하지 않으면, 해당 TaskTracker 에 문제가 생긴 것으로 간주하고 해당 작업을 클러스터 내에 위치한 다른 노드에 할당한다.

 

 

'IT > Hadoop' 카테고리의 다른 글

하둡 2.7.3 설치  (0) 2017.12.03
하둡 WordCount 예제 실행하기  (0) 2017.12.03
Comments