morebo2ks / hadoop

5 stars 0 forks source link

3주차 hadoop 스터디 #5

Closed wookiist closed 2 years ago

wookiist commented 2 years ago

파트


hyunju-song commented 2 years ago

송현주 스터디

MapReduce

wookiist commented 2 years ago

오재욱 스터디

KilJaeeun commented 2 years ago

https://www.notion.so/MapReduce-8a8a4a3da9704ad79fc92b5b6e66c905

JSYoo5B commented 2 years ago

유재상 스터디 내역

MapReduce

과거 Hadoop의 주요 처리 방식이었으나, 최근 Hive, Spark 등의 등장으로 점점 도태되어 가는 처리 방식 하지만 Big Data 처리의 본질이 MapReduce였으므로 자세히 알아보기로 한다.

참고로 Map, Reduce는 함수형 프로그래밍(선언형 프로그래밍)의 패턴임.

MapReduce 동작 과정

  1. Mapper: 각 데이터(RDB로 치면 레코드)에서 필요한 데이터만 가공하여 추출함
  2. Shuffle and sort: Mapper가 추출한 데이터를 키 속성이 일치하도록 Reducer 노드에 배치 (실제 Map-Reduce 과정에 직접적인 연관은 없으나, 분산 처리 효율을 위해 수행되는 과정)
  3. Reducer: Mapper의 처리 결과 (Shuffle and sort로 재배치됨)를 처리하여 결과를 압축함

MapReduce의 분선 처리 과정

앞서 Map, Reduce는 함수형 프로그래밍의 패턴이라 했으며, 이 패턴들은 함수형 패러다임의 특징에 따라 분산으로 동작해도 지장이 없다. (정확한 용어나 개념이 기억 안나는데, 각 입력 값에 대해 매번 동일한 결과를 반환하므로, 어디에서나 수행되어도 되고, 동시에 계산되어도 문제가 없다 등의 특성이었던 것으로 기억)

어쨋든 분산 처리를 통해 데이터를 처리하는 것이 속도 상의 핵심이 된다.

  1. Client Node가 MapReduce 동작 요청
  2. YARN -> Node들을 확인하여 Task 할당 NodeManager(Application Master)
  3. Node들은 한 물리 클러스터 내 여러 대 존재할 수도 있고, 여러 클러스터마다 분리될 수도 있음 (Container기반, VM기반 등)
  4. 동작 순서에 따라 MapTask/ReduceTask가 동작함
  5. HDFS로부터 각 Task에 필요한 data를 끌어옴

분산 처리에는 처리 과정을 여러 노드로 나누는 것 뿐만 아니라, 노드의 고장 여부도 고려해야 함

실습

Map-Reduce 단계를 그나마 간단한 파이썬 코드로 보여줌. 파이썬 코드만으로 실행해 볼 수도 있으며, Hadoop에 연결하여 동작시킬 수도 있음.

jasonkang14 commented 2 years ago

다음주부터는 저도 주말에 해야겠습니다 ㅠㅠ https://www.notion.so/byeongjinkang/MapReduce-3f7614408bf647c7a98d5374815c686e