데이터 엔지니어링이란?

오상윤·2023년 1월 8일

데이터 사이언스

목록 보기
2/4

Data Engineering

  • 빅데이터를 수집, 가공, 저장하는 모든 시스템을 구축/관리하는 과정
  • 대용량 데이터 처리를 위한 DataBase(DB)를 관리하는 작업
  • Database란, 데이터를 효율적으로 저장/관리하기 위한 시스템을 말한다.
  • 회사/기관이 운영하는 서비스에서 발생하는 모든 데이터를 데이터베이스로 효과적으로 관리하기 위한 모든 시스탬을 운영
  • Hadoop Ecosyste와 관련이 깊다
  • 하나의 확정된 개념은 아니다.

기초 용어

  • coumputing Resource : 데이터를 처리하기 위해서 필요한 리소스(=능력
    • cpu : 연산 능력(= 계산량)
    • 메인 메모리 : 데이터를 임심 저장할 수 있는 공간의 크기 (= 단기 기억 능력)
    • 스토리지 : 데이터를 저장할 수 있는 크기 (= 장기 기억 능력)
  • network : 컴퓨터가 특정 시스템을 통해서 연결되어 있는 구조. 이 구조에서는 컴퓨터들이 서로 통신을 해서 데이터를 주고 받을 수 있다.
    • network model : computer network를 이해하는 방식 (OSI 7 layer VS TCP/IP layer)
    • Client : end-user, 실제 사용자, 서비스 사용자, 작업을 요청하는 사람(또는 프로그램)
    • server : 요청을 받는 대상, 서비스를 운영해주는 컴퓨터
    • web : WWW(World Wide Web)와 같은 단어, hypertext와 media로 구성된 페이지들을 연결한 구조 또는 시스템
  • 데이터베이스 : 데이터를 효율적으로 운영/관리/저장하는 시스템
    • RDB : Relational DataBase, 관계형 데이터베이스, 테이블 형태로 데이터를 관리하는 체계
    • table : row와 column으로 구성된 2차원 데이터, RDB의 구성요소, table 단위로 데이터를 관리
    • schema : 어떤 테이블에 대한 정의, 테이블에 대한 metadata, column에 대한 정의, row에 대한 정의
    • SQL : 데이터베이스를 다루기 위한 언어
    • NoSQL : SQL 그 이상, SQL로 지원되지 않는 데이터베이스들을 포함한 모든 시스템
    • Data Warehouse : 분석을 목적으로 만들어진 대용량 데이터 처리가 가능한 데이터 베이스
    • Data Lake : 수집을 목적으로 만들어진 대용량 데이터 처리가 가능한 NoSQL

Data Pipeline

ETL

  • Extract, Transform, Load의 약자로 다양한 데이터 소스로부터 데이터를 수집 및 처리하는데 사용되는 파이프라인
    • 데이터 분석가들이 분석에 사용할 데이터를 정의하게 되면, 데이터 엔지니어에게 요청을 해서 해당 데이터를 처리해주길 원한다.
    • 대용량 데이터를 한번에 처리하는걸 데이터 베이스 요청을 했다면 어떻게 처리해야 할까?
    • 만약에 데이터 분석가가 Pandas를 이용해서 데이터를 처리하기로 정했다. Pandas에서 데이터를 처리할 수 있게 요청을 했다면 어떻게 처리해야 할까
  • Extract(추출)
    • 데이터를 원본 소스로부터 가져오는 작업
    • SQL의 SELECT와 같다.
    • 원본 소스가 꼭 RDB일 필요는 없다. (RDB가 효율은 가장 좋다)
    • 분석가가 정의한 모든 데이터를 다 가져온다.
  • Transform(변환)
    • 추출한 데이터를 분석에 필요한 형태로 변환한다.
    • 데이터의 포맷을 통일시켜주는 작업이다.
    • 분석 요청 사항에 맞는 형태로 저장된다 (Data Warehouse의 schema 정의)
  • Load(적재)
    • 변환된 데이터를 Data Warehouse에 저장한다.
    • 저장된 데이터를 분석가가 편의에 따라 자유롭게 사용할 수 있다. (application 형태로 제공)
    • 원본 데이터에 정보를 모두 나타내고 있어야 한다.
  • ETL은 데이터 엔지니어의 손을 많이 탄다.
  • 데이터 엔지니어가 직접 각 프로세스마다 처리 방식을 모두 구현해주어야한다.
  • 명세사항이 변경되는 경우엔, 그에 맞춰서 다시 처리단계(Transform)을 맞춰줘야한다.
  • 대신에 솔루션 사용자 입장에서는 맞춰진 프로세스에 따라 편하게 데이터를 처리 및 사용이 가능하다.

ELT

  • Extract, Load, Transform의 약자로 Transform이 일어나는 위치만 ETL과 다른 데이터 파이프 라인
  • ELT는 ETL과 각 단계의 정의는 같다
  • ELT는 ETL과 달리, 데이터를 일단 적재한 다음에 변환을 수행한다.
  • 일단 데이터를 먼저 올려놓기 때문에, Data Warehouse보다는 Data Lake가 적합하다
  • Data Lake는 정형/비정형/반정형 데이터 모두 자유롭게 적재가 가능하기 때문에 저장 효율성이 좋다.
  • 다양한 데이터 타입을 모두 저장할 수 있다.
  • 처리 속도가 ETL에 비해 느리다(저장된 이후에 Transform을 제일 마지막에 하기 때문에)
  • 대신에 저장의 유연성과 명세사항에 없던 추후에 사용될지도 모르는 데이터까지 모두 수집이 가능하다

Hadoop Ecosystem

  • Apache 재단에서 관리하는 프리웨어인 Hadoop Project에서 만들어지는 모든 소프트에어 솔루션들의 집할을 얘기
  • Haddop은 HDFS라는 파일처리 시스템과 YARN이라는 리소스 관리 시스템, MapReduce라는 대용량 처리 시스템을 기반으로 하는 프레임 워크다.
  • 대용량 데이터를 효과적으로 처리하는 것을 목적으로 하는 많은 소프트웨어들이 함께 있는 플랫폼이라고 볼 수 있다.

HDFS

  • Hadoop에서 관리하는 모든 데이터를 저장/관리하는 시스템(스토리지 관리)
  • Namenode와 Datanode로 데이터를 분산관리한다.
    • node : 컴퓨터 한 대
    • rack : Node 여러 대를 물리적으로 묶어놓은 것. 같은 네트워크 스위치를 공유한다.
    • cluster : 여러 rack을 물리적으로 묶은 것
  • Namenode는 실제 데이터가 어떤 Datanode에 저장되어 있는지를 관리하는 메타데이터를 관리하는 노드이다.
  • Datanode엔 실제 데이터가 분산 저장된다. (replica들이 존재함)

YARN

  • Hadoop에서 처리되는 모든 리소스를 관리해주는 시스템
  • 어떤 요청이 어떤 클러스터에 할당되어야하는지 관리한다.
  • Resource Manager와 Node Manager가 리소스를 관리한다.
  • Resource Manager는 각 Node Manager가 각 Node의 리소스를 얼마나 사용하는지를 관리한다.
  • Node Manager는 각 Node를 관리하며, Node의 리소스를 관리한다. Resource Manager의 요청을 수행하는 역할
  • Client가 작업을 요청하면 Resource Manager가 Node Manager들을 관리하여 리소스를 할당하고, 작업을 수행한다.

mapreduce

  • Hadoop에서 데이터를 분산처리하는 방법 중에 하나이다.(가장 많이 쓰임)
  • Map task와 Reduce task가 있다.
  • Map task를 수행하는 노드를 Mapper, Reduce task를 수행하는 노드를 Reducer라고 한다.

process

  1. 전처리가 Mapper가 일을 할 수 있는 형태로 데이터를 정의하여 Mapper들에게 전달한다
  2. Mapper는 처리해야하는 데이터를 Reducer가 연산할 수 있는 형태로 변환한다.(mapping)
  3. Reducer에게 전달하기 전에 데이터를 기준에 맞게 Sort & Merge한다. (shuffling)
  4. Reducer는 전달받은 데이터에 요청한 연산을 수행한다.(Reducing = Sum)
  5. Reducer들이 처리한 데이터를 합친다.

Cloud computing

  • 사용자에 필요에 따라 Computing Resource를 할당해주는 시스템, 할당을 해주는 서버가 네트워크/서비스를 통해서 제공해주는 시스템.
    • 지금은 '대'클라우드 시대이다.
    • Cloud Computing으로 우리는 컴퓨터(컴퓨팅 리소스)를 빌려쓰는 시대에 살게되었다.
    • "Pay-as-you-go" -> 사용한만큼 지불한다.
    • Clouding Computing을 하기 위해서는 Data Center와 실시간 분산처리 시스템이 필요하다
    • 주로 IT대기업들이 서비스를 제공한다
    • ~aaS(as a Service)
    • Cloud Computing을 직접 운영하는 회사들의 서비스 설명을 보며, 개념을 구체화해보자
profile
가보자가보자~

0개의 댓글