주의 : 테스트 환경, 방식, 데이터 사이즈 등에 따라 결과가 달라지므로 단순 참고용임을 말씀드립니다.
시작하기
- 서울 리전에 Athena 서비스 출시 [AWS한국블로그] AWS Athena, 서울 리전 출시 (2017년 11월 )
- S3에 데이터를 저장하고 활용하는데 있어서 Redsfhift를 써야 될지 Athena를 써야될지 아니면 직접 EMR 서비스를 구축해서 써야 될지 고민.
- 기본적으로 Redsfhift, Athena, EMR 각각 서로 다른 요구와 사용 사례를 처리하기 떄문에 해당하는 서비스로 선택. [AWS FAQ]Amazon Athena, Amazon EMR 및 Amazon Redshift의 차이점
- TPC-DS 벤치마크로 간단하게 100GB 스케일의 TPC-DS 벤치마크를 돌려보겠습니다.
목차
- 테스트 준비
- TPC-DS 데이터 생성
- 클러스터 준비
- 테이블 생성 및 데이터 로드
- Query 수행
- TPC-DS 99 Query 중 52개 Query 순차 수행
- 결론
테스트 준비
TPC-DS 데이터 생성
- TPC BENCHMARK ™ DS 활용 표준 벤치마크 데이터 세트 생성 (100GB)
- Hortonworks에서 제공하는 Apache Hive testbench 코드 활용 100GB 데이터 생성 https://github.com/hortonworks/hive-testbench
- [table id=1 /]
- 생성된 데이터를 S3에 업로드하고, 추가적으로 Athena, EMR을 위한 Parquet 형식으로 변환하여 업로드
클러스터 준비
- 테스트 임의 환경 구축
- Athena의 경우 서버리스 서비스 이므로 별도 구성이 불필요
- EMR 클러스터 구성
- EMR version 5.9.0 : presto 0.166, hive 2.1.1
- presto max memory 사이즈 변경외 기타 설정은 변경하지 않음
- 테스트 임의 환경 구축
테이블 생성 및 데이터 로드
- Redshift
- 테이블 생성 : Distribution key - Even(default) , Sort key - 미적용
- S3 데이터 로드 : Copy command
- Athena
- S3를 location으로하는 parquet 형식으로 저장된 External 테이블 생성
- EMR (Presto, Hive)
- S3를 location으로하는 parquet 형식으로 저장된 External 테이블 생성
- Redshift
Query 수행
TPC-DS 99 Query 중 52개 Query 순차 수행 (단일 사용자 가정, 총 3회 수행)
- 각 query 별 수행 소요 시간
- 52개 Query 총 수행 소요 시간 (순수 query 수행 소요 시간 합계 - idle time 제외)
- Athena 총 스캔사이즈 : 0.18 TB
결론
- 테스트 사양 대비 Redshift 가 쿼리 수행 소요 시간이 가장 짧았음.
- 테스트 사양 대비 EMR(Presto) 별도 구성보다 Athena의 쿼리 소요 시간이 짧았으며, 비용적으로 비교하기에는 무리가 있으나 Athena의 스캔사이즈가 적었기 때문에 좀 더 비용 효율적이라고 판단됨.
- EMR(Presto) 구성의 경우 소요 시간이 걸리더라도 Spot 으로 저렴하게 구성 한다고 가정하면 비용 효율적으로 접근 가능함.