728x90

 

일반적인 분산 파일 시스템 

- 마스터 노드 : 관리자 (1대)

- 스레이브 노드 : 실제 데이터 분산 저장 (여러대). 분산 상태를 마스터가 관리

 

하둡 분산 파일 시스템 HDFS

- 네임 노드(마스터 노드) : 슬레이브 노드 동작, 메타데이터 실시간 관리

- 데이터 노드(슬레이브 노드) : 하나의 데이터 블록을 몇 대의 데이터 노드가 복제하여 보관(잃어버리지 않도록)

- 신뢰성과 고장감내성

 

 

하둡과 맵리듀스 구조

 

http://www.incodom.kr/hadoop_%EC%B4%9D%EC%A0%95%EB%A6%AC

 

HDFS 특징

- 한 블록의 크기가 크게 설정되어 큰 데이터를 한번에 가져올수있도록 설계

- 데이터 일괄 처리에 최적화 <- 수집된 데이터를 수정할 필요가 없기 때문

 

 

HDFS 상에서의 데이터 분석 프레임 워크

- 데이터 중심 프로그래밍 모형 : 작업 분할, 스케줄링, 네트워크 구성 등은 플랫폼 차원에서 수행하여 단순화 됨

- 프로그래머는 맵/리듀스 함수만을 작성 : 데이터 노드에서 실행(데이터 전송 최소화 - 일괄처리)

 

 

맵리듀스 프로그래밍 모형

- 맵함수 : 입력 <키. 값>을 새로운 <키, 값>으로 변환

- 리듀스 함수 : 시스템이 수집한 < 키, (값, ... )>을  다시 <키, 값>으로 변환하여 HDFS에 저장

- 중간 과정은 하둡 시스템이 해결

 

 

 

맵리듀스 프로그래밍 예제

- 여러 문서에 등장하는 단어 수 새기

- 맵 : <단어1, 1>, <단어2, 1>, . . .. .

- ( 중간 과정 : <단어1, (1, 1, 1,  . . .)>  )

- 리듀스 : <단어1, 1+1+1+1+ . . .>, . . .

 

map(key:document, value:text){

  for word in tokenize(value)

      emit(word, 1)

}

 

reduce(key:word, value: list of 1s){

    emit(key, sum(value))

}

 

https://dzone.com/articles/word-count-hello-word-program-in-mapreduce

 

 

 

단어 세기를 맵리듀스로 하는 이유

- 문서가 10억개고, 문서 하나당 100kb시 -> 전체 용량은 100TB(빅데이터)

- 하나의 디스크에 저장 불가능 (분산 파일 시스템)

- 100MB/초 컴퓨터 1대로 순차 처리시 12일 소요

- 1000대로 처리시 17분(분산 처리)

 

 

 

 

 

컴바인 함수

- 노드간 데이터 전송을 최소화하기 위함. 중간 과정 제어

- 맵 작업과 같은 데이터 노드에서 실행.

 

 

 

 

맵리듀스 프로그램 개발 편의를 위한 설정들

- 환전 분산 모드 : 여러대 서버로 구성. 개인 구성 힘듬

- 의사 분산 모드  : 한대의 컴퓨터에서 완전 분산 모드 흉내 HDFS

- 도자 모드 : 의사 분산 모드에서 로컬 파일 시스템 사용

 

 

 

R로 맵리듀스 프로그래밍

- rhdfs로 R에서 접근가능 : to.dfs(), from.dfs()

- rmr로 R에서 맵리듀스 함수 작성, 프로그램 실행

 

 

 

R과 빅데이터 결합

- 비분산 저장, 처리기술 -> 빅메모리, 빅애널리틱스

- 분산 저장, 처리 기술 -> 하둡

 

300x250

+ Recent posts