앎을 경계하기

[가짜연구소3기] Data Engineer

[가짜연구소 3기] 데이터 엔지니어링 - 12 Tools of the data engineer

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

 

주제

데이터 엔지니어가 사용하는 툴들에 대해 배웠다.


데이터 엔지니어는 여러 소스에서 데이터를 이동시키고, 처리하여 분석 데이터베이스에 로드한다.

엔지니어가 이런 작업을 하기 위해 사용하는 도구들에 대해 배운다.

데이터베이스

  • 데이터 엔지니어는 데이터베이스 시스템의 전문 사용자이다.
  • 대규모의 데이터를 저장하는 공간
  • 애플리케이션을 지원함
    • 온라인 상점에서 디비에 가격, 재고, 수량과 같은 제품 정보에 대한 데이터를 가지고 있다.
  • 분석을 위해 다른 데이터베이스에 특별한 데이터를 저장해놓을 수 있다.

프로세싱

  • 데이터 클렌징
  • 데이터 집계
  • 데이터 합치기

프로세싱 과정은 대규모 데이터를 처리하기 때문에 이 때 병렬 처리를 적용할 수 있다.

 

 

이런 처리를 하면서 보통 한 컴퓨터에서 처리하는 것이 아니라 기계 클러스터를 사용한다.

프로세싱 예시 코드

filter, count 연산을 하는 것은 Pandas 작업과 굉장히 유사하다. 그러나 컴퓨터 클러스터에서는 PySpark 프레임워크를 사용해서 이런 작업을 수행할 수 있다.

(실제로 판다스에서 한 번에 데이터 불러다가 하려고하면 뻑남.. 경험 ㅠ)


스케쥴링

  • 데이터가 특정 시간에 데이터가 한 곳에서 다른 곳으로 이동하는 과정
  • 데이터 엔지니어는 작업이 적시에, 올바른 순서로 수행되는지를 확인한다.

이러한 작업을 할 수 있는 도구는 많아서 결정해서 사용하면 된다.

  • 데이터베이스
    • MySQL, PostgreSQL, etc.
  • 프로세싱
    • Spark, Hive, etc.
  • 스케쥴링
    • Airflow, Oozie, etc

데이터 파이프라인

이 작업들을 수행하는 과정을 생각해보면, 데이터 파이프라인을 떠올릴 수 있다.

각 툴로 과정을 표현해보면 다음과 같다.

여러 데이터베이스를 연결하여 모든 데이터를 추출하고 변환한다.

Spark와 같은 클러스터 컴퓨팅 프레임워크를 사용해 분석 데이터베이스에 로드한다.

Airflow와 같은 예약 프레임워크를 사용하여 스케쥴링한다.