Apache Pinot는 짧은 대기 시간으로 확장 가능한 실시간 분석을 제공하도록 구축된 실시간 분산 OLAP 데이터 저장소입니다. 배치 데이터 소스(예: Hadoop HDFS, Amazon S3, Azure ADLS, Google Cloud Storage)와 스트림 데이터 소스(예: Apache Kafka)에서 수집할 수 있습니다.
Pinot는 LinkedIn과 Uber의 엔지니어가 제작했으며 상한선 없이 확장 및 확장할 수 있도록 설계되었습니다. 성능은 클러스터 크기와 예상 QPS(초당 쿼리) 임계값에 따라 항상 일정하게 유지됩니다.
시작 가이드, 배포 방법, 튜토리얼 등을 보려면 https://docs.pinot.apache.org의 프로젝트 설명서를 방문하세요.
Pinot는 원래 누가 프로필을 보았는지, 회사 분석, 인재 통찰력 등과 같은 풍부한 대화형 실시간 분석 애플리케이션을 지원하기 위해 LinkedIn에서 구축되었습니다. UberEats Restaurant Manager는 고객이 분석 앱을 접하는 또 다른 예입니다. LinkedIn에서 Pinot는 50개 이상의 사용자 대면 제품을 지원하여 초당 수백만 개의 이벤트를 수집하고 밀리초 대기 시간으로 초당 100,000개 이상의 쿼리를 제공합니다.
빠른 쿼리 : 수십 밀리초 내에 P90 대기 시간으로 페타바이트 데이터 세트를 필터링하고 집계합니다. 이는 UI에서 대화형으로 실시간 결과를 반환할 수 있을 만큼 빠릅니다.
높은 동시성 : Pinot를 직접 쿼리하는 사용자 대상 애플리케이션을 사용하면 초당 수십만 개의 동시 쿼리를 처리할 수 있습니다.
SQL 쿼리 인터페이스 : 내장된 쿼리 편집기와 REST API를 통해 고도로 표준적인 SQL 쿼리 인터페이스에 액세스할 수 있습니다.
다목적 조인 : 페타바이트 데이터 세트에 대해 임의의 사실/차원 및 사실/사실 조인을 수행합니다.
컬럼 기반 : Run Length, 고정 비트 길이 등 다양한 압축 방식을 갖춘 컬럼 기반 데이터베이스입니다.
플러그형 인덱싱 : 타임스탬프, 반전, StarTree, Bloom 필터, 범위, 텍스트, JSON 및 지리공간 옵션을 포함한 플러그형 인덱싱 기술입니다.
스트림 및 일괄 수집 : Apache Kafka, Apache Pulsar 및 AWS Kinesis에서 실시간으로 수집합니다. Hadoop, Spark, AWS S3 등에서 일괄 수집합니다. 쿼리를 위해 배치 소스와 스트리밍 소스를 단일 테이블로 결합합니다.
실시간 수집 중 Upsert : 일관성을 유지하면서 대규모 데이터 업데이트
내장형 다중 테넌시 : 클라우드 친화적인 리소스 관리를 위해 격리된 논리적 네임스페이스에서 데이터를 관리하고 보호합니다.
확장을 위해 구축됨 : Pinot는 수평으로 확장 가능하고 내결함성이 있으며 스토리지 및 처리량 스펙트럼 전반에 걸쳐 워크로드에 적응할 수 있습니다.
Kubernetes의 클라우드 네이티브 : Helm 차트는 Kubernetes를 사용하여 관리하기 쉬운 수평 확장 가능하고 내결함성이 있는 클러스터 배포를 제공합니다.
Pinot는 대량의 데이터와 이벤트에 대해 짧은 대기 시간으로 실시간 OLAP 쿼리를 실행하도록 설계되었습니다. 실시간 스트림 수집 외에도 Pinot는 동일한 낮은 대기 시간을 보장하는 일괄 사용 사례도 지원합니다. 실시간 데이터 수집을 통해 불변 데이터에 대한 집계와 같은 빠른 분석이 필요한 상황에 적합합니다. Pinot는 다양한 측정기준과 측정항목이 포함된 시계열 데이터를 쿼리하는 데 매우 효과적입니다.
예시 쿼리:
SELECT sum (clicks), sum (impressions) FROM AdAnalyticsTable
WHERE
((daysSinceEpoch >= 17849 AND daysSinceEpoch <= 17856 )) AND
accountId IN ( 123456789 )
GROUP BY
daysSinceEpoch TOP 100
아파치/피노에 기여하고 싶으십니까? ?
Apache Pinot에 대한 오픈 소스 커미터 대열에 합류하고 싶으십니까? 그런 다음 코드에 참여할 수 있는 방법에 대한 기여 가이드를 확인하세요.
버그가 있거나 새로운 기능에 대한 아이디어가 있는 경우, 새로운 이슈를 열기 전에 공개 이슈를 탐색하여 우리가 이미 작업 중인 내용을 확인하세요.
또한 새로운 기여자가 해결할 수 있는 몇 가지 초보자 문제도 태그했습니다.
# Clone a repo
$ git clone https://github.com/apache/pinot.git
$ cd pinot
# Build Pinot
# -Pbin-dist is required to build the binary distribution
# -Pbuild-shaded-jar is required to build the shaded jar, which is necessary for some features like spark connectors
$ mvn clean install -DskipTests -Pbin-dist -Pbuild-shaded-jar
# Run the Quick Demo
$ cd build/
$ bin/quick-start-batch.sh
UI 개발 설정에 대해서는 이 문서를 참조하세요.
일반 Pinot 빌드는 mvn clean install
명령을 사용하여 수행됩니다.
그러나 이 명령을 실행하는 데 시간이 오래 걸릴 수 있습니다.
더 빠른 빌드를 위해서는 실제로 개발에 필요하지 않은 일부 플러그인을 비활성화하는 mvn verify -Ppinot-fastdev
사용하는 것이 좋습니다.
더 자세한 지침은 설명서의 빠른 데모 섹션에서 확인할 수 있습니다.
프로젝트 문서에서 Kubernetes에서 Pinot 실행을 참조하세요. Pinot는 또한 대화형 쿼리 엔진인 Trino Presto 및 데이터 시각화 도구인 Apache Superset과의 Kubernetes 통합을 제공합니다.
Pinot의 기능에 대한 전체 설명은 Pinot 설명서를 확인하세요.
Apache Pinot는 Apache 라이센스 버전 2.0을 따릅니다.