Arrow Flight

summary:

Arrow Flight[/ˈærəʊ flaɪt/]とは,高性能かつ効率的な分散データ転送のためのRPC[Remote Procedure Call]プロトコルである.主に列指向データフォーマットであるApache Arrowのデータを,ネットワーク上で高速かつ低レイテンシにやり取りすることを目的として設計されている.FlightArrowのメモリ表現を直接活用し,ゼロコピーでのデータ送受信を実現するため,従来の行指向やJSON/XMLなどのシリアライズ方式に比べて大幅な高速化と省リソース化を可能にする.これはビッグデータ処理や分散分析,クラウドベースのデータサービス間通信において重要な役割を果たす.

Arrow FlightはgRPCをベースに構築されており,これはGoogle開発のHTTP/2を利用した高性能なRPCフレームワークである.Flightは,Arrowの列指向メモリバッファ[RecordBatch]をそのまま送受信できるため,データのエンコードやデコードにかかるCPUコストを最小限に抑えている.加えて,複数のレコードバッチをストリーミング形式で転送可能であり,これにより大容量データの分割転送や並列処理も容易に実現できる.また,Flightは標準的な認証機構や暗号化だけでなく,カスタム認証メカニズムの実装も可能としており,企業利用に耐えるセキュリティ要件にも対応している.

Flightのアーキテクチャは,主にFlightServerFlightClientから構成されている.サーバーはデータソースへのアクセスを提供し,クライアントはそれに接続してデータを要求する.このときFlightInfo,FlightDescriptor,FlightDataなどの概念を用いて,データの場所や種類,実際のペイロードを管理する.特に重要なのは,データ転送時にメモリ上のArrowバッファをそのまま送受信できる点であり,これにより従来のプロトコルと比較して10倍以上の性能向上が報告されている事例もある.

歴史的には,Apache Arrowプロジェクトが2016年に開始された後,分散環境でArrowデータを効率的に転送するニーズの高まりを受けて,2018年頃からFlightの仕様策定と実装が進められた.これにより,従来のJDBCやODBC,REST APIを用いたデータ転送が抱えるボトルネック,特に大量データ転送時のCPU負荷やレイテンシ問題を克服できる基盤が提供された.近年では,Flight SQLという拡張プロトコルも策定され,SQLクエリの送受信をArrow Flight上で効率的に行う仕組みが整備されつつある.これにより,データベースや分析エンジン間の高速連携が促進されている.

現在,Arrow Flightは多数のプログラミング言語[Java,C++,Python,Rustなど]で実装が提供されており,異なる言語間でのデータ交換も容易に行える.また,Dremio,InfluxDB,DataFusion,Substrait,DuckDBなどの多くのデータ処理システムやデータベースでも採用が進んでおり,次世代のデータ転送プロトコルとしての地位を確立しつつある.

Mathematics is the language with which God has written the universe.





















DataHub POSIXモデル Netmap TDM パス制御 アドドロップマルチプレクサ