Amazon Web Services 한국 블로그
Amazon Athena – Apache Spark 지원 기능 정식 출시
2016년 Jeff Barr가 Amazon Athena를 처음 발표했을 때, 데이터와의 상호 작용에 대한 제 관점이 바뀌었습니다. Amazon Athena를 사용하면 Athena에서 테이블 생성, 커넥터를 사용하는 데이터 로드, ANSI SQL 표준을 사용하는 쿼리부터 시작하여 몇 단계만 거치면 데이터와 상호 작용할 수 있습니다.
시간이 지남에 따라 금융 서비스, 의료 및 소매업과 같은 다양한 산업에서는 다양한 형식과 크기의 데이터에 대해 더 복잡한 분석을 실행해야 했습니다. 기업들은 복잡한 데이터 분석을 용이하게 하기 위해 Apache Spark를 도입했습니다. Apache Spark는 모든 규모의 데이터에 대해 빠른 분석 워크로드를 실행하도록 설계된 널리 사용되는 오픈 소스 분산 처리 시스템입니다.
그러나 대화형 애플리케이션을 위한 Apache Spark를 실행하기 위해 인프라를 구축하는 것은 쉽지 않습니다. 고객은 애플리케이션을 기반으로 인프라를 프로비저닝, 구성 및 유지 관리해야 합니다. 애플리케이션 시작 속도가 느려지거나 유휴 비용이 발생하지 않도록 최적의 튜닝 리소스를 사용하는 것은 말할 것도 없습니다.
Apache Spark용 Amazon Athena 소개
오늘 Apache Spark용 Amazon Athena를 발표하게 되어 기쁩니다. 이 기능을 통해 Apache Spark 워크로드를 실행하고 Jupyter Notebook을 인터페이스로 사용하여 Athena에서 데이터 처리를 수행하고 Athena API를 사용하여 Spark 애플리케이션과 프로그래밍 방식으로 상호 작용할 수 있습니다. 인프라를 수동으로 프로비저닝하지 않고도 1초 이내에 Apache Spark를 시작할 수 있습니다.
간단한 미리보기는 다음과 같습니다.
작동 방식
Apache Spark용 Amazon Athena는 서버리스로 실행되므로 고객은 Apache Spark를 실행하기 위한 리소스를 프로비저닝하고 유지 관리할 필요 없이 대화형 데이터 탐색을 수행하여 인사이트를 얻을 수 있는 이점이 있습니다. 이 기능을 통해 고객은 이제 Athena 콘솔에서 직접 노트북 환경을 사용하거나 API를 사용하여 프로그래밍 방식으로 Apache Spark 애플리케이션을 빌드할 수 있습니다.
다음 그림에 이 기능의 작동 방식을 설명합니다.
이제 Athena 콘솔에서 Jupyter Notebook을 사용하여 Python으로 노트북을 실행하고 Spark 애플리케이션을 실행할 수 있습니다. 이 Jupyter Notebook에서 고객은 컨텍스트를 전환하지 않고도 Spark 애플리케이션을 사용하여 다양한 소스의 데이터를 쿼리하고 여러 계산 및 데이터 시각화를 수행할 수 있습니다.
Amazon Athena는 고객이 Amazon S3의 데이터를 비롯하여 AWS Glue 데이터 카탈로그의 모든 데이터 소스를 사용할 수 있도록 지원하는 AWS Glue 데이터 카탈로그와 통합됩니다. 이를 통해 고객은 기계 학습 파이프라인에 사용할 데이터 세트를 준비하기 위해 애플리케이션을 구축해 데이터를 분석하고 시각화하여 데이터를 탐색할 수 있습니다.
데모 미리 보기 섹션에서 설명했듯이 Apache Spark 엔진을 실행하는 워크그룹의 초기화는 대화형 워크로드용 리소스를 실행하는 데 1초도 걸리지 않습니다. 이를 가능하게 하기 위해 Apache Spark용 Amazon Athena는 가벼운 마이크로 가상 머신인 Firecracker를 사용하며, 이를 사용하면 즉시 시작할 수 있고 리소스에 대한 웜 풀을 유지할 필요가 없습니다. 이는 Apache Spark를 실행하기 위한 리소스를 준비하지 않고도 대화형 데이터 탐색을 수행하여 인사이트를 얻으려는 고객에게 도움이 됩니다.
Apache Spark용 Amazon Athena 시작하기
Apache Spark용 Amazon Athena를 어떻게 사용할 수 있는지 알아봅시다. 이 게시글에서는 이 기능을 시작하는 방법을 단계별로 설명합니다.
첫 번째 단계는 워크그룹을 생성하는 것입니다. Athena의 관점에서 보면 워크그룹은 사용자와 애플리케이션 간에 워크로드를 분리하는 데 도움이 됩니다.
워크그룹을 생성하려면 Athena 대시보드에서 워크그룹 생성을 선택합니다.
다음 페이지에서는 이 워크그룹의 이름과 설명을 입력합니다.
같은 페이지에서 Athena의 엔진으로 Apache Spark를 선택할 수 있습니다. 또한 Jupyter Notebook 내에서 사용할 적절한 권한이 있는 서비스 역할도 지정해야 합니다. 그런 다음 예제 노트북 켜기를 선택합니다. 그러면 Athena에서 Apache Spark를 쉽게 시작할 수 있습니다. Athena에서 관리하는 Jupyter Notebook을 암호화하거나 AWS Key Management Service(AWS KMS)에서 구성한 키를 사용할 수도 있습니다.
그런 다음 Jupyter Notebook의 계산 결과를 저장할 Amazon Simple Storage Service(S3) 버킷을 정의해야 합니다. 이 워크그룹의 모든 구성을 확인한 다음에는 워크그룹 생성을 선택하기만 하면 됩니다.
이제 Athena에서 이미 생성한 워크그룹을 볼 수 있습니다.
이 워크그룹의 세부 정보를 보려면 워크그룹에서 링크를 선택하면 됩니다. 이 워크그룹을 생성할 때 예제 노트북 켜기도 확인했으므로 시작하는 데 도움이 되는 Jupyter Notebook을 가지게 된 것입니다. Amazon Athena는 또한 파일 가져오기를 사용하여 노트북에서 업로드할 수 있는 기존 노트북을 가져오거나 노트북 생성을 선택하여 처음부터 새 노트북을 만들 수 있는 유연성을 제공합니다.
Jupyter Notebook 예시를 선택하면 Apache Spark 애플리케이션 구축을 시작할 수 있습니다.
Jupyter Notebook을 실행하면 워크그룹에 세션이 자동으로 생성됩니다. 그 후 Jupyter Notebook에서 계산을 실행할 때마다 모든 결과가 세션에 기록됩니다. Athena에서 계산 ID를 선택하여 각 계산을 검토할 수 있는 전체 정보를 제공하면 계산 세부 정보 페이지로 이동됩니다. 여기에서 코드 및 계산 결과를 검토할 수 있습니다.
세션에서는 기본적으로 1개의 데이터 처리 장치(DPU)를 사용하여 코디네이터 크기와 실행기 크기를 조정할 수 있습니다. DPU는 vCPU 4개와 RAM 16GB로 구성됩니다. 더 큰 DPU로 변경하면 계산이 복잡한 경우에도 작업을 더 빠르게 처리할 수 있습니다.
프로그램 방식의 API 액세스
Athena 콘솔을 사용하는 것 외에도 프로그래밍 방식의 액세스를 사용하여 Athena 내부의 Spark 애플리케이션과 상호 작용할 수도 있습니다. 예를 들어 create-work-group
명령으로 워크그룹을 생성하고, create-notebook
을 사용하여 노트북을 시작하고, start-session
명령으로 노트북 세션을 실행할 수 있습니다.
Jupyter Notebook을 열지 않고도 보고서를 작성하거나 데이터를 계산하는 등의 명령을 실행해야 할 때 프로그래밍 방식의 액세스를 사용하는 것이 유용합니다.
이전에 생성한 Jupyter Notebook을 사용하면 AWS CLI로 다음 명령을 실행하여 세션을 시작할 수 있습니다.
$> aws athena start-session \
--work-group <WORKGROUP_NAME>\
--engine-configuration '{"CoordinatorDpuSize": 1, "MaxConcurrentDpus":20, "DefaultExecutorDpuSize": 1, "AdditionalConfigs":{"NotebookId":"<NOTEBOOK_ID>"}}'
--notebook-version "Jupyter 1"
--description "Starting session from CLI"
{
"SessionId":"<SESSION_ID>",
"State":"CREATED"
}
그런 다음 start-calculation-execution
API를 사용하여 계산을 실행할 수 있습니다.
$ aws athena start-calculation-execution \
--session-id "<SESSION_ID>"
--description "Demo"
--code-block "print(5+6)"
{
"CalculationExecutionId":"<CALCULATION_EXECUTION_ID>",
"State":"CREATING"
}
--code-block
플래그와 함께 인라인 코드를 사용하는 것 외에도 다음 명령을 사용하여 Python 파일의 입력을 전달할 수도 있습니다.
$ aws athena start-calculation-execution \
--session-id "<SESSION_ID>"
--description "Demo"
--code-block file://<PYTHON FILE>
{
"CalculationExecutionId":"<CALCULATION_EXECUTION_ID>",
"State":"CREATING"
}
요금 및 가용성
Apache Spark용 Amazon Athena는 현재 미국 동부(오하이오), 미국 동부(버지니아 북부), 미국 서부(오리건), 아시아 태평양(도쿄) 및 유럽(아일랜드)의 AWS 리전에서 제공됩니다. 이 기능을 사용하면 시간당 데이터 처리 장치 또는 DPU에서 정의한 컴퓨팅 사용량을 기준으로 요금이 부과됩니다. 자세한 내용은 여기의 요금 페이지를 참조하세요.
이 기능을 시작하려면 설명서를 참조하여 Apache Spark용 Amazon Athena에 대해 자세히 알아보고 요금을 이해한 다음 단계별 안내를 따르세요.
즐겁게 빌드해 보세요.
– Donnie