프로젝트 종료 후, 관련한 CS 지식들을 살펴보는데 MapReduce에 관해 좋은 내용인 글이 있어 좀 더 자세히 살펴본 후 글을 작성해보았다.
Shuffling 연산간 Combine 연산의 순서와 어느 시점에서 Mapper 노드의 디스크에 Mapping 결과 데이터가 저장되는지가 좀 헷갈렸어서 관련한 내용들을 더 찾아보았다.

입력 파일은 쪼개어져 분산 파일 시스템에 저장되어있다고 가정.
사용자가 map과 reduce 함수를 정의한 프로그램을 실행시키면 이 프로세스는 각각 Master 노드, map연산을 실행할 워커 노드(Mapper), reduce 연산을 실행할 워커 노드(Reducer)들에 복사됨
Master 노드는 Mapper에게 map을 Reducer에게 reduce 역할 지정해줌.
이 때, 사용자는 Mapper, Reducer의 노드 갯수를 지정해줄 수 있음
Mapper 노드들은 쪼개어진 데이터 청크를 분산 파일 시스템으로부터 읽어옴.
읽어온 데이터에 사용자가 작성한 Map 함수를 실행하여 Key:Value 형태의 Intermediate 데이터를 생성하고 이를 각 노드의 로컬 디스크에 저장
그 다음, Mapper 노드는 마스터 노드에게 Map을 완료했다고 알려줌
Mapper로부터 Map연산이 완료되었다는 통신을 받은 Master 노드는 Reducer 노드들에게 Reduce 연산을 시작하라고 명령을 내림
Reducer 노드들은 Mapper 노드들의 디스크 공간에 저장되어 있는 Key:Value 쌍의 Intermediate 데이터를 읽어오고, 이 데이터에 reduce 연산을 실행하여 최종 결과물을 산출함

Mapper로부터 Map연산후 생성된 intermediate Key:Value 쌍은 일단 메모리 상의 버퍼에 저장됨
그리고 Combining이라는 과정을 거쳐 파티션 내의 Key:Value 데이터들에 대해 Reduce 작업을 미리 진행하여 Reducer 노드들의 부하를 줄여줌(선택사항)
이제 intermediate Key:Value 쌍의 키 값을 해싱하여 파티션을 결정하는 파티셔닝을 수행
파티션된 Key:Value 쌍들은 다시 키 값을 기준으로 파티션내에서 정렬하는 과정을 거침
정렬이 완료되면, Mapper 노드들은 모든 중간 데이터를 디스크에 저장
Mapper는 매핑 과정을 완료했다는 알림과 파티셔닝 정보를 Master 노드에게 전달
Master 노드는 Reducer 노드들에게 이 정보들을 전달하고, Reduce를 수행할 것을 명령
Reducer 노드들은 전달받은 정보들을 바탕으로 자신에게 할당된 파티션들만 Mapper 노드의 디스크로부터 읽어와서 리듀스 작업을 시작
https://yeomko.tistory.com/31
https://data-flair.training/blogs/hadoop-combiner-tutorial/
https://kadensungbincho.tistory.com/117
https://cloud.google.com/blog/products/bigquery/in-memory-query-execution-in-google-bigquery?hl=en
https://s-space.snu.ac.kr/handle/10371/133243
포스팅 잘 읽었습니다! 위 내용에서 분산 처리 시스템의 기본적인 개념들이 많이 내포되어 있는것 같아요. 다음과 같은 내용이 더 궁금해졌습니다
1) 태스크 실패시, 어떻게 복구하는지
2) 셔플시 네트워크 혼잡을 어떻게 예방하고 줄일 수 있는지