앎을 경계하기

[가짜연구소3기] Data Engineer

[가짜연구소 3기] 데이터 엔지니어링 - 15 What is parallel computing

양갱맨 2021. 8. 25. 18:19

주제

병렬컴퓨팅에 대한 정의와 장단점, 병렬컴퓨팅을 수행하는 방법 예제에 대해 배웠다.


데이터 엔지니어는 대규모 데이터에 대해 처리, 집계하는 등의 다양한 작업을 수행한다.

그런데 빅데이터는 너~무 큰 사이즈라서 하나의 컴퓨팅 파워로 다루기 힘들다.

이번 장에서는 빅데이터를 다룰 수 있는 병렬컴퓨팅에 대해 배운다.

병렬 컴퓨팅

데이터 처리 도구의 기초

  • 병렬 컴퓨팅 사용의 주된 이유의 첫 번째는 메모리다.
  • 두 번째 이유는 처리 능력이다.
  • 병렬 컴퓨팅은 하나의 작업을 작은 작업들로 쪼갠다.
  • 쪼갠 작업들을 여러개의 컴퓨터에서 수행한다.
  • 끝난 작업들을 합치는 작업을 수행한다.

병렬컴퓨팅의 장점

  • 처리 능력
  • 데이터를 분할하여 각 컴퓨터 메모리에 로드

병렬컴퓨팅의 단점

병렬 컴퓨팅을 사용하면서 필요한 통신의 오버헤드가 발생하는 경우

  • 작업의 요구사항이 크지 않음
  • 처리 장치가 너무 적은 경우

오버헤드 때문에 속도가 선형적으로 증가하지 않는 것을 병렬 감속이라고 한다.


예제

1896~2016까지의 모든 올림픽 이벤트 데이터셋이 있다.

매년 평균 참가자 연령을 구하고자 한다.

4개의 처리 장치를 사용할 수 있고 병렬처리를 하고자 한다.

이 예제에서는 각 연도 그룹의 평균 연령 계산을 하위 작업으로 나눌 수 있다.

 

이러한 처리를 할 수 있는 방법은 다양하다.

낮은 수준에서는 multiprocessing을 사용할 수 있다.

Pool의 인수로 4를 넣게 되면 4개의 개별 프로세스에서 실행되기 때문에 4개의 코어를 사용하게 된다.

작은 작업들을 하나로 합쳐서 최종 데이터프레임으로 만들게된다.

 

다른 프레임워크들은 이러한 저수준의 코드를 작성하지 않도록 추상화 계층을 제공한다.

dask 프레임워크를 사용하는 예제코드이다.