개발 기록장

05. 데이터 분석의 프레임워크 선택하기 - MPP 데이터베이스, Hive, Presto, Spark 본문

빅데이터를 지탱하는 기술

05. 데이터 분석의 프레임워크 선택하기 - MPP 데이터베이스, Hive, Presto, Spark

jxwxnk 2024. 7. 2. 22:44
반응형

자신의 상황과 맞는 프레임워크 선택하기

MPP 데이터베이스: 완성한 비정규화 테이블의 고속 집계에 적합

  • 구조화 데이터를 SQL로 집계하는 것뿐이라면 기존의 데이터 웨어하우스 제품과 클라우드 서비스를 이용하는 것이 가장 좋음
    • 기능적
    • 성능적
    • 시스템 안정성 측면
  • MPP 데이터베이스는 스토리지 및 계산 노드가 일체화 되어 있어 처음에 ETL 포르세스 등으로 데이터를 가져오는 절차만 완성하면 SQL만으로 데이터 집계 가능
  • 확장성 및 유연성 등의 측면에서는 분산 시스템이 유리하므로 MPP 데이터베이스에 분산 시스템 프레임워크 결합
    • 대량의 텍스트 처리
    • 데이터 처리를 프로그래밍 하고 싶은 경우
    • NoSQL 데이터베이스에 저장된 데이터를 집계하고 싶은 경우
  • 시각화 측면에서도 데이터 마트로 생각하면 MPP 데이터베이스는 유력한 대안임

Hive: 데이터양에 좌우되지 않는 쿼리엔진

  • Hadoop 상의 분산 애플리케이션은 높은 확장성내결함성을 가짐
  • Hive는 대규모 배치 처리에 유리
    • 텍스트 데이터를 가공하거나 열 지향 스토리지를 만드는 등 무거운 처리는 처리 시간이 길어지므로 Hive에서 실행하는 것이 적합함
  • Tez의 등장으로 Hive는 대화형 쿼리에서도 사용됨. 그러나 Hive의 장점은 대화성X -> 안정성
    • Tez는 MapReduce를 대체하는 것이므로, 내결함성을 계승함
  • Hive는 데이터양에 좌우되지 않는 쿼리 엔진으로 계속 이용될 것임

Presto: 속도 중시 && 대화식으로 특화된 쿼리 엔진

Presto는 Hive와 정반대인 쿼리 엔진으로 속도로 인해 다양한 것을 희생함

  • 메모리가 부족하면 쿼리를 실행할 수 없기도 하지만, 실행이 아주 빠르기 때문에 오류가 발생하더라도 다시 반복해서 사용함
  • Presto는 윈도우 함수를 비롯한 표준 SQL을 준수하고 있음
  • Hadoop, MySQL, 카산드라, 몽고 DB 등 많은 데이터 스토어에 대응하고 있어 모든 데이터를 SQL로 집계하기 위한 중심적인 존재가 될 수 있음
  • Presto는 대화식 쿼리 실행에 특화되어 있어, 텍스트 처리 중심이되는 ETL 프로세스및 데이터 구조화에는 적합하지 않음(대규모 데이터)
    • 데이터 구조화에는 Hive와 Spark를 사용하는 것이 좋음
  • Presto의 쿼리는 단시간에 대량의 리소스를 소비하므로 무리하게 사용하면 다른 쿼리는 실행 불가

Spark: 분산 시스템을 사용한 프로그래밍 환경

  • 인 메모리 데이터 처리
    • 메모리 관리가 중요: 여러번 사용하는데이터는 캐시에 올려 놓거나, 디스크에 스왑(swap)시킴으로써 메모리 해제
  • 대화형 쿼리 실행에 적합
  • Spark의 장점은 SQL이라기 보다는 ETL 프로세스에서 SQL에 이르기까지의 일련의 흐름을 하나의 데이터 파이프라인으로 기술할 수 있다는 점
    • 데이터 구조화와 SQL 실행을 하나의 스크립트 안에서 실행 가능
  • Spark는 분산 시스템을 사용한 프로그래밍 환경이므로, ETL 프로세스, 머신러닝 같은 모든 데이터 처리에 사용 가능
  • 데이터 파이프라인 구축과 이를 위한 실행 환경을 원한다면 Spark가 적합한 선택이지만, 단지 SQL만 사용하고 싶다면 처음부터 SQL에 특화된 쿼리 엔진과 MPP 데이터베이스를 사용하는 것이 적합함
반응형