<aside> 💡 이번 강의에선 MapReduce를 실행했을 때, Hadoop Cluster에서는 어떤 식으로 동작하는지 알아본다.

</aside>

이 작업들은 여러 노드에서 병렬적으로 처리할 수 있음.

Untitled

위의 그림에서 볼 수 있듯이, Mapping 작업 전에, 해당 데이터셋을 파티션 단위로 Splitting 하는 단계가 있다. 이렇게 쪼개진 데이터셋은 서로 독립적이므로 Mapping 작업은 다른 파티션의 데이터는 신경 쓰지 않아도 돼서 병렬화 하기에 수월하다. (서로 다른 노드에서 작업이 이루어질 수 있음) Splitting 하는 크기는 일반적으로 HDFS 블록의 기본 크기인 128MB가 적당하다고 한다. (ratio ????)

이렇게 다른 노드에서 서로 다른 Mapping 작업이 발생하면, 여러 노드에서 같은 Key를 가진 Key-Value 쌍이 나타날 수 있다. 이걸 Key 하나에 Value 리스트로 만들어주는 작업이 Shuffle & Sort 단계이다. 이 작업은 MapReduce에서 알아서 해주니 크게 걱정하지 않아도 된다.

<aside> ❓ 그럼 Reduce Task의 개수만큼 결과의 개수도 정해지는 거라면, 일반적인 경우에 마지막 MapReduce 연산에선 Reduce를 하나만 사용할까?

</aside>

이후 여러 Set로 나눠진 Key-Value 리스트 데이터를 각각의 노드에서 병렬로 Reducing 처리를 한다. 이후 이 데이터를 모두 Aggregate 해서 최종 데이터를 클라이언트로 전달하게 된다.


MapReduce 작업을 Hadoop에서 실행하는 과정

Hadoop 초기 버전 (version 1)

JobTracker & TaskTracker

Untitled

(https://phoenixnap.com/kb/hadoop-mapreduce)