Forest Gump?

Apache Druid(아파치 드루이드)에 대해 알아보자 본문

카테고리 없음

Apache Druid(아파치 드루이드)에 대해 알아보자

code1010 2022. 5. 6. 17:59

이번에 회사 프로젝트 진행중, 효과적인 통계를 위해서 아파치 드루이드를 도입해 보려고 해서 리서치를 해보고

정리를 하려 한다. 

현재 통계 페이지에서 대규모 데이터를 조회하여 쿼리문을 날리면, 많은 시간과 DB에 부하가 가기 떄문에

해결 방안을 모색해보다가 드루이드를 찾게 됐다.  

Apache Druid는 대규모 데이터 세트에 대한 빠른 조각 분석을 위해 설계된 실시간 분석 데이터베이스이다.

자바로 작성되있는 컬럼 지향 오픈 소스, 분산 데이터 스토어라는 특징을 가지고 있다. 하나 재밌는점은, 드루이드란 이름은 우리가 흔히 생각하는 롤플레잉 게임의 변신하는 그 드루이드에서따왔다고 한다. 서로 다른 데이터 문제를 해결 할 수 있도록 변화 할 수 있다는 의미로 채용했다고 한다.

 

 

그럼 왜 드루이드를 쓰는가에 대한 예시가 드루이드 공식 문서(http://static.druid.io/docs/druid.pdf)에 잘 나와있다. 

샘플 데이터로, 위키피디아에서 편집이 일어난 데이터의 일부분인데 ,  

First, there is a timestamp column indicating when the edit was made.

Next, there are a set dimension columns indicating various attributes about the edit such as the page that was edited, the user who made the edit, and the location of the user.

Finally, there are a set of metric columns that contain values (usually numeric) that can be aggregated, such as the number of characters added or removed in an edit. 

라고 나와있다. 

이 위키피디아의  데이터를 뜯어보면 3가지 구성요소가 있다고 한다.

1. TIMESTAMP (각 편집이 발생된 시간 : 단 하나의 타임스탬프만 가질 수 있음 ) ,

2. DIMENSIONS( 편집된 페이지, 편집한 사용자 위치 : String tpye delimiter로 여러개 가질 수 있음 filter/group by ok) 

3. Metrics (편집에서 작성/삭제된 글자수와 같이 집약될 수 있는 값 : 수치 데이터 및 집계 연산 담당) 

 

이러한 일련의 데이터들을 기존의 RDBMS/NO_SQL에서는 신속하게 처리하는게 안되었기 때문에,

드루이드의 목적은 이러한 데이터를 가지고 신속하게 연산/ 집계하는것 이라고 한다. 

즉 계속해서 빠르게 쿼리를 날리고 GROUP BY를 하겠다는 뜻이라고 한다.

 

구조는 아래의 구조를 갖고 있다. 

외부 의존성들( MySql, AWS S3, ZOOKEPER 등) 도 같이 사용하여 만들어져 있는 구조다. 

 

 

 

기초 개념을 봤으면 빠르게 시작해 보자 .

 

https://druid.apache.org/docs/latest/tutorials/index.html

링크에 아주 잘 QUICK START란이 있어서 따라 해볼 수 있다 . 

위 링크의 내용대로 다운 받고 알집을 풀면, 8888 포트에 드루이드 콘솔을 킬 수가 있다. 

이런 화면이 나와서 데이터를 입력 후 테스트 해보면 되는데, 자세한 내용은 2일 뒤에 다시 정리해야지.