일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- docker-compose
- 데이터 웨어하우스
- truncate
- airflow
- dag
- 데이터파이프라인
- ETL
- Hive
- snowflake
- ELT
- Kafka
- docker hub
- spark
- AWS
- Django
- airflow.cfg
- SQL
- Django Rest Framework(DRF)
- selenium
- 웹 스크래핑
- 데이터마트
- Serializer
- 웹 크롤링
- docker
- dag 작성
- 데이터레이크
- yarn
- redshift
- 알고리즘
- 컨테이너 삭제
Archives
- Today
- Total
개발 기록장
05. 데이터 분석의 프레임워크 선택하기 - MPP 데이터베이스, Hive, Presto, Spark 본문
반응형
자신의 상황과 맞는 프레임워크 선택하기
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 데이터베이스를 사용하는 것이 적합함
반응형
'빅데이터를 지탱하는 기술' 카테고리의 다른 글
07. 벌크 형과 스트리밍 형의 데이터 수집 (0) | 2024.07.10 |
---|---|
06. 데이터 마트의 구축 (0) | 2024.07.03 |
04. 쿼리 엔진 (0) | 2024.07.02 |
03. 대규모 분산 처리 프레임워크 (0) | 2024.07.02 |
02. 데이터베이스 지연 줄이기 && 열 지향 스토리지 (0) | 2024.06.22 |