본문 바로가기
BigData 기술/Apache Pinot

Apache Pinot (아파치 피노) 간단한 소개. 실시간 OLAP

by 잇서니 2023. 4. 28.
반응형

 
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

 
 

Pinot Storage Model

피노는 실시간 분산 OLAP 저장소이며, 대규모 데이터를 빠르게 쿼리할 수 있도록 설계되었다. (피노는 링크드인에서 시작한 프로젝트라고 한다.)
대량의 데이터를 저장할 수 있고, 그 데이터는 세그먼트(segment) 라는 아이로 쪼개져 저장되는 형태다. (일단 분산시스템은 쪼개고 본다)
테이블은 하나 이상의 세그먼트로 이루어지고, SQL이나 혹은 PQL을 사용하여 테이블을 쿼리할 수 있다.

하나의 피노 클러스터에서는 테넌트(Tenant)를 만들어 논리적인 네임스페이스를 만들 수 있다. 간단하게 얘기하면 A테이블은 A테넌트에, B테이블은 B테넌트에 할당하여 테이블을 격리하여 사용할 수 있다. 
 

 
 

Pinot Components

피노는 크게
1) 컨트롤러(Controller)
2) 브로커(Broker)
3) 서버(Server)
로 이루어져 있다.
 
위 그림에서 Minion 은 필수적인 컴포넌트는 아니다. 그리고 피노 클러스터를 구성할 때 zookeeper를 같이 사용한다. 피노도 분산시스템이기 때문에 zookeeper를 사용하여 인스턴스 상태, 세그먼트 정보 등을 관리한다.
 

1) 컨트롤러(Controller)

컨트롤러는 마스터 역할을 한다고 생각하면 된다. 
주키퍼에 저장된 피노 클러스터의 메타데이터(스키마, 테이블 정보 등)를 관리한다.
피노 테이블에 데이터를 넣으려면 세그먼트를 저장소에 업로드해야 하는데 그 작업에도 컨트롤러가 필요하다.
피노 어드민 웹도 컨트롤러에서 제공한다. 컴포넌트들의 상태, 테이블정보, 간단한 쿼리 에디터, 주키퍼 정보 등을 관리할 수 있는 웹이당.
 

2) 브로커(Broker)

브로커는 말 그대로 중간역할을 하는데, 클라이언트와 피노를 연결해주는 역할이다. 
즉, 클라이언트로부터 쿼리를 받아 서버한테 요청을 보내고, 최종 결과를 클라이언트한테 전달해준다.
 

3) 서버(Server)

서버는 세그먼트(Segment)를 저장하고, 쿼리작업을 실행하는 실질적인 일꾼이다.
당연히 여러대의 서버로 스케일 아웃이 가능하다.
피노에는 테이블 종류가 오프라인과 실시간 테이블이 있다.
그래서 서버도 오프라인 테이블의 세그먼트를 저장하고 쿼리하는 오프라인 서버,
실시간 테이블의 세그먼트를 저장하고 쿼리하는 실시간 서버가 있다.
물리적으로 나눠지는 건 아니다. 하나의 서버는 오프라인 서버 역할도 할 수 있고 실시간 서버 역할도 할 수 있다.
 
 
 

반응형

댓글