web-dev-qa-db-ja.com

Apache Beamとは何ですか?

Apacheの投稿を調べていたところ、Beamという新しい用語が見つかりました。誰でもApache Beamが何であるかを正確に説明できますか?私はグーグルアウトしようとしましたが、明確な答えを得ることができませんでした。

50
Viswa

Apache Beam は、バッチとストリーミングの両方のデータ並列処理パイプラインを定義および実行するためのオープンソースの統合モデルであり、パイプラインを構築するための言語固有のSDKおよび実行するためのランタイム固有のランナーのセットです。それら。

History:Beamの背後にあるモデルは、 MapReduceFlumeJavaを含む、多数の内部Googleデータ処理プロジェクトから進化した 、および Millwheel 。このモデルは元々「 Dataflow Model 」として知られており、最初に Google Cloud Dataflow -として実装されました-を含む GitHub上のJava SDK Google Cloud Platformでそれらを実行するための完全に管理されたサービス。コミュニティの他の人々は、 Spark RunnerFlink Runner 、および Scala SDK などの拡張機能の作成を開始しました。 2016年1月、Googleと多くのパートナーが、Apache Beam(unified Batch + strEAM processing)という名前で、Apache Incubator Proposal としてDataflowプログラミングモデルとSDKの部分を提出しました。 Apache Beam 卒業 2016年12月のインキュベーションから。

ビームモデルを学習するための追加リソース:

62
Frances

Apache Beam (Batch + strEAM)は、バッチデータ処理とストリーミングデータ処理の両方を行うためのモデルとAPIセットです。これは、Apacheインキュベータープロジェクトを介して2016年にGoogle(ClouderaおよびPaypal)によってオープンソース化されました。

Dataflow/Beam&Spark:プログラミングモデルの比較-クラウドデータフロー は、Beam APIと Apache Spark を対比しており、最新の柔軟なAPIとバッチおよびHadoopの世界へのストリーミングおよびそれ以降の最適化手法のセット。

Beamは、out-of-order処理のさまざまな側面を簡単に説明できるモデルを介して、さらにすべてのステップを実行しようとします。 プログラミングモデル比較で説明されているように、バッチ処理とストリーミング処理を組み合わせるときの問題。

特に、比較から引用するために、Dataflowモデルは、よりモジュール化され、堅牢で、保守が容易な方法で、エレガントに、そして対処するように設計されています。

...パイプラインを構築する際に、すべてのデータ処理の実践者が答えなければならない4つの重要な質問:

  • どのような結果が計算されますか?合計、結合、ヒストグラム、機械学習モデル?
  • 結果はどこで計算されますか?各イベントが最初に発生した時間は結果に影響しますか?結果は固定ウィンドウ、セッション、または単一のグローバルウィンドウに集約されますか?
  • 処理時間内に結果が具体化されるのはいつですか?システム内で各イベントが観察される時間は結果に影響しますか?結果はいつ出力されますか?投機的に、データが進化するにつれて?データが遅れて到着し、結果を修正する必要がある場合これらのいくつかの組み合わせ?
  • 結果の改善はどのように関係していますか?追加のデータが到着して結果が変化した場合、それらは独立していて明確に区別されますか?

Beamで説明されているパイプラインは、Spark、Flink、クラウドのGoogleのDataflowオファリング、および「ダイレクト」ローカルマシンオプションを含むその他の「ランタイム」で順番に実行できます。

アーキテクチャではさまざまな言語がサポートされています。 Java SDKは現在入手可能です。DataflowPython SDKはリリース間近であり、その他はScalaなどのために想定されています。

Apache Beamのミラー のソースを参照してください

21
nealmcb