ストリーミングデータとHadoop? (Hadoopストリーミングではありません)

StackOverflow https://stackoverflow.com/questions/1217850

  •  10-07-2019
  •  | 
  •  

質問

MapReduceアプローチを使用して(HTTP経由でアクセスされる)連続したデータストリームを分析したいので、Apache Hadoopを検討しています。残念ながら、Hadoopは、新しいデータが到着したときに消費者に渡すことができるのではなく、固定サイズの入力ファイルでジョブを開始することを期待しているようです。これは実際にそうなのでしょうか、それとも何か不足していますか?開いているソケットから読み込まれているデータを処理する別のMapReduceツールはありますか?ここではスケーラビリティが問題なので、乱雑な並列化処理をMapReducerに任せたいと思います。

カスケードをいじってみて、 HTTP経由でアクセスされる静的ファイルですが、これは実際に私の問題を解決しません。 curlを中間ステップとして使用して、Hadoopファイルシステムのどこかにデータをダンプし、新しいデータのチャンクが準備されるたびに新しいジョブを起動するウォッチドッグを作成できますが、これは汚いハックです。これを行うには、もっとエレガントな方法が必要です。何か案は?

役に立ちましたか?

解決

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

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

Hbaseは、HadoopエコシステムのBigTableクローンです。これは、挿入の連続ストリームを可能にするため、あなたにとって興味深いかもしれません。ただし、バッチモードで分析クエリを実行する必要があります。

他のヒント

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

更新

新製品の登場: Storm -分散されたフォールトトレラントなリアルタイム計算:ストリーム処理、継続的計算、分散RPCなど

Yahoo S4 http://s4.io/

map reduceなどのリアルタイムストリームコンピューティングを提供します

Twitterの Storm が必要です。試してみてください。

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

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

もしそうなら、ウェブページの取得がmap-reduceに適切にマッピングされない理由。また、をチェックアウトすることもできます。 BixoのFetcherBuffer クラス。このタイプの問題を解決するために(カスケードを介して)レデューサーでスレッド化アプローチを実装します。

ストリームマイニングでの使用に関するHadoopの主な問題は、最初にHFDS(ディスク)を使用するという事実であるため、ディスク操作によりストリーム内のデータが失われるレイテンシーが発生します。第二に、パイプラインが並列ではないということです。 Map-reduceは通常、ストリームデータのようにインスタンスではなく、データのバッチで動作します。

最近、HDFSをバイパスしてオブジェクトデータベースでメモリ内の計算を実行することにより、明らかに最初の問題に取り組むM3に関する記事を読みました。 2番目の問題では、バッチで実行されなくなったインクリメンタル学習器を使用しています。チェックアウトする価値がある M3 :ストリーム処理 メインメモリMapReduce 。このM3のソースコードまたはAPIはどこにも見つかりませんでした。誰かが見つけた場合は、こちらのリンクを共有してください。

また、Hadoop Onlineは、M3と同じ問題を解決しようとする別のプロトタイプです。 Hadoop Online

ただし、 Apache Storm はこの問題の重要な解決策ですが、それだけでは不十分です。 map-reduceの適切な権利が必要です。実際に優れたアルゴリズムを備えた SAMOA というライブラリが必要な理由はここにありますmahoutに欠けているオンライン学習用。

いくつかの成熟したストリーム処理フレームワークと製品が市場で入手可能です。オープンソースフレームワークは、例えばApache StormまたはApache Spark(どちらもHadoop上で実行できます)。 IBM InfoSphere StreamsやTIBCO StreamBaseなどの製品も使用できます。

このInfoQの記事をご覧ください。ストリーム処理とこれらすべてのフレームワークと製品について詳しく説明しています。 Hadoopと組み合わせたリアルタイムストリーム処理/ストリーミング分析。この記事の他に、これがHadoopを補完する方法についても説明しています。

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

Apache Spark Streamingを試してください。 目的に合っているはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top