MapReduce 이란?           


맵리듀스(MapReduce) 구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년 발표한 소프트웨어 프레임워크다. 이 프레임워크는 페타바이트 이상의 대용량 데이터를 신뢰도가 낮은 컴퓨터로 구성된 클러스터 환경에서 병렬 처리를 지원하기 위해서 개발되었다. 이 프레임워크는 함수형 프로그래밍에서 일반적으로 사용되는 Map과 Reduce라는 함수 기반으로 주로 구성된다.

현재 MapReduce는 Java와 C++, 그리고 기타 언어에서 적용이 가능하도록 작성되었다. 대표적으로 아파치 하둡에서 오픈 소스 소프트웨어로 적용된다.


- WIKI, 위키백과 -

 

맵리듀스는 배치 기반의 분산 컴퓨팅 프레임워크다.



  • 맵리듀스 모델은 연산 병렬화, 작업 분산, 비안정적 하드웨어 및 소프트웨어를 다루는 복잡성 같은 요소를 추상화함으로써 병렬 처리를 단순화해준다.
  • 맵리듀스는 클라이언트에서 전송한 잡을 병렬화된 작은 맵과 리듀스 작업자로 분배한다.




  • 프로그래머가 할 일맵과 리듀스 함수를 정의하는 것이다.
    • 맵 함수는 키/값 튜플(tuple)을 출력
    • 출력된 튜플은 리듀스 함수에 의해 처리돼 최종 결과를 도출
      • 맵 : (key1, value1) → list(key2, value2)
                    ①                        ②
        ① : 맵 함수는 입력 데이터 소스의 논리적 레코드를 나타내는 키/값 쌍을 입력값으로 받는다.
            파일의 경우 이 값은 한 줄이 될 수 있고, 입력 소스가 DB의 테이블인 경우 한 행이 될 수 있다.
        ② : 맵 함수는 한 개의 입력값 쌍에 대해 0개 이상의 출력 키/값 쌍을 내보낸다.
            예를 들어 맵 함수가 필터링 맵 함수이면 특정 조건이 리듀스 함수에서는 충족될 때만 결과를 출력할 수 있다. 또는 한개의 입력 키/값이 여러 개의 키/값 출력 쌍을 반환하는 역다중화 작업을 수행할 수도 있다.
      • 리듀스 : (key2, list(value2)) → list(key3, value3)
            ①                        ②                    ③
        ① : 리듀스 함수는 고유 맵 출력. 키별로 한 번씩 
        ② : 'key2'에 대해 모든 매퍼에서 내보낸 맵. 출력값이 한 개의 목록으로 제공된다.
        ③ : 맵 함수와 마찬가지로 리듀스 함수도 0개 이상의 키/값 쌍을 출력할 수 있다. 리듀서 출력값은 HDFS 내 플랫 파일에 쓰거나, NoSQL DB에서 행을 삽입/업데이트하거나, 다른 요구 조건에 따라 임의의 데이터 싱크에 쓸 수 있다.




Shuffling : 셔플 및 정렬 단계에서는 두 개의 주요 작업을 처리한다. 맵 출력 키/값 쌍을 수신할 리듀서를 판단하는 작업(파티셔닝이라고 부름)과 해당 리듀서에 대해 모든 입력 키가 정렬되게끔 하는 기능.


각 화살표 별로 설명을 하자면!!

  1. 입력 데이터 분리 : 맵리듀스는 입력 파일을 키와 값 형식의 데이터로 분류한다. 이 예제에서 키는 라인 번호이고 값은 문장이다.
  2. 맵 메서드1 : 키와 값 형식의 데이터는 맵 메서드의 입력 데이터로 전달된다.
  3. 맵 메서드2 : 맵 메서드는 라인 번호별로 문장을 체크해 키에 해당하는 글자별로 글자 수를 출력한다.
  4. 정렬과 병합 : 맵리듀스는 맵 메서드의 출력 데이터를 정렬하고, 병합한다.
  5. 리듀스 메서드 : 4번의 결과가 리듀스 메서드의 입력 데이터로 전달된다.
  6. 저장 : 리듀스 메서드는 새로운 키인 글자별로 각 글자 수를 합산해서 출력하고, 리듀스 메서드의 출력 데이터를 하둡 파일 시스템에 저장한다.



[ 맵리듀스 시스템 ]



  1. 클라이언트
    사용자가 실행한 맵리듀스 프로그램과 하둡에서 제공하는 맵리듀스 API를 의미한다.
    사용자는 맵리듀스 API로 맵리듀스 프로그램을 개발하고, 개발한 프로그램을 하둡에서 실행할 수 있다.
  2. 잡트래커(JobTracker)
    클라이언트가 하둡으로 실행을 요청하는 맵리듀스 프로그램은 (job)이라는 하나의 작업 단위로 관리된다.
    잡트래커는 하둡 클러스터에 등록된 전체 잡의 스케줄링을 관리하고 모니터링한다.
    전체 하둡 클러스터에서 하나의 잡트래커가 실행되며, 보통 하둡의 네임노드 서버에서 실행된다.(반드시 네임노드 서버에서 실행할 필요는 없음)
    사용자가 새로운 잡을 요청하면 잡트래커는 잡을 처리하기 위해 몇 개의 맵과 리듀스를 실행할지 계산한다.
    이렇게 계산된 맵과 리듀스를 어떤 태스크트래커에서 실행할지 결정하고, 해당 태스크트래커에 잡을 할당한다. 이 때 태스크트래커는 잡트래커의 작업 수행 요청을 받아 맵리듀스 프로그램을 실행한다. 잡트래커와 태스크트래커는 하트비트라는 메서드로 네트워크 통신을 하면서 태스크트래커의 상태와 작업 실행 ㅈ어보를 주고받게 된다. 만약 태스크트래커에 장애가 ㅂ라생하면 잡트래커는 다른 대기 중인 태스크트래커를 찾아 태스크를 재실행하게 된다.
  3. 태스크트래커(TaskTracker)
    사용자가 설정한 맵리듀스 프로그램을 실행하며, 하둡의 데이터노드에서 실행되는 데몬이다.
    태스크트래커는 잡트래커의 작업을 요청받고, 잡트래커가 요청한 맵과 리듀스 개수만큼 맵 태스크(map task)와 리듀스 태스크(reduce task)를 생성한다. 






Posted by 밍쫑
,

              Hadoop 이란?              


하둡에 대해서 알기 전에 역사를 아는 것도 매우 재미있습니다. 시간이 되시는 분들은 찾아보시길..


"아파치 하둡(Apache Hadoop, High-Availability Distributed Object-Oriented Platform)"
 대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크이다. 원래 너치의 분산 처리를 지원하기 위해 개발된 것으로, 아파치 루씬의 하부 프로젝트이다. 분산처리 시스템인 구글 파일 시스템을 대체할 수 있는 하둡 분산 파일 시스템(HDFS: Hadoop Distributed File System)과 맵리듀스를 구현한 것이다.


- WIKI, 위키백과 -/

 


  • 하둡은 분산 저장소와 연산 기능을 모두 제공하는 플랫폼
  • 하둡은 오픈소스 프로젝트 (∴라이선스 비용에 대한 부담 x)
  • 아파치 하둡 프로젝트의 특징
    • 안정적이고, 신뢰할 수 있다(reliable)
    • 확장이 용이(scalable)
    • 분산 컴퓨팅(distributed computing) 환경 지원




[ 하둡 분산 파일 시스템 (HDFS; Hadoop Distributed File System) ]

  • 하둡은 저장을 위한 하둡 분산 파일 시스템(HDFS; Hadoop Distributed File System)으로 구성된 마스터-슬레이브 아키텍처와 연산을 위한 맵리듀스로 이뤄진다.
    • 마스터 : 슬레이브 노드에서 실행 예약할 연산 작업을 관리하는 책임을 담당
    • HDFS 마스터 : 슬레이브 노드 사이의 저장 공간 파티셔닝과 데이터 저장 위치를 관리하는 책임을 담당
  • 하둡의 저장 공간과 연산 능력은 하둡 클러스터에 호스트를 추가함에 따라 늘어나고, 수천 개의 호스트를 클러스터에 추가해 페타바이트 크기의 데이터까지 처리 할 수 있다.


HDFS는 하둡의 저장소 컴포넌트이다.
  1. 큰 블록 크기 밍 데이터 로컬리티(data locality)를 통한 최적화를 활용해 네트워크 입/출력을 줄인다.
  2. 확장성과 가용성 또한 HDFS의 핵심 특징이다.
  3. HDFS는 설정된 횟수만큼 파일을 복제하고, 소프트웨어 및 하드웨어의 장애를 견뎌낼 수 있으며, 장애가 생긴 노드에서는 데이터 블록을 자동으로 재복제한다.
  4. 마스터노드데이터 노드를 갖지 않고, JobTracker를 갖는다.
  5. 슬레이브 노드 중 하나 Secondary NameNode를 갖고, 슬레이브 노드들은 TaskTracker를 갖는다.








[ 하둡 에코시스템 ]



Posted by 밍쫑
,





Big Data의 소개 

 


"BigData"

빅 데이터란 기존 데이터베이스 관리도구로 데이터를 수집, 저장, 관리, 분석 할 수 있는 역량을 넘어서는 대량의 정형 또는 비정형 데이터 집합 및 이러한 데이터로부터 가치를 추출하고 결과를 분석하는 기술을 의미한다.


- WIKI (http://ko.wikipedia.org/wiki/빅_데이터)



빅 데이터의 3대 요소(3V)

  • 크기(Volume)
     급격하게 데이터의 양이 증가하고 있는데, 이때문에 확장 가능한 방식으로 데이터를 저장하고 분석하는 분산 컴퓨팅 기법으로 접근해야 한다.

  • 속도(Velocity)
    - 실시간 처리 : 오늘날 디지털 데이터는 매우 빠른속도로 생성되기 때문에 데이터의 생산, 저장,유통, 수집, 분석이 실시간으로 처리돼야 한다.
    - 장기적인 접근 : 수집된 대량의 데이터를 다양한 분석 기법
    (ex. 데이터 마이닝, 기계학습, 자연어 처리, 패턴 인식)과 표현 기술로 분석

  • 다양성(Variety)
    - 정형(Structured) 데이터 : 정형화된 데이터로, 고정된 필드에 저장되있는 일정한 형식을 갖추고 저장되는 데이터
        온라인 주문할 때 이름, 주소 등을 입력한 후 주문을 하면 DB에 미리 생성돼 있는 테이블(고정된 필드)에 저장된다.
    - 반정형(Semi-Structured) : 고정된 필드로 저장돼 있지는 않지만, XML이나 HTML 같이 메타데이터나 스키마 등을 포함하는 데이터
    - 비정형(Unstructed) : 고정된 필드에 저장돼 잇지 않은 데이터
        ex. 블로그에서 저장하는 사진, 메신저로 주고받은 대화 내용 등

Posted by 밍쫑
,
<빅데이터 스터디 일정>9주 + 프로젝트
매 주 본인 파트 발표자료 준비(파일은 한 곳에 모읍시다.) +
모임시간 : 불같은 금요일, 3~6시
1

03월 12일

시작하세요!
(Hadoop 완벽가이드)
하둡
01. 하둡소개
(1장. 하둡과의 만남)


2 03월 16일

02. 하둡 개발 준비

서버 Com 준비

3

04월 11일

하둡&
맵리듀스
03. 하둡 분산 파일 시스템
(3장. 하둡 분산 파일 시스템)
04. 맵리듀스 시작하기
(2장. 맵리듀스)


4

04월 18일

맵리듀스
05. 맵리듀스 기초 다지기
(5-3장. 유닛테스트 작성하기


5

04월 11일

06. 정렬 구현하기
(8-2장. 정렬)
07. 조인 구현하기
(8-3장. 조인)


6 04월 11일 08. 맵리듀스 튜닝하기 대회 일정 공지 예정일
7 04월 15일
Hadoop 완벽 가이드
(하둡 인 프랙티스)
PIG 11. 피그
(11. 피그를 이용한 파이프라인 프로그래밍)


8 04월 25일 HIVE 12. 하이브
(10. 하이브 공략하기)


9 05월 02일
Hbase 완벽가이드
Hbase
1. 소개
2. 설치


10 05월 09일 3. 클라이언트 API : 기본기능
5. 클라이언트 API : 관리기능


11 05월 13일 4. 클라이언트 API : 고급기능



저는 빅데이터라는 분야도 멤버십에 와서 처음 알게 되었습니다. 눈을 사로잡는 기술이면서도, 되게 대단하다고 생각했었는데요.


한 번 공부해보고싶다고 생각하고 있었는데, 운이 좋게도 기존 회원분 중에 빅데이터를 같이 공부하자고 해주신 분이 계셔서
스터디를 하게됬습니다.


일단은 저희만의 커리큘럼을 위와 짰습니다.

그리고 돌아가면서 발표 자료를 만들고, 세미나 형식으로 진행하기로 했습니다.

앞으로 11번의 모임으로 빅데이터를 전부 자세히 알 수는 없겠지만, 지금보다는 많이 알게 될 것이라 기대합니다.ㅎㅎ


어려운 분야이고, 전부 처음들어보는 것들이지만 열심히 해야죠!

Posted by 밍쫑
,