私は偶然に遭遇しました この記事 コントラストを行うと主張しているSamza Stormとは異なりますが、実装の詳細に対処しているようです。
これらの2つの分散型計算エンジンのユースケースはどこが違うのですか?各ツールはどのような仕事に適していますか?
Apache StormとApacheの最大の違いSamzaは、データをストリーミングして処理する方法に起因します。
Apache Stormはトポロジを使用してリアルタイムで計算を行い、マスターノードがコードを実行するワーカーノード間でコードを分散するクラスターにフィードを送ります。トポロジーでは、データはキーと値のペアの不変のセットとしてデータストリームを吐き出す噴出口間で渡されます。
Apache Stormのアーキテクチャは次のとおりです。
Apache Samzaメッセージは一度に1つずつ到着するときにメッセージを処理することによりストリームします。ストリームは、それぞれが一意のIDを持つ順序付けられたシーケンスであるパーティションに分割されます。バッチ処理をサポートし、通常はHadoopのYARNおよびApache Kafka。
Apache Samzaのアーキテクチャは次のとおりです。
各システムが特定の機能を実行する具体的な方法については、以下をご覧ください。
ユースケース
Apache SamzaはLinkedInによって作成されました。
ソフトウェアエンジニアが書いた ポストサイト :
使用されるリソース:
ええと、私はこれらのシステムを数か月間調査してきましたが、それらのユースケースが大きく異なっているとは思いません。代わりにこれらの線に沿ってそれらを比較するのが最善だと思います:
Storm、SparkおよびSamzaの使用例(およびアーキテクチャ)の比較を提供するTony Sicilianiによる記事です。実際の使用例へのApache.orgリンクも以下に提供されています。
https://tsicilian.wordpress.com/2015/02/16/streaming-big-data-storm-spark-and-samza/
SamzaおよびStormの使用例に関して、彼は次のように書いています。
3つのフレームワークはすべて、連続した大量のリアルタイムデータを効率的に処理するのに特に適しています。どちらを使用するのですか?厳しいルールはなく、せいぜいいくつかの一般的なガイドラインです。
Apache Samza
処理する状態が大量にある場合(パーティションごとに数ギガバイトなど)、Samzaは同じマシン上でストレージと処理を同じ場所に配置するため、処理できない状態で効率的に作業できますこのフレームワークは、プラグイン可能なAPIによって柔軟性も提供します。デフォルトの実行、メッセージング、およびストレージエンジンはそれぞれ、選択した代替手段で置き換えることができます。さらに、異なるコードベースを持つ異なるチームからの多数のデータ処理段階がある場合、 Samzaの細粒度ジョブは、リップルの影響を最小限に抑えて追加/削除できるため、特に適しています。
Samzaを使用しているいくつかの企業:LinkedIn、Intuit、Metamarkets、Quantiply、Fortscale…
Samzaユースケースリスト: https://cwiki.Apache.org/confluence/display/SAMZA/Powered+By
Apache Storm
増分計算を可能にする高速イベント処理システムが必要な場合は、Stormで十分です。さらにクライアントが結果を同期的に待機している間にオンデマンドで分散計算を実行する必要がある場合は、すぐに使用できる分散RPC(DRPC)があります。最後に重要なことですが、StormはApache Thriftを使用しているため、トポロジを任意のプログラミング言語で記述できます。ただし、状態の永続化や正確に1回の配信が必要な場合は、マイクロバッチ処理も提供する高レベルのTrident APIを確認する必要があります。
Stormを使用しているいくつかの企業:Twitter、Yahoo!、Spotify、The Weather Channel…
ストームのユースケースリスト: http://storm.Apache.org/documentation/Powered-By.html