# OTel-Arrow
## 定義
OTel-Arrow は [[OpenTelemetry]] の SIG(Special Interest Group)として開発されているサブプロジェクトで、[[Apache Arrow]] のカラム型インメモリフォーマットをテレメトリデータ(トレース・メトリクス・ログ)の転送・処理に応用する。Phase 1 では [[OTAP]](OpenTelemetry Arrow Protocol)ワイヤプロトコルを定義し、Phase 2 では Arrow をパイプライン全体の内部表現として採用した Dataflow Engine(Rust 実装)を構築する。(Source: [[@2026__OTelBlog__OTel-Arrow-Phase-2]])
### Phase 1 と Phase 2
| Phase | 内容 | 到達点 |
|---|---|---|
| Phase 1 | [[OTAP]] をワイヤプロトコルとして定義 | 効率的なトランスポート |
| Phase 2 | Arrow をパイプライン全体の内部表現として採用 | Dataflow Engine(インキュベーション段階) |
### Dataflow Engine の設計原則
- **NUMA-フレンドリー・スレッドパーコア・シェアードナッシング**アーキテクチャ
- 有界チャンネル(bounded channel)による明示的なバックプレッシャー
- 同期処理のホットパス回避
- 飽和時にメモリ使用量を有界に保つ(既存 Collector OTLP パスとの主な差別化点)
### コストモデルの変化
行指向の OTLP ベースパスでは、テレメトリデータはヒープ割り当てされたオブジェクトグラフとして実体化され、ガベージコレクションが必要となる。OTel-Arrow では Arrow のカラム型表現をパイプライン全体で維持することで、「デコード・オブジェクトウォーク・アロケーション・エンコード」にかかるシリアライゼーションオーバーヘッドを大幅に削減できる。(Source: [[@2026__OTelBlog__OTel-Arrow-Phase-2]])
### ベンチマーク結果(抜粋)
- 単一コア: OTAP 2.47M logs/sec 対 OTLP 121K logs/sec(**20× スループット**)
- 16コア OTLP: 14.6× のスピードアップ(理想値 16× に対してほぼ線形)
- 変換処理(200K logs/sec): OTAP は CPU 6.4〜6.6%、Collector OTLP は 92.5%
(Source: [[@2026__OTelBlog__OTel-Arrow-Phase-2]])
## 横断的知見
- 現時点では単一ソース([[@2026__OTelBlog__OTel-Arrow-Phase-2]])のみ。複数ソースとの突き合わせによる横断知見は今後蓄積する。
- バッチサイズが大きいほど OTAP の CPU 効率が向上する(256 → 4096 で CPU 21% → 7.8%)。これはカラム型フォーマットの圧縮特性と一致しており、[[Apache-Arrow]] のバッチ処理設計原則と整合する。
## 未解決の問い
- Phase 2 の Dataflow Engine はいつ本番安定版になるか?設定フォーマット・API のロードマップはどこに記載されているか?
- OTAP を採用するにあたり、既存の OpenTelemetry Collector 設定からの移行コストはどの程度か?
- 他のテレメトリ処理フレームワーク(例: OpenTelemetry Collector、Apache Flink 等)と比較した場合のトレードオフは?
- ログ以外のシグナル(トレース・メトリクス)でも同様のスループット向上が見込めるか?
## 関連
- プロトコル: [[OTAP]]
- エンティティ: [[OpenTelemetry]] / [[Apache-Arrow]]
- 概念: [[テレメトリ]] / [[オブザーバビリティ]]
- ソース: [[@2026__OTelBlog__OTel-Arrow-Phase-2]]
## 出典
- [[@2026__OTelBlog__OTel-Arrow-Phase-2]]