사용자가 표준 SQL 구문을 사용하여 S3에서 데이터를 쿼리할 수 있는 Amazon에서 제공하는 서비스인 AWS Athena를 소개하려고 합니다. AWS는 클라우드 컴퓨팅 세계의 리더로 간주됩니다. Amazon에서는 온프레미스 아키텍처와 비교하여 워크로드를 실행하기 위한 비용 효율적인 솔루션과 경쟁력 있는 성능을 제공하는 거의 100개 이상의 서비스를 제공하고 있습니다. Amazon이 제공하는 서비스는 컴퓨팅, 스토리지, 데이터베이스, 분석, IoT, 보안 등 매우 다양합니다. Analytics 도메인에서 이러한 서비스의 인기 있는 영역 중 하나입니다. 이를 통해 고객은 비즈니스 결정에 대한 핵심 질문에 답하는 아키텍처를 구축할 수 있습니다.
표준 SQL 문을 사용하여 S3 버킷에 저장된 정적 데이터 검색에 중점을 둔 Amazon의 분석 도메인 서비스인 AWS Athena에 대해 설명합니다. 이것은 서버리스이고 관리할 인프라가 없기 때문에 고객이 S3에 저장된 데이터에 대한 통찰력을 빠르게 얻을 수 있도록 도와주는 강력한 도구입니다.
AWS Athena란?
AWS Athena는 Amazon에서 제공하는 서버리스 대화형 분석 서비스로, S3에 있는 데이터에 대한 통찰력을 얻는 데 쉽게 사용할 수 있습니다. 내부적으로 Athena는 SQL 쿼리를 실행하는 데 사용되는 Presto라는 분산 SQL 엔진을 사용했습니다. Presto는 정형, 반정형 및 비정형 데이터를 저장하기 위해 널리 사용되는 오픈 소스 기술인 Hive를 기반으로 합니다. Apache Hive의 공식 정의에 따르면 – " Apache Hive ™ 데이터 웨어하우스 소프트웨어는 SQL을 사용하여 분산 스토리지에 있는 대규모 데이터 세트를 읽고, 쓰고, 관리할 수 있습니다."
다양한 여러 소스의 데이터를 가져와 S3 버킷으로 덤프하는 간단한 데이터 파이프라인을 나타냅니다. 이는 아직 데이터에 적용된 변환이 없음을 의미하는 원시 데이터입니다. 이 단계에서 Amazon Athena를 사용하여 S3에서 이러한 데이터에 연결하고 분석을 시작할 수 있습니다. 이것은 원시 데이터를 쿼리하기 위해 데이터베이스나 외부 도구를 설정할 필요가 없기 때문에 매우 간단한 프로세스입니다. 분석을 마치고 원하는 결과를 찾았으면 EMR 클러스터를 사용하여 복잡한 분석 데이터 변환을 실행하고 원시 데이터를 정리 및 처리한 다음 다시 S3에 저장할 수 있습니다.
이 단계에서 다시 Amazon Athena를 사용하여 추가 분석을 위해 처리된 데이터를 쿼리할 수 있습니다. 여기서 언급할 가치가 있는 중요한 점은 Amazon QuickSight를 사용하여 Athena에 직접 연결하고 S3에 있는 데이터의 멋진 시각적 개체를 생성할 수 있다는 것입니다. 또는 빠른 데이터 분석을 위한 MPP 데이터 웨어하우스인 Redshift로 데이터를 이동한 다음 QuickSight를 사용하여 Redshift에서 데이터를 시각화할 수도 있습니다.
AWS Athena의 가격 책정 방식
Amazon Athena는 서버리스 데이터 쿼리 도구로 확장성과 비용 효율성이 동시에 뛰어납니다. 일반적으로 고객은 지정된 기간 동안 실행된 쿼리 수로 변환되는 쿼리당 지불 방식으로 요금이 부과됩니다. S3에서 1TB의 데이터를 스캔하기 위한 일반 요금은 5 USD입니다. 언뜻 보기에는 양이 적어 보이지만 수백, 수천 GB의 데이터에 대해 여러 쿼리를 실행하는 경우 가격이 통제할 수 없는 경우가 있습니다. 이 기사의 후반부에서는 Amazon Athena를 사용하는 동안 비용을 절약할 수 있는 몇 가지 최적화 기술에 대해 이야기하겠습니다.
공식 웹 사이트에서 제공 되는 계산기 를 사용하여 AWS Athena의 요금 모델을 이해할 수 있습니다 . 고객이 일반 CSV 파일로 S3에 약 100GB의 데이터를 저장했다고 가정해 보겠습니다. 이 데이터를 매일 쿼리하고 평균적으로 약 10개의 쿼리를 실행하여 분석을 생성하도록 AWS Athena를 구성했습니다. 이는 매달 약 304 개의 쿼리가 실행되는 것으로 해석됩니다. 기본 가격은 데이터 TB를 기준으로 하므로 GB를 기준으로 가격을 계산해야 합니다.
따라서 최종 계산은 평균적으로 10개의 쿼리 가 실행될 경우 매일 100GB 의 데이터 를 쿼리하는 데 약 월 150달러 정도가 됩니다.
AWS Athena를 위한 최적화 기법
클라우드 서비스로 작업할 때 가능한 한 최소한의 리소스를 사용하고 비용 효율적인 방식으로 최상의 결과를 산출하는 서비스를 처리해야 합니다. 성능을 높이고 비용을 억제할 수 있도록 AWS Athena 내에서 쿼리를 최적화하기 위해 취할 수 있는 몇 가지 조치가 있습니다. 아래에서 몇 가지 최적화 기술에 대해 설명하겠습니다.
S3에서 데이터 분할
이것은 S3에 데이터를 저장하기 위해 따르는 가장 일반적인 방법 중 하나입니다. 파티션은 주요 차원, 주로 날짜 차원 또는 지역 차원을 기반으로 별도의 디렉토리를 생성하여 수행할 수 있습니다. 이를 사용하여 연도, 월, 일별로 파티션을 나눈 다음 각 날짜의 디렉토리에 파일을 저장할 수 있습니다. 또는 하나의 디렉토리 아래에 유사한 지역에 대한 데이터를 저장할 수 있는 지역별로 파티션을 나눌 수도 있습니다.
파티셔닝은 Athena가 쿼리당 더 적은 양의 데이터를 스캔하는 데 도움이 되므로 더 빠르고 비용 효율적입니다.
데이터 압축 기술 사용
데이터를 압축할 때 쿼리하는 동안 다시 압축 및 압축 해제하려면 CPU가 필요합니다. 사용할 수 있는 압축 기술이 많이 있지만 Athena에서 가장 널리 사용되는 것은 Apache Parquet 또는 Apache ORC입니다. 이러한 기술은 열 기반 데이터베이스에 대한 기본 알고리즘을 사용하여 데이터를 압축하므로 분할 가능합니다.
쿼리에서 JOIN 조건 최적화
여러 차원에서 데이터를 쿼리하는 동안 분석을 수행하기 위해 두 개의 다른 테이블에서 데이터를 조인해야 하는 경우가 많습니다. 조인은 매우 간단한 프로세스처럼 보이지만 실제 프로세스가 발생하는 방식은 상당히 복잡합니다. 더 큰 데이터가 있는 테이블을 왼쪽에 유지하고 데이터가 적은 테이블을 오른쪽에 유지하는 것이 항상 권장됩니다. 이런 식으로 데이터 처리 엔진인 Presto는 오른쪽의 작은 테이블을 작업자 노드에 배포한 다음 왼쪽 테이블의 데이터를 스트리밍하여 둘 사이의 조인을 수행합니다.
'Tech' 카테고리의 다른 글
쿠버네티스란? (0) | 2022.05.25 |
---|---|
클라우드 인프라 정의 (0) | 2022.05.25 |
openSource MongoDB - CRUD 연산 (0) | 2022.05.25 |
New NoSQL & mongoDB - Replica & ReplicaSets (0) | 2022.05.25 |
openSource MongoDB - Introduction (0) | 2022.05.25 |
댓글