2016-03-22 9 views
0

flumeとS3を使用してイベントを保存しています。 HDFSシンクが次のファイルに転がったり、水路が正常にシャットダウンしたりするたびに、イベントはS3に転送されるだけです。HDFSでS3にflumeイベントをシンクしてください。

これは、私の考えでは、データ損失の可能性があります。水路のドキュメントは書き込み:

...水路はここに

...イベントの信頼性の高い 配信を保証するために私の設定トランザクションのアプローチを採用しています:

agent.sinks.defaultSink.type = HDFSEventSink 
agent.sinks.defaultSink.hdfs.fileType = DataStream 
agent.sinks.defaultSink.channel = fileChannel 
agent.sinks.defaultSink.serializer = avro_event 
agent.sinks.defaultSink.serializer.compressionCodec = snappy 
agent.sinks.defaultSink.hdfs.path = s3n://testS3Bucket/%Y/%m/%d 
agent.sinks.defaultSink.hdfs.filePrefix = events 
agent.sinks.defaultSink.hdfs.rollInterval = 3600 
agent.sinks.defaultSink.hdfs.rollCount = 0 
agent.sinks.defaultSink.hdfs.rollSize = 262144000 
agent.sinks.defaultSink.hdfs.batchSize = 10000 
agent.sinks.defaultSink.hdfs.useLocalTimeStamp = true 

#### CHANNELS #### 

agent.channels.fileChannel.type = file 
agent.channels.fileChannel.capacity = 1000000 
agent.channels.fileChannel.transactionCapacity = 10000 

私は仮定を私はちょうど何か間違っています、どんなアイデアですか?

+0

最終的にhdfsに転送されなかったイベントのために、チャネルがトランザクションを終了していないようです。私は現在、この方向で研究しています。 – TheRueger

答えて

0

調査の結果、私はflumeとHDFS SinkでS3を使用する際の主な問題の1つを発見しました。

プレーンHDFSとS3実装の主な違いの1つは、S3がリネームを直接サポートしていないことです。 S3でファイルの名前が変更されると、ファイルがコピーされて新しい名前に変更され、古いファイルが削除されます。 (How to rename files and folder in Amazon S3?

Flumeは、ファイルが一杯でないときに、デフォルトで.tmpでファイルを拡張します。ローテーションの後、ファイル名は最終的なファイル名に変更されます。私は削除/ローカルと同期のすべてのファイルを保存し、より安全な方法を好むHDFSとS3はない、100%信頼できる継ぎ目をシンクするので https://issues.apache.org/jira/browse/FLUME-2445

:HDFSでは、これは問題ないでしょうが、S3で、この問題、この問題に応じを引き起こす可能性がありますawsツールを使用して完成したファイルs3 sync(http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

さらに、ファイルが同期されていないか、ローカルディスクがいっぱいですが、どちらの問題も監視システムで簡単に解決できます。

関連する問題