Development(32)
-
Apache Druid Ingestion
Streaming 방식은 Kafka, Kinesis, Tranquility를 지원하며, Batch 방식은 Native-batch(parallel 가능)와 Hadoop을 지원한다. Data Model은 Primary Timestamp, Dimensions, Metrics로 구성되며, Rollup 시 Primary Timestamp로 구분된 Partition 내의 Dimensions 별 Metrics를 Rollup 시킨다. Rollup은 Dimension 수와 각 Dimension의 Cardinality가 적을 수록 데이터 크기가 획기적으로 줄어들지만 반대로 Rollup된 데이터에 대해 개별적인 Query가 불가능해진다. 여기서 Dimension의 경우 Type에 따라 Rollup 시 성능 차이가 발생하는데..
2019.12.31 -
Apache Druid Segment
Segment는 위 그림과 같이 Druid에서 시간에 따라 파티셔닝된 데이터 단위이며, 데이터 구조는 아래와 같이 Timestamp/Dimensions/Metrics로 구성된다. Segment 생성 시 시간 단위는 granularitySpec/partitionSpec 설정에 따라 결정되며, Reference에 따르면 300 MB ~ 700 MB / 5 million Rows가 추천하는 초기 설정값이라고 한다. 이 외에도 Segment는 shardSpec에 따라 샤딩될 수 있는데 전체 샤드를 포함하여 block이라 하며, Linear shard spec을 제외하면 전체 샤드가 생성되어야 Query 시 처리될 수 있다. Segment는 ID로써 DataSource_Interval_Version_Partiti..
2019.12.29 -
Apache Druid Architecture
Druid는 Coordinator, Overlord, Broker, Router, Historical, MiddleManager로 프로세스가 구성되며, Master, Query, Data로 서버가 구성된다. Master: Manages Data Availability and Ingestion Coordinator: manage data availability Overlord: control the assignment of data ingestion workloads Query: Handles Queries from External Clients Broker: handle queries from external clients Router(Optional): route requests to Brokers, ..
2019.12.29 -
Apache Druid 개요
Apache Druid는 아파치 인큐베이팅 프로젝트 중 하나로 홈페이지 내 설명에 따르면 대용량 데이터셋에 대한 신속한 분석이 가능한 데이터베이스라고 한다. A real-time analytics database designed for fast slice-and-dice analytics ("OLAP" queries) on large data sets - Clickstream analytics (web and mobile analytics) - Network telemetry analytics (network performance monitoring) - Server metrics storage - Supply chain analytics (manufacturing metrics) - Applicatio..
2019.12.29 -
간단하게 Spark ML Model 로딩하기 (Decision Tree)
Spark ML을 사용하여 간단하게 ML을 비즈니스 로직에서 활용하고 싶을 때가 있다. 그리고 그 비즈니스 로직에서 ML을 여러 개 사용하고 싶을 때도 물론 있다. 하지만 문제는 이때부터 발생한다. Spark ML에는 다양한 ML 기능이 RDD 혹은 DataFrame을 이용할 수 있도록 구현되어 있는데, 이 모델을 저장하고 로딩할 때 기본 라이브러리를 이용하면 각 모델마다 지연시간이 발생한다. load 함수를 호출할 때마다 Spark Task로써 SVMModel, DecisionTreeModel, GradientBoostedTreesModel 등의 모델 로딩이 수행된다. 하지만 이 로딩 과정이라는게 위 언급한 모델에서는 별 것 없다. 결과는 단순히 의사 결정 나무일 뿐이고, GBT 같은 경우는 이 트리가..
2019.08.11 -
Spark Streaming vs Structured Streaming 비교 체험(?)
현재 개발/운영 중인 플랫폼에서는 Spark Streaming을 중심으로 데이터 처리를 진행하고 있다. Spark Streaming은 Micro-batch 방식으로 데이터를 처리하는 RDD 기반 프레임워크인데... 문제는 Catalyst Optimizer와 거리가 먼 RDD 기반이라는 점이다(?) 이에 따라 Spark 2.0 이후 Structured Streaming이 추가었으며, 이제는 Continuous Processing을 제외학곤 [Experimental] 딱지를 지웠다. Structured Streaming is a scalable and fault-tolerant stream processing engine built on the Spark SQL engine. You can express y..
2019.05.12