MapReduce

     

    Map Reduce

     

    맵리듀스의 핵심은 엄청난 양의 input data를 쪼개 여러 machine에게 분산시켜서 병렬처리한 후 그 결과를 하나로 합치자는 것입니다. word count 예시로 맵리듀스의 과정을 알아보겠습니다.

     

     

     

    (1) Splitting & Mapping

     

    먼저 입력 텍스트 데이터를 split해서 DFS에 저장합니다. 각 mapper에 쪼개어진 데이터들이 한 줄씩 전달됩니다. 그런 다음 map함수를 실행하여 Deer, 1 과 같이 key-value 형태로 만들어 줍니다.

     

     

    (2) Combiner

     

     

    Combiner은 single mapper에 대해 같은 key를 가진 value들을 모아 network bandwith를 줄일 수 있도록 합니다. 그래서 Combiner를 semi-reducer라고도 합니다. 이때 intermediate key value pair는 DFS가 아닌 local storage에 저장합니다.

     

    (3) Partitioner

     

    comine의 과정을 마쳤다면  partitioner를 이용해서 전달할 데이터의 분할 방법을 결정하게 되는데, 초기 설정은 key를 reducer의 개수로 hash 합니다. ( hash(key) mod R ) key값을 hash하면 각각의 key들이 어느 Reducer로 가서 처리되어야 하는지 알 수 있습니다.

     

     

    (4) Shuffling

     

    같은 key를 가진 intermediate key value pair를 같은 Reducer에 전달하는 과정을 shuffling이라 합니다. Mapper의 결과가 같은 노드의 reducer로 간다면 노드간의 데이터통신이 필요하지 않지만, 다른 노드로 간다면 데이터를 전송시켜야 합니다. Real task에서는 노드의 개수가 매우 많기 때문에 같은 reducer로 Mapper의 결과값이 갈 확률이 적어지므로 많은 네트워크 통신을 필요로 합니다. 이는MapReduce 처리 전체의 성능 저하를 초래할 수 있기 때문에 shuffling을 통해 최대한 같은 key를 가진 것은 같은  reducer로 전달합니다.

     

     

    (5) Reducing

     

    Reducer는 각 key 별로 빈도수를 합산해서 출력합니다. reducer는 작업을 다 진행하면 그 결과파일을 DFS에 저장합니다. mapper는 DFS에서 데이터를 읽어 intermediate key value를 생성하고, 그 결과값을 local storage에 저장합니다. 그 후 reducer가 이 파일을 읽어와서 작업을 수행한 후 그 결과를 DFS에 저장하는데 이렇게 반복적인 I/O는 성능 저하의 원인이 되고, 이러한 문제점을 해결하기 위해 spark가 제안되었습니다.

     

     

    MR Component

     

     

    (1) Job Tracker

    • NameNode(MasterNode)에 위치
    • submit 된 여러 Job들을 스케줄링하고 모니터링 수행
    • TaskTracker에 맵/리듀스크 task를 할당

     

    (2) Task Traker

    • DataNode(SlaveNode)에 위치
    • node 당 하나의 TaskTracker가 할당됨
    • 각각의 task의 execution을 manage
    • JobTracker에게 heartbeat을 통해 상황을 알림

     

    'Data Mining' 카테고리의 다른 글

    Flajolet-Martin Algorithm  (0) 2021.11.10
    Bloom filters  (0) 2021.11.06
    DGIM Algoritm  (0) 2021.11.04
    Data Streams  (0) 2021.11.03
    Introduction  (0) 2021.11.03

    댓글