Presto 또는 PrestoDB란 무엇입니까?
Presto 또는 PrestoDB는 모든 크기의 데이터에 대해 빠른 분석 쿼리를 실행하기 위해 처음부터 모두 설계된 오픈 소스 분산 SQL 쿼리 엔진입니다. Hadoop 분산 파일 시스템(HDFS), Amazon S3, Cassandra, MongoDB 및 HBase와 같은 비관계형 소스 및 MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server 및 Teradata와 같은 관계형 데이터 소스를 모두 지원합니다.
Presto는 데이터를 별도의 분석 시스템으로 이동할 필요 없이 데이터가 저장된 위치에서 데이터 쿼리를 할 수 있습니다. 쿼리 실행은 순수 메모리 기반 아키텍처에서 병렬 실행되며 대부분의 결과가 몇 초 만에 반환됩니다. Facebook, Airbnb, Netflix, Atlassian, Nasdaq 등의 잘 알려진 수많은 회사에서 사용하고 있다는 점을 알게 됩니다.
Presto의 역사는 어떠한가요?
Presto는 대규모 Hadoop/HDFS 기반 클러스터로 구축된 300PB 데이터 웨어하우스에 대해 대화형 분석 쿼리를 실행하는 프로젝트로 Facebook에서 시작했습니다. Presto를 구축하기 전에 Facebook은 2008년에 자체 개발 및 출시한 Apache Hive를 사용하여 Facebook 에코시스템에 SQL 구문의 친숙함을 도입했습니다. Hive는 복잡한 Java MapReduce 작업을 SQL과 유사한 쿼리로 단순화하면서도 작업을 대규모로 실행할 수 있게 함으로써 Hadoop 에코시스템에 상당한 영향을 미쳤습니다. 하지만 대화형 쿼리에 필요한 빠른 성능에는 최적화되지 않았습니다.
2012년 Facebook Data Infrastructure 그룹은 페타바이트 규모로 빠르게 운영될 수 있는 대화형 쿼리 시스템인 Presto를 구축했습니다. 2013년 봄에 회사 전체에 출시되었습니다. 2013년 11월, Facebook은 Apache 소프트웨어 라이선스에 따라 Presto를 오픈소스화했고, 누구나 Github에서 다운로드할 수 있도록 했습니다. 오늘날 Presto는 Hadoop에서 대화형 쿼리를 수행하는 데 널리 사용되고 있으며 Facebook 및 기타 조직에서 많은 기여를 하고 있습니다. Facebook의 Presto 시스템은 천 명이 넘는 직원들이 사용하고 있으며, 이들은 매일 1페타바이트의 데이터를 처리하며 30,000개 이상의 쿼리를 실행합니다.
Presto는 어떻게 작동하나요?
Presto는 Hadoop에서 실행되는 분산 시스템으로, 기존의 대규모 병렬 처리(MPP) 데이터베이스 관리 시스템과 유사한 아키텍처를 사용합니다. 하나의 코디네이터 노드가 여러 작업자 노드와 동기화되어 작동합니다. 사용자는 코디네이터에게 SQL 쿼리를 제출합니다. 코디네이터는 사용자 지정 쿼리 및 실행 엔진을 사용하여 작업자 노드 전체에 분산된 쿼리 계획을 구문 분석, 계획 및 스케줄링합니다. 복잡한 쿼리, 집계, 조인, 왼쪽/오른쪽 외부 조인, 하위 쿼리, 창 함수, 고유 개수 및 근사 백분위수를 비롯한 표준 ANSI SQL 시맨틱스를 지원하도록 설계되었습니다.
쿼리가 컴파일된 후 Presto는 요청을 작업자 노드에서 여러 단계로 처리합니다. 모든 처리는 인메모리에서 이루어지며 스테이지 간에 네트워크를 통해 파이프라인되므로 불필요한 I/O 오버헤드가 발생하지 않습니다. 작업자 노드를 더 추가하면 병렬 처리가 더 많아지고 처리 속도가 빨라집니다.
Presto를 모든 데이터 소스로 확장할 수 있도록 스토리지 추상화를 통해 설계되어 플러그 가능한 커넥터를 쉽게 구축할 수 있습습니다. 이 때문에 프레스토는 Hadoop 분산 파일 시스템(HDFS), Amazon S3, Cassandra, MongoDB 및 HBase와 같은 비관계형 소스와 MySQL, PostgreSQL, Amazon Redshift, Microsoft SQL Server 및 Teradata와 같은 관계형 소스를 포함하여 많은 커넥터를 제공합니다. 데이터는 별도의 분석 시스템으로 이동할 필요 없이 데이터가 저장된 위치에서 쿼리됩니다.
Presto와 Hadoop의 차이점은 무엇입니까?
Presto는 HDFS 및 기타 데이터에 대한 빠른 대화식 쿼리를 위해 설계된 오픈 소스 분산 SQL 쿼리 엔진입니다. Hadoop/HDFS와 달리 자체 스토리지 시스템이 없습니다. 따라서 Presto는 Hadoop을 보완하는 솔루션이며 조직은 보다 광범위한 비즈니스 과제를 해결하기 위해 두 솔루션을 모두 채택하고 있습니다. Hadoop는 모든 Hadoop 시스템과 함께 설치할 수 있으며, Amazon EMR Hadoop 배포판에 패키징되어 있습니다.
누가 Presto를 사용하나요?
Kafka는 많은 유명 조직에서 대규모로 프로덕션에 사용되고 있습니다. Facebook, Airbnb, Netflix, Atlassian, Nasdaq, 등에서 사용되고 있음을 알 수 있습니다. Facebook의 Presto 시스템은 천 명이 넘는 직원들이 사용하고 있으며, 이들은 매일 1페타바이트의 데이터를 처리하며 30,000개 이상의 쿼리를 실행합니다. Netflix는 Presto 클러스터에서 하루 평균 약 3,500개의 쿼리를 실행합니다. Airbnb는 Presto를 기반으로 작동하는 웹 기반 쿼리 실행 도구인 Airpal을 구축하고 오픈 소스로 제공했습니다. 더 광범위한 Presto 커뮤니티는 이 포럼과 Facebook의 Presto 페이지에서 찾을 수 있습니다.
어떻게 클라우드에 Presto를 배포할 수 있을까요?
Presto는 성능, 확장성, 신뢰성, 가용성 및 대규모의 경제를 제공하므로 Spark는 클라우드의 이상적인 워크로드입니다. Presto 클러스터를 몇 분 만에 실행할 수 있습니다. 노드 프로비저닝, 클러스터 설정, Presto 구성 또는 클러스터 튜닝에 대해 걱정할 필요가 없습니다.
AWS는 클라우드에서 Presto 구현을 어떻게 구축할 수 있나요?
Amazon EMR과 Amazon Athena는 클라우드에 Presto를 배포하기에 가장 좋은 장소입니다. AWS의 규모, 단순성 및 비용 효율성과 함께 Presto를 통합하고 엄격하게 테스트하기 때문입니다. Amazon EMR을 활용하면 노드 프로비저닝, 클러스터 설정, Presto 구성 또는 클러스터 튜닝을 수행하지 않아도 단 몇 분 만에 Presto 클러스터를 시작할 수 있습니다. EMR에서는 컴퓨팅 인스턴스의 수에 상관없이 모두 단 몇 분 만에 프로비저닝할 수 있습니다. Amazon Athena를 사용하면 서버, 가상 머신 또는 클러스터를 설정, 관리 또는 조정할 필요 없이 AWS 서버리스 플랫폼을 사용하여 Presto를 배포할 수 있습니다. Amazon S3에서 데이터를 가리키고 스키마를 정의한 다음 내장된 쿼리 편집기를 사용하거나 기존 비즈니스 인텔리전트(BI) 도구를 사용하여 쿼리를 시작하기만 하면 됩니다. Athena는 쿼리를 자동으로 병렬화하고 쿼리를 빠르게 실행할 수 있도록 리소스를 동적으로 확장합니다. 실행한 쿼리에 대해서만 비용을 지불합니다.