Open2

Apache Druidってなんやねん

harrythecodeharrythecode

事の始まり

昔々あるところに大量のネットワークデータをRealtime解析(現状を把握したい)やHistorical分析(過去のトレンドを見たい)を行いたいネットワーク・エン爺・ニアさんが居ました。

お爺さんは上司から次の問題を解決するように、と言われ常日頃から悩んでおりました。

データの保存・計算問題

  • スケール: 数百万イベント/秒のような多量データ
  • 複雑さ: データを細かい粒度で見る為のキーワード化 (e.g., src, dst IP/port/protocol/etc)
  • 構造: データ構造がネットワーク機器によって様々

データへのアクセス問題

  • 便利なUI: 自由に検索やレポート生成可能
  • 容易な解決: 問題特定が容易なドリルダウン形式
  • 複数アクセス: UIへの複数ユーザアクセスが容易

困ったお爺さんは、データ解析において巷で良く使われる以下3つの技術スタックについて調べました。

  • ログ検索システム (Elasticsearch, Splunk)
  • 分析クエリエンジン (Presto, Vertica)
  • 時系列データベース: TSDB ( Influxdb, Prometheus, OpenTSDB)
harrythecodeharrythecode

ログ検索システム (Elasticsearch, Splunk)

利点

  • リアルタイムでデータの投入可能
  • 自由なデータフォーマット
  • 検索やフィルターが高速

欠点

  • パフォーマンス悪すぎ (フィルタ次第でメモリめっちゃ食う)
  • 数的集計用に設計されてない (特定の条件を満たすデバイスを数える等)

分析クエリエンジン (Presto, Vertica)

利点

  • 素早い集計
  • スケールアップサポート
  • 複雑な集計もサポート

欠点

  • リアルタイムデータ投入用に設計されてない
  • データフォーマットに自由度がない
  • 検索・フィルターが遅い

時系列データベース: TSDB ( Influxdb, Prometheus, OpenTSDB)

利点

  • 時系列になっているのでそれ関連の集計が簡単

欠点

  • 時系列的でない集計を行うと遅い
  • 検索・フィルターが遅い

調査結果

色々と調べた結果、お爺さんはどれもネットワーク分析には向かないと判断し、困り果てていました。

その時耳にしたのが「Apache Druidって何かいけてるらしいよ」の言葉でした。