Apache Beamの紹介

Apache Beamの紹介

 

この記事は、Apache Beamプロジェクトの包括的な目標と目的について説明するシリーズ第1回です。

今後のブログでは、Apache Beamを使用してデータ処理ジョブを実装する方法について説明していきます。

すでにビッグデータプラットフォームを使用中であれば、そのプラットフォームの継続的な進化が重要です。

現在Apache Hadoop MapReduceジョブを使用してデータを処理している場合、Apache Sparkに移行することで、新しい機能を活用してパフォーマンスを向上できます。

既存のバッチ処理機能に加えて、ストリーミングデータ処理を実装することもお勧めします。

または、簡単な統合パターンを探したり、他のテクノロジーにアップグレードしたりしてもよいでしょう。

たとえば、現在Apache Sparkを使用している場合は、何らかのユースケース向けとして、またはメリットを評価するための概念実証(PoC)の一環として、Apache Flinkを使用することを検討できます。

オンサイトでさまざまなランタイムを使用している場合、異なるテクノロジーの間での切り替えは非常に難しく、またコストがかかる場合があります。

現在ASFでインキュベーションプロジェクトとなっている新しい分散処理ツールのApache Beamは抽象化レイヤーを提供し、これによって開発者はBeamプログラミングモデルを使用してBeamコードに注力できます。※2017年1月現在、トップレベルプロジェクトに昇格しました。

Apache Beamによって実装が使用中のランタイムテクノロジーに依存しなくなるので、テクノロジーをすばやく簡単に切り替えることが可能です。

Apache Beamは、その範囲についても非依存型プログラミングモデルを提供します。つまり、このプログラミングモデルは統一的であり、これによって開発者はバッチとストリーミングの両方のデータ処理を実装できます。

この特長は、Apache Beamという名称の由来でもあります

(BatchのBとstrEAMのEAM)。

Beamプログラミングモデルを使用してデータプロセスを実装するには、Beamが提供するSDKまたはDSLを使用します。

使用するSDKは1つ(Java SDK)だけです。

ただし、Python SDKのリリースが見込まれており、Beamは近い将来にScala SDKと追加のDSL(XMLを使用する宣言的DSL等式)を提供予定です。

Apache Beamの場合、まずBeam SDKを選択してから、Beamパイプラインとしてデータ処理を実装します。

プロセスを展開して実行する実際のランタイムを考慮する必要はありません。

Apache Beamはランナーを提供し、

ランナーがパイプラインをターゲットランタイムに変換します。

Apache Beamは、Apache Spark、Apache Flink、及びGoogle Cloud Dataflowプラットフォーム用のターンキーランナーを提供します。

また、Apache Hadoop MapReduce、Apache Karaf等式の新しいランナーも近い将来に提供予定です。

このように、Apache Beamはビッグデータ環境を進化させるための、次のような独自の機能を提供します。

移植性 - データ処理ジョブはまったく同じであり、使用する実際のランタイムから切り離されています。

オンプレミス、クラウド、またはローカルで、異なるランナー(抽象化)とバックエンドにより同じコードを使用します。

統一的な処理 - Apache Beamはバッチ処理とストリーム処理に同じ統一モデルを提供します。

高度な機能 - Apache Beamプログラミングモデルは高度な機能をサポートし、データ処理に関する最新のパターンを実装します。

たとえば、イベントウィンドウ処理、トリガリング、ウォーターマーキング、データ到着の遅延等式をサポートします。

拡張可能なモデルとSDK - Apache Beamのほとんどの部分は、多様な環境ニーズに合わせて拡張できます。

たとえば、新しいランタイムをサポートしたい場合は、独自のランナーを作成できます。

DSLを作成したい場合も、

提供されているSDK上に作成できます。

また、新しいデータソースをサポートする必要がある場合は、

新しいBeam IO(実装されたカスタムのデータソースとシンク)を作成するだけです。

次回のブログ記事では、Apache Beamプログラミングモデルについて、データパイプライン、PCollection、PTransform、IOを含む詳細を説明します。

Post by Jean-Baptiste Onofre (@jbonofre)

 

ディスカッションに参加

0 Comments

コメントを残す

Your email address will not be published. Required fields are marked *