SlideShare a Scribd company logo
MapReduce
Data Infrastructure Team
Jongyoul Lee
Friday, September 27, 13
MapReduce?
Data types, input/output format
Mapper, reducer
Combiner
Hadoop streaming
Next...
Friday, September 27, 13
https://github.com/madeng/mrintro.git
Friday, September 27, 13
MapReduce?
Data types, input/output format
Mapper, reducer
Combiner
Hadoop streaming
Next...
Friday, September 27, 13
DataNode DataNode DataNode
JobTracker
TaskTracker TaskTracker TaskTracker
TaskTracker TaskTracker TaskTracker
Client
Structure Overview
DataNode DataNode DataNode
Friday, September 27, 13
분산처리를 위한 고수준(!!) 아키택처
데이터의 흐름은 생각하지 않음
Key/value에 대해서만 생각하면 됨
모든 문제를 해결할 수 있는 것은 아님
Friday, September 27, 13
Output
Input TextInputFormat
(k1, v1) ! (k2, v2)
(k2, list(v2)) ! (k2, v2’)
(k2, v2’, #reducer) !
#partition
(k2, list(v2’)) ! (k3, v3)
TextOutputFormat
Mapper
Combiner
Partitioner
Shuffle/sort
Reducer
Friday, September 27, 13
Output
Input TextInputFormat
(k1, v1) ! (k2, v2)
(k2, list(v2)) ! (k2, v2’)
(k2, v2’, #reducer) !
#partition
(k2, list(v2’)) ! (k3, v3)
TextOutputFormat
Mapper
Combiner
Partitioner
Shuffle/sort
Reducer
Friday, September 27, 13
org.apache.hadoop.mapred
org.apache.hadoop.mapreduce
mapreduce가 새로운 패키지
하지만 예전 패키지도 여전히 많이 사용
Cascading...
Friday, September 27, 13
MapReduce?
Data types, input/output format
Mapper, reducer
Combiner
Hadoop streaming
Next...
Friday, September 27, 13
Class name Data type
BooleanWritable Boolean
ByteWritable byte
DoubleWritable Double
FloatWritable Float
IntWritable Integer
LongWritable Long
Text UTF-8
 문자열
NullWritable 데이터
 값이
 필요
 없을
 경우
Friday, September 27, 13
WritableCompareable interface
void write(DataOutput out)
Serialization of data written
void readFields(DataInput in)
Deserialization of reading data
int compareTo(WritableComparable w)
Friday, September 27, 13
MapReduce?
Data types, input/output format
Mapper, reducer
Combiner
Hadoop streaming
Next...
Friday, September 27, 13
파일을 MR에서 읽을 수 있도록 key/value로 변경해
주는 formatter
Key/value의 값을 파일로 저장할 수 있도록 도와주는
formatter
파일 이외에 여러 형태의 input/output format이
존재
InputFormat은 getSplit메소드로 여러가지를 함
Input/OutputFormat을 상속받아 구현 가능
Friday, September 27, 13
createRecordReader(InputSplit split,...)
인풋 스플릿을 읽을 수 있도록 처리
RecordReader를 mapper에 넘겨줌
InputFormat 특징
TextInputFormat
캐리지 리턴으로 값 분리
키: 라인 번호
값: 라인의 내용
SequenceFileInputFormat
바이너리 포멧
키, 값을 저장하는 구조
압축 지원
Friday, September 27, 13
OutputFormat을 상속
RecordWriter를 reducer에 넘겨줌
OutputFormat 특징
TextOutputFormat
키/값을 텍스트로 출력할 때, 사용
“Key, Valuen”의 형태로 출력
LazyOutputFormat
TextOutputFormat과 같은 출력
결과
파일의 내용이 없을 경우, 생성하지
않음
Friday, September 27, 13
FileInputFormat.getSplit
Friday, September 27, 13
MapReduce?
Data types, input/output format
Mapper, reducer
Combiner
Hadoop streaming
Next...
Friday, September 27, 13
Text를 Key/Value의 형태로 만듦
map(key, value, ...)함수를 호출
하나의 인풋에 대해서만 처리하는 것에 집중
꼭 하나의 인풋에 대해 하나의 아웃풋이 존재할 필
요는 없다(DelayCountMapper.java)
(k1, v1) ! (k2, v2)
Friday, September 27, 13
(k1, v1) ! (k2, v2)
Friday, September 27, 13
MapReduce?
Data types, input/output format
Mapper, reducer
Combiner
Hadoop streaming
Next...
Friday, September 27, 13
Key별로 묶은 value들을 처리
같은 키는 반드시 같은 reducer가 처리
하나의 키에 몰리는 것을 방지하는 것이 포인트
(k2, list(v2’)) ! (k3, v3)
Friday, September 27, 13
(k2, list(v2’)) ! (k3, v3)
Friday, September 27, 13
Demo
Friday, September 27, 13
WordCountMapOnly
Friday, September 27, 13
WordCount
Friday, September 27, 13
좀 더 세련되게 확인할 순 없을까?
Friday, September 27, 13
MapReduce?
Data types, input/output format
Mapper, reducer
Combiner
Hadoop streaming
Next...
Friday, September 27, 13
(k2, list(v2)) ! (k2, v2’)
Friday, September 27, 13
Map의 아웃풋이 많아지면...
(k2, list(v2)) ! (k2, v2’)
Friday, September 27, 13
Map의 아웃풋이 많아지면...
Reducer에 넘겨주는 데이터는 적을 수록 좋다
(k2, list(v2)) ! (k2, v2’)
Friday, September 27, 13
Map의 아웃풋이 많아지면...
Reducer에 넘겨주는 데이터는 적을 수록 좋다
Mapper에서 Reducer의 일을 일부 할 수 있지 않
을까?
(k2, list(v2)) ! (k2, v2’)
Friday, September 27, 13
Map의 아웃풋이 많아지면...
Reducer에 넘겨주는 데이터는 적을 수록 좋다
Mapper에서 Reducer의 일을 일부 할 수 있지 않
을까?
한줄이면 끝!
(k2, list(v2)) ! (k2, v2’)
Friday, September 27, 13
Map의 아웃풋이 많아지면...
Reducer에 넘겨주는 데이터는 적을 수록 좋다
Mapper에서 Reducer의 일을 일부 할 수 있지 않
을까?
한줄이면 끝!
job.setCombinerClass(Reducer.class)
(k2, list(v2)) ! (k2, v2’)
Friday, September 27, 13
(k2, list(v2)) ! (k2, v2’)
Friday, September 27, 13
(k2, list(v2)) ! (k2, v2’)
Friday, September 27, 13
한가지 주의할 점이 있는데...
(k2, list(v2)) ! (k2, v2’)
Friday, September 27, 13
한가지 주의할 점이 있는데...
Map의 아웃풋 타입과 Reduce의 인풋 타입
(k2, list(v2)) ! (k2, v2’)
Friday, September 27, 13
(k1, v1) ! (k2, v2)
(k2, list(v2)) ! (k2, v2’)
(k2, list(v2’)) ! (k3, v3)
Mapper
Combiner
Reducer
Friday, September 27, 13
MapReduce?
Data types, input/output format
Mapper, reducer
Combiner
Hadoop streaming
Next...
Friday, September 27, 13
매번 귀찮은 MR프로그램을 짜는 것은 불편...
Hive, Pig, Cascading
contrib/streaming/hadoop-streaming.jar
Friday, September 27, 13
Demo
Friday, September 27, 13
MapReduce?
Data types, input/output format
Mapper, reducer
Combiner
Hadoop streaming
Next...
Friday, September 27, 13
Friday, September 27, 13
하지만 실제로 분석하는 과정을 보면?
Friday, September 27, 13
하지만 실제로 분석하는 과정을 보면?
데이터를 읽어서 특정 시간대로 자르고
Friday, September 27, 13
하지만 실제로 분석하는 과정을 보면?
데이터를 읽어서 특정 시간대로 자르고
특정 유저나 혹은 유저들을 다시 필터링하고
Friday, September 27, 13
하지만 실제로 분석하는 과정을 보면?
데이터를 읽어서 특정 시간대로 자르고
특정 유저나 혹은 유저들을 다시 필터링하고
각 유저들의 행동을 합하거나, 더하거나 한뒤
Friday, September 27, 13
하지만 실제로 분석하는 과정을 보면?
데이터를 읽어서 특정 시간대로 자르고
특정 유저나 혹은 유저들을 다시 필터링하고
각 유저들의 행동을 합하거나, 더하거나 한뒤
유니크한 값들도 찾아보고
Friday, September 27, 13
하지만 실제로 분석하는 과정을 보면?
데이터를 읽어서 특정 시간대로 자르고
특정 유저나 혹은 유저들을 다시 필터링하고
각 유저들의 행동을 합하거나, 더하거나 한뒤
유니크한 값들도 찾아보고
원하는 분석 작업들을 진행...
Friday, September 27, 13

More Related Content

PPTX
introduce of Hadoop map reduce
PDF
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 온라인 컨텐츠 서비스를 위한 빅데이터 구축 사례
PPTX
Hadoop설명
PPTX
Map reduce 기본 설명
PDF
스타트업을 위한 성공적인 Open AP 만들기 - 윤석찬 (2012)
PDF
빅데이터 분석활용 가이드 (1)
PPTX
빅데이터 구축 사례
PPT
Hadoop Introduction (1.0)
introduce of Hadoop map reduce
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 온라인 컨텐츠 서비스를 위한 빅데이터 구축 사례
Hadoop설명
Map reduce 기본 설명
스타트업을 위한 성공적인 Open AP 만들기 - 윤석찬 (2012)
빅데이터 분석활용 가이드 (1)
빅데이터 구축 사례
Hadoop Introduction (1.0)

Viewers also liked (6)

PPTX
Open API 발표자료 - 김연수
PDF
공공 데이터 활용 방법론 - 오픈 API 기술 및 동향 (KRNET 2014)
PDF
Daum 내부 빅데이터 및 클라우드 기술 활용 사례- 윤석찬 (2012)
PDF
하둡 (Hadoop) 및 관련기술 훑어보기
PPTX
실리콘 밸리 데이터 사이언티스트의 하루
PPTX
빅데이터의 이해
Open API 발표자료 - 김연수
공공 데이터 활용 방법론 - 오픈 API 기술 및 동향 (KRNET 2014)
Daum 내부 빅데이터 및 클라우드 기술 활용 사례- 윤석찬 (2012)
하둡 (Hadoop) 및 관련기술 훑어보기
실리콘 밸리 데이터 사이언티스트의 하루
빅데이터의 이해
Ad

Similar to Mapreduce introduction (20)

PDF
Hadoop overview
PDF
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
KEY
Distributed Programming Framework, hadoop
PDF
하둡 좋은약이지만 만병통치약은 아니다
PDF
Hadoop 제주대
PPTX
하둡 타입과 포맷
PDF
Bog data 설명
PDF
7가지 동시성 모델 람다아키텍처
PPTX
An introduction to hadoop
PDF
빅데이터, big data
PDF
Spark Day 2017@Seoul(Spark Bootcamp)
PPTX
2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)
PPTX
5일차.map reduce 활용
PDF
Spark and Shark
PPT
구글의 분산데이터 처리
PPTX
about hadoop yes
PDF
Hadoop발표자료
PPT
Big Data & Hadoop by Skidmarkii
PPTX
Apache spark 소개 및 실습
PDF
공공데이터 활용을 위한 "Tech 워크숍" 2회 - 공공데이터 수집, 가공하고 활용하기
Hadoop overview
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
Distributed Programming Framework, hadoop
하둡 좋은약이지만 만병통치약은 아니다
Hadoop 제주대
하둡 타입과 포맷
Bog data 설명
7가지 동시성 모델 람다아키텍처
An introduction to hadoop
빅데이터, big data
Spark Day 2017@Seoul(Spark Bootcamp)
2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)
5일차.map reduce 활용
Spark and Shark
구글의 분산데이터 처리
about hadoop yes
Hadoop발표자료
Big Data & Hadoop by Skidmarkii
Apache spark 소개 및 실습
공공데이터 활용을 위한 "Tech 워크숍" 2회 - 공공데이터 수집, 가공하고 활용하기
Ad

Mapreduce introduction