작성시작: 2016-10-20, 최종수정: 2016-10-20


Note: 2014년 자료로 작성하였음. 현재 내용이 다를 수도 있으니 추가 확인 필요


Druid로 실시간 분석하기


실시간

  • 여기서 실시간이란 수십초안에 응답 및 실시간 ingestion을 을 의미


Analytics

  • 데이터를 클렌징, 변환, 모델링해서 정보를 찾는 프로세스

Business Intelligence
  • 비즈니스 정보에 초점을 맞춘 애널리틱스

Druid란?
- google dremel에서 영감을 얻음
- 오픈소스 OLAP 엔진
- aggreation을 수십초안에 해결
- 메모리 매핑 데이터 사용

특징
- de-normalized data
- time-based segments
- timeseries/groupby/TopN 처리에 강함
- Hadoop과 잘 동작

메인 컴포넌트

* 인덱싱 서비스
 - 실시간 ingestion
 - hadoop 배치 ingestion
 - 로컬 배치 ingestion
 - 인덱싱 단계에서 aggregation 정의
 - 최종 결과: 데이터 세그먼트를 deep store에 저장. 각 세그먼트는 시간범위를 가지고 있음

* 코디네이터 노드
 - MySQL 메타데이터 읽기 조정. 

* 브로커 노드
 - 질의를 세그먼트를 가진 노드에 전달
 - partial aggregation 결과를 취함

* 히스토리컬 노드
 - deep store에 있는 immutable 인덱스 데이터를 로딩

* 실시간 노드


왜 Druid를 일까?

장점
- Horizontal Scalability - 선형 성능 보장
- 수초안에 응답시간(실시간급)
- 네이티브 타임존 지원
- 통합 버전( 배치 + 실시간 ingestion/질의 지원, 분산 memcached 지원, 멀티티어 복제/로드 지원)
- 활발한 커뮤니티

단점
- SQL/MDX보다 제한적인 질의 (빅쿼리는 ANSI SQL지원)
- 조인이 힘듬
- distinct 카운트 불가
- groupby 질의시 메모리 제한 있음


참고: http://www.slideshare.net/ydn/pushing-thelimitsofrealtimeanalyticswithdruidv3


+ Recent posts