2009-08-02 12 views
11

MapReduceアプローチを使用して、(HTTP経由で)連続したデータストリームを分析したいので、Apache Hadoopについて調べてきました。残念ながら、Hadoopは到着時に新しいデータを消費者に渡すのではなく、固定サイズの入力ファイルで仕事を開始することを期待しています。これは事実ですか、何か不足していますか?開いているソケットから読み込まれているデータで動作する別のMapReduceツールがありますか?スケーラビリティはここで問題になるので、私はMapReducerに面倒な並列化の問題を処理させたいと思っています。ストリーミングデータとHadoop? (Hadoop Streamingではない)

私はCascadingで遊んだことがあり、HTTP経由でアクセスされる静的ファイルでジョブを実行することができましたが、これは実際に私の問題を解決するものではありません。私は中間ステップとしてカールを使用して、データをHadoopファイルシステムのどこかにダンプし、新しい仕事が始まるたびに新しい仕事を開始するためのウォッチドッグを書きますが、それは汚いハックです。これを行うにはもっとエレガントな方法が必要です。何か案は?

答えて

10

あなたが説明するハックは、物事を行うための標準的な方法です.Hadoopは基本的にバッチ指向のシステムです(データの終わりがなければ、Reducersはマップフェーズが完了した後に開始する必要があります)。

ログをローテーションします。それらを回転させると、それらをHDFSにダンプします。ウォッチドッグプロセス(恐らくZooKeeperを使用して調整された分散型プロセス)がダンピングの根拠を監視し、新しい処理ジョブを開始します。オーバーヘッドを保証するのに十分な大きさの入力でジョブを実行する必要があります。

Hbaseは、ハープ・エコシステム内のBigTableクローンで、面白いかもしれません。挿入が連続してできるためです。ただし、依然としてバッチモードで分析クエリを実行する必要があります。

2

私はEsper CEP(http://esper.codehaus.org/)を見てください。

+0

私はこの分野に精通していませんが、初めにActiveInsight(CPALライセンス - 帰属が必要)も好きでした。 –

0

あなたのユースケースは、HTTP経由でリモートページを取得するために開かれたソケットから戻る(ゆっくりと)Hadoopを使用してWebクローラを作成する問題と似ています。

もしそうなら、Why fetching web pages doesn't map well to map-reduceを参照してください。また、BixoのFetcherBufferクラスをチェックアウトすることもできます.Bixoでは、このタイプの問題を解決するために減速機(カスケーディング経由)にスレッドアプローチを実装しています。

6

http://s4.io/についてストリーミングデータを処理するために作られています。

更新

新製品が上昇している:Storm - 分散とフォールトトレラントのリアルタイム計算:ストリーム処理、連続計算、分散RPC、およびより

+1

私はこれがS4の正しいURLだと思う:http://incubator.apache.org/s4/ – Bklyn

1

ヤフーS4 http://s4.io/

それは本当の提供マップのようなリアルタイムのストリームコンピューティング

1

TwitterのStormあなたが必要なものは、あなたが試してみることができます!

0

ストリームマイニングで使用するHadoopの主な問題は、最初にディスクであるHFDSを使用し、ディスク操作によってレイテンシが発生し、データがストリームに失われることです。第二に、パイプラインは並列ではないということです。 Map-reduceは、通常、ストリームデータの場合と同じように、データのバッチで動作し、インスタンスでは動作しません。

私は最近、明らかにHDFSをバイパスしてオブジェクトデータベースのメモリ内計算を実行することで最初の問題に取り組むM3についての記事を読んだ。 2番目の問題では、もはやバッチで実行されない増分学習者を使用しています。チェックする価値があるM3 : Stream Processing on Main-Memory MapReduce。このM3のソースコードやAPIをどこにも見つけられませんでした。

また、HadoopのオンラインもM3が行うのと同じ問題を解決しようとします別のプロトタイプです:Hadoop Online

はしかし、Apache Stormは、しかし、それは十分ではありません、問題のキーソリューションです。あなたはmap-reduce権利のいくつかのeuqivalentを必要とします、ここにあなたが実際にオンライン学習のために素晴らしいアルゴリズムを持っているSAMOAと呼ばれるライブラリが必要なのはなぜですか。

1

複数のオプションがあります。 解決策として、KafkaとStorm +(HadoopまたはNoSql)の組み合わせをお勧めします。 これらのオープンソースツールを使用してビッグデータプラットフォームを構築しており、非常にうまく機能しています。

0

いくつかの成熟ストリーム処理フレームワークおよび製品が市販されています。オープンソースのフレームワークは、 Apache StormまたはApache Spark(どちらもHadoop上で実行できます)。また、IBM InfoSphere StreamsやTIBCO StreamBaseなどの製品を使用することもできます。

このInfoQの記事では、ストリーム処理とこれらすべてのフレームワークと製品について詳しく説明しています:Real Time Stream Processing/Streaming Analytics in Combination with Hadoop。この記事では、これがHadoopを補完する方法についても説明しています。

ところで、OracleやTIBCOなどの多くのソフトウェアベンダーは、バッチ処理ではなくリアルタイムで処理する必要があるため、このストリーム処理/ストリーミング分析手法を「ビッグデータ」ではなく「高速データ」と呼びます。

+0

ちょっとした情報を追加するだけです。製品] [1]。 要約すると、**これらのツールを使用して、動いている間にデータを処理することができます**。それにもかかわらず、あなたはまだどこかにそれらを保管することができます。したがって、これらのフレームワークと製品は、Apache Hadoopと組み合わせることもできます(ストレージ用またはHadoop上のフレームワークの1つを実行することによって処理するため)。スライドでもこれについて詳しく説明します。 [1]:http://www.kai-waehner.de/blog/2015/10/25/comparison-of-stream-processing-frameworks-and-products/ –

0

Apache Spark Streamingを試す必要があります。 あなたの目的のためにうまくいくはずです。

関連する問題