Open2
Apache Druidってなんやねん
事の始まり
昔々あるところに大量のネットワークデータをRealtime解析(現状を把握したい)やHistorical分析(過去のトレンドを見たい)を行いたいネットワーク・エン爺・ニアさんが居ました。
お爺さんは上司から次の問題を解決するように、と言われ常日頃から悩んでおりました。
データの保存・計算問題
- スケール: 数百万イベント/秒のような多量データ
- 複雑さ: データを細かい粒度で見る為のキーワード化 (e.g., src, dst IP/port/protocol/etc)
- 構造: データ構造がネットワーク機器によって様々
データへのアクセス問題
- 便利なUI: 自由に検索やレポート生成可能
- 容易な解決: 問題特定が容易なドリルダウン形式
- 複数アクセス: UIへの複数ユーザアクセスが容易
困ったお爺さんは、データ解析において巷で良く使われる以下3つの技術スタックについて調べました。
- ログ検索システム (Elasticsearch, Splunk)
- 分析クエリエンジン (Presto, Vertica)
- 時系列データベース: TSDB ( Influxdb, Prometheus, OpenTSDB)
ログ検索システム (Elasticsearch, Splunk)
利点
- リアルタイムでデータの投入可能
- 自由なデータフォーマット
- 検索やフィルターが高速
欠点
- パフォーマンス悪すぎ (フィルタ次第でメモリめっちゃ食う)
- 数的集計用に設計されてない (特定の条件を満たすデバイスを数える等)
分析クエリエンジン (Presto, Vertica)
利点
- 素早い集計
- スケールアップサポート
- 複雑な集計もサポート
欠点
- リアルタイムデータ投入用に設計されてない
- データフォーマットに自由度がない
- 検索・フィルターが遅い
時系列データベース: TSDB ( Influxdb, Prometheus, OpenTSDB)
利点
- 時系列になっているのでそれ関連の集計が簡単
欠点
- 時系列的でない集計を行うと遅い
- 検索・フィルターが遅い
調査結果
色々と調べた結果、お爺さんはどれもネットワーク分析には向かないと判断し、困り果てていました。
その時耳にしたのが「Apache Druidって何かいけてるらしいよ」の言葉でした。