2016-09-01 10 views
0

プロデューサからプロデューサへのランダムメッセージをコマンドラインで公開する基本的な例を試してみました。 ローカルマシンに存在するすべての1GBのデータを公開します。そのために、私はその1GBのデータをプロデューサーにロードするのに苦労しています。ローカルマシンから直接1GBのファイルをKafkaプロデューサにロード

お願いします。

+0

何が問題ですか? – serejja

+0

は、カフカの場所から多くのファイル(そのフォルダは1GBになります)を読み込みます。 –

答えて

0

あなたは、単にカフカのトピックに簡単にリダイレクトしてファイルをダンプすることができます。 1.xmlが1GBファイルであると仮定すると、以下のコマンドを使用することができます。

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test123 < ./1.xml 
  1. しかし、あなたはプロデューサーのXMLで次のプロパティを設定していることを確認してください。 socket.request.max.bytes,socket.receive.buffer.bytes,socket.send.buffer.bytes
  2. あなたのメッセージサイズが大きい場合は、test123トピックのためにmax.message.bytesを設定する必要があります。
  3. メモリ不足の問題を避けるため、Xmxパラメータもconsole-producer.shに変更してください。

これらは、カフカのデータをロードするための一般的な手順です。 エラーが発生した場合は、さらに理解できます。

だからアプローチのカップルが助けることができる: 1)あなたは、このようなユースケースのために構築されている水路のようなビッグデータ・プラットフォームを使用することができます。 2)あなたはあなた自身のコードを実装したい場合は、新しいファイルをフォルダ(Capture events happening inside a directory)で、あなたは、あなたがデータを公開するコードを呼び出すことができたら到着したときにイベントをキャプチャして、あなたを助けるたApacheのコモンズのLibを使用することができますカフカで 3)私たちのプロジェクトでは、Logstash APIを使ってフォルダからフェッチし、ファイルからkafkaにデータを公開し、Stormで処理します。

+0

あなたのコマンドは、データをプロデューサからブローカにプッシュすることです。これは私がすでに知っている。私の作ったプロデューサーは、場所からリアルタイムで大きなビッグファイルを読み込みます。ある場所にある新しいファイルはすべてプロデューサーによって読み込まれ、自動的にブローカーに送られます。 –

+0

私はエラーに直面していません。私は始動だけに問題があります。私はプロデューサに場所からリアルタイムですべてのファイルを読むように指示する方法を意味します –

+0

したがって、いくつかのアプローチが役立ちます:1)そのようなユースケース用に構築されたFlumeのような大きなデータプラットフォームを使用できます。 2)独自のコードを実装したい場合は、新しいファイルがフォルダに到着したときにイベントをキャプチャするのに役立つApache commons Libを使用することができます(http://stackoverflow.com/questions/19678170/capture-events-happening-ディレクトリ内にあります)、一度それがあれば、カフカのデータを公開するコードを呼び出すことができます。 3)私たちのプロジェクトでは、Logstash APIを使ってフォルダからフェッチし、ファイルからkafkaにデータを公開し、Stormで処理します。 – Amar