본문 바로가기

빅데이터

아파치 피노(apache pinot) 소개

https://engineering.linkedin.com/analytics/real-time-analytics-massive-scale-pinot

 

Real-time Analytics at Massive Scale with Pinot

Two years ago we hit a wall. The scale of LinkedIn’s data was growing beyond what we could analyze. At the same time, our members needed their analytics and insights in real-time. We needed a solid solution that would grow with LinkedIn and serve as the

engineering.linkedin.com

 

2014년 링크드인에서는 상기와 같은 글을 올렸습니다. Pinot이라는 소프트웨어를 자체적으로 개발하였다는 내요입니다. 내부적으로 데이터를 빠르게 분석하고 조회하기 위해서는 다양한 소프트웨어가 오픈소스로 나와 있지만 대체로 링크드인의 수준을 만족시키기가 어려웠습니다. 결과적으로 링크드인에서는 분산 실시간 분석 애플리케이션을 만들었고 이것이 바로 아파치 피놋 입니다.

 

Apache Pinot

https://pinot.apache.org/

 

Apache Pinot™: Realtime distributed OLAP datastore | Apache Pinot™

Pluggable indexing Pluggable indexing technologies - Sorted Index, Bitmap Index, Inverted Index, StarTree Index, Bloom Filter, Range Index, Text Search Index(Lucence/FST), Json Index, Geospatial Index

pinot.apache.org

실시간 분산 OLAP 데이터 저장소, OLAP 쿼리를 낮은 레이턴시로 제공하는 소프트웨어, 0.10.0 버전 릴리즈(2022년 4월 기준)

OLAP란? : 온라인 분석 처리(Online Analytical Processing)의 약자. 동일한 데이터를 다양한 방식으로 바라보면서 다차원 데이터 분석을 제공하는 소프트웨어 저장소. 기존 트랜잭션 기반으로 데이터를 수집하고 처리, 분석하던 것과 대비하여 데이터가 실시간으로 저장됨에 따라 선 계산값을 미리 산출하여 저장하는 방식이 OLAP 방식.

아파치 피노의 가능은 다음과 같습니다.

- 엄청나게 빠른 쿼리 : 피노는 OLAP 쿼리를 제공하며 immutable, mutable 데이터에 대해 낮은 지연으로 쿼리 응답을 제공합니다.

- 인덱싱 추가기능 : 다양한 인덱싱 기능을 제공합니다. Json Index, Text Search Index, Range Index 등

- 준 실시간 입수 : 아파치 카프카, 펄사, 키네시스 기반 데이터 입수를 지원하며 JSON, Avro, ProtoBuf 등 포멧을 지원

- 수평 확장 : 강력한 수평확장 기능으로 유연하게 운영가능하며 내결함성을 가짐

- Trino, PrestoDB를 이용하여 데이터 Join 기능 제공

- SQL과 유사한 쿼리 인터페이스 제공. selection, aggregation, filtering, group by, order by 등

- 하이브리드 테이블 : 오프라인, 실시간 테이블 에 대해 일관성을 제공함.

- ThirdEye를 사용하여 이상 징후 탐지 및 알람 가능

 

관련 영상

빠른 속도의 사용자 얼굴 분석을 위해 아파치 피노를 사용한 사례

https://www.youtube.com/watch?v=JV0WxBwJqKE 

https://www.youtube.com/watch?v=L5b_OJVOJKo 

피노클러스터 운영 방법

https://www.youtube.com/watch?v=cNnwMF0pOJ8 

 

설치 방법

Install JDK11 or higher (JDK16 is not yet supported)
For JDK 8 support use Pinot 0.7.1 or compile from the source code.

바이너리를 사용하여 설치 및 실행 방법 https://docs.pinot.apache.org/basics/getting-started/running-pinot-locally

$ VERSION=0.10.0
$ wget https://downloads.apache.org/pinot/apache-pinot-$VERSION/apache-pinot-$VERSION-bin.tar.gz
$ tar vxf apache-pinot-*-bin.tar.gz
$ cd apache-pinot-*-bin
$ bin/quick-start-batch.sh

도커 컨테이너를 사용하여 설치 및 실행 방법 https://docs.pinot.apache.org/basics/getting-started/running-pinot-in-docker

$ docker run \
    -p 9000:9000 \
    apachepinot/pinot:0.9.3 QuickStart \
    -type batch

아키텍처

https://docs.pinot.apache.org/basics/concepts

아파치 피노는 다음과 같이 분산 시스템 컴포넌트로 이루어져 있습니다. 

- 컨트롤러

- 서버

- 브로커

- 미니언(옵션)

 

피노의 강력한 장점 중 하나는 수평 확장이 가능하다는 점이고 무한정의 개수의 노드를 추가할 수 있습니다. 이런 노드들에 대한 관리는 zookeeper와 Helix를 통해 이루어 집니다.

 

반응형