Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

psj2867

hadoop mapreduce 정리 본문

기타

hadoop mapreduce 정리

psj2867 2023. 2. 16. 17:56

클래스 관점

mapper continer에서
  InputFormat
->RecordReader
->Mapper
->RecordWriter(Partitioner)
->MapOutputBuffer<MapOutputCollector>
->spillAndSort - <partition,key> 기준으로
->SortComparator
->Combiner

reducer container 에서
  Shuffle
->ShuffleScheduler(taskId)
->Fetcher

  merge(SortComparator)
->GroupCompartor
->Reducer
->OutputFormat

---

데이터 관점

InputFormat -> [(k,v),(k,v)...], [(k,v)...] 
Mapper -> {(k,v),(k,v)...}, {(k,v)...} - 순서없는 키
RecordWriter -> [(k,v),(k,v)...], [(k,v)...] - 순서있는 키 , SortComparator
Combiner -> [(k,v),(k,v)...], [(k,v)...] - 순서있는 키

merge -> [(k,v),(k,v)...] - SortComparator
GroupCompartor -> [(k,[v,v...])...] - 
Reducer -> [(k,v),(k,v)...]
OutputFormat

---

InputFormat =
-List<InputSplit> getSplits(JobContext) -client에서 실행, 데이터를 JobContext 에서 읽어서 split 객체 들로 구분, InputSplit(getLength,getLocations,getLocationInfo)
-RecordReader<K, V> createRecordReader(InputSplit, TaskAttemptContext) - node(nodemanager, tasktarcker) InputSplit 에서 Key, value 로 parsing
-LineRecordReader - line의 시작을 가지고 있는 Mapper가 모든 줄을 다 읽고 블록의 시작이 line의 시작이 아니라면 해당 line을 skip 한다.

Mapper
-map

SortComparator - 
-compare

Partitioner
-int getPartition(K2 key, V2 value, int numReduceTasks) - 원하는 reducer 로 분배
-Reducer 한개면 등록한 Partitioner 가 아닌 내부 0 돌려주는 Partitioner 사용

Combiner
-reduce

GroupCompartor - Reducer 의 입력 구분
-compare

Reducer
-reduce


OutputFormat
-RecordWriter<K, V> getRecordWriter(TaskAttemptContext) - Reducer 에게 줄 RecordWriter, RecordWriter(write,close)

'기타' 카테고리의 다른 글

iptables 정리  (0) 2023.04.18
PLT와 GOT의 간단한 동작 구조  (0) 2023.03.28
elastic search 정리  (0) 2023.01.27
bash shell script 정리  (0) 2023.01.20
c언어의 main 은 함수여야 할까  (0) 2022.11.24
Comments