1

flumeからに700 MB のログ ファイルを転送しようとしていますHDFSflumeエージェントを次のように構成しました。

...
tier1.channels.memory-channel.type = memory
...
tier1.sinks.hdfs-sink.channel = memory-channel
tier1.sinks.hdfs-sink.type = hdfs
tier1.sinks.hdfs-sink.path = hdfs://***
tier1.sinks.hdfs-sink.fileType = DataStream
tier1.sinks.hdfs-sink.rollSize = 0

ソースはspooldir、チャネルはmemory、シンクはhdfsです。

また、1MB のファイルを送信しようとしましたが、flume はそれを 1KB のサイズの 1000 個のファイルに分割しました。私が気付いたもう 1 つのことは、転送が非常に遅く、1 MB に約 1 分かかったということです。私は何か間違ったことをしていますか?

4

1 に答える 1

3

ロールタイムアウトも無効にする必要があります。これは、次の設定で行われます。

tier1.sinks.hdfs-sink.hdfs.rollCount = 0
tier1.sinks.hdfs-sink.hdfs.rollInterval = 300

rollcount はロール オーバーを防ぎます。ここで rollIntervall は 300 秒に設定され、0 に設定するとタイムアウトが無効になります。ロールオーバーに必要なメカニズムを選択する必要があります。選択しないと、Flume はシャットダウン時にのみファイルを閉じます。

デフォルト値は次のとおりです。

hdfs.rollInterval   30  Number of seconds to wait before rolling current file (0 = never roll based on time interval)
hdfs.rollSize   1024    File size to trigger roll, in bytes (0: never roll based on file size)
hdfs.rollCount  10  Number of events written to file before it rolled (0 = never roll based on number of events)
于 2015-02-12T15:15:38.830 に答える