Apache Beamは、ETL、バッチおよびストリーム処理を含むデータ処理パイプラインを定義・実行するためのオープンソースの統合プログラミングモデルである。提供されているSDKの1つを使用してBeam Pipelinesと呼ばれるデータ処理パイプラインを定義し、、、Apache Spark、などのBeamがサポートするRunner(分散処理バックエンド)の1つを使用してパイプラインを実行する。

歴史 Apache Beamは、Dataflowモデルの論文の実装の1つである。Dataflowモデルは、Googleでの分散処理の抽象化、特にFlumeJavaとMillwheelに関する過去の成果に基づいて設計されている。

2014年、Googleは、DataflowモデルのオープンSDK実装と、Dataflowをローカル(非分散)およびGoogle Cloud Platformサービス上で実行する環境をリリースした。

2016年、GoogleはコアSDK、ローカルランナーの実装、およびGoogle Cloud Platformのデータサービスにアクセスするための一連のIO(データコネクタ)をApache SoftwareFoundationに寄贈した。他の企業やコミュニティのメンバーは、既存の分散実行プラットフォームのRunnerや、Beam Runnerを既存のデータベース、Key-Valueストア、メッセージシステムと統合するための新しいIOをコントリビュートしている。さらに、Beamモデルに加えて特定のドメインのニーズをサポートするための新しいDSLが提案されている。

Apache Beamパイプライン Apache Beamパイプラインとは、データの収集、加工、出力までのデータ処理ワークフローを定義したものである。

[ Source ] ──> ( PCollection ) ──> [ PTransform ] ──> ( PCollection ) ──> [ Sink ]

Pipeline データ処理の最初から最後までのデータフロー全体をカプセル化したオブジェクトである。データの読み込みから変換、出力まで、どのステップをどの順番で実行するかという「全体の設計図」を保持する。

PCollection パイプライン内を流れるデータセット(データの集まり)のことです。Beam独自のデータ型で、バッチ処理の場合は「固定されたデータサイズ」、ストリーミング処理の場合は「無限に続くデータのストリーム」を表現する。PCollectionは一度作成すると中身を変更できない性質を持っている。

PTransform データに対して行う具体的な加工・計算処理である。

データのフィルタリング(不要なデータの除去) データの整形・結合 集計(合計、平均、カウントなど) これらはすべて PTransform として定義され、入力の PCollection を加工して新しい PCollection を出力する。

Pipeline I/O 外部システムとデータをやり取りするためのコネクタ。

Source: データベース、ファイル(Amazon S3やGoogle Cloud Storage、BigQuery)、メッセージキュー(KafkaやPub/Sub)などからデータを読み込む。 Sink: 処理結果を外部のデータベースやストレージ、BigQueryなどのデータウェアハウスに出力する。

関連項目

出典