1

フルームの感触を掴むために実験をしていた。以下は私の設定ファイルです。

agent.channels.memory-channel.type = memory

agent.sources.tail-source.type = exec
agent.sources.tail-source.command = tail -F /root/test.txt
agent.sources.tail-source.channels = memory-channel

agent.sinks.hdfs-sink.channel = memory-channel
agent.sinks.hdfs-sink.type = hdfs
agent.sinks.hdfs-sink.hdfs.path = hdfs://10.0.7.111/tflume
agent.sinks.hdfs-sink.hdfs.fileType = DataStream

agent.channels = memory-channel
agent.sources = tail-source
agent.sinks = hdfs-sink

vi コマンドを使用して test.txt ファイルに追加する行ごとに、flume ログを確認すると、HDFS /tflume ディレクトリに新しいファイルが作成されます。なんでそうなの ?

既存のファイルに追加するためにflumeを期待していましたが、同時にhdfsへのデータ書き込みもログを見ると長すぎます。

事前に返信していただきありがとうございます。

4

1 に答える 1

2

これは、HDFS をシンクとして使用する際の悪名高い「多数の小さな HDFS ファイル」の問題です。

この問題は、flume.conf で HDFS シンクに対して少なくともプロパティ rollSize、rollCount、rollInterval、および idleTimeout が設定されていることを確認することで簡単に解決されます。それらを設定しない場合、Flume はデフォルトで非常に低い値に設定されます。ほとんどの場合、rollSize のデフォルト (わずか 1024 kb !!) では、1 つの HDFS ファイルに記録されるログ レコードは 3 ~ 4 つだけです。デフォルトは、値を 0 に設定することで簡単にオーバーライドできますが、これを忘れると、デフォルトは不安定な動作を引き起こします。

#ALWAYS PROVIDE THESE OVERRIDES OF THE DEFAULTS !!

agent3.sinks.snk1.hdfs.rollSize = 0
agent3.sinks.snk1.hdfs.rollCount = 0
agent3.sinks.snk1.hdfs.rollInterval = 0
agent3.sinks.snk1.hdfs.idleTimeout = 0

#SET TO YOUR NEEDS

#rollCount writes to hdfs every 20 lines
agent3.sinks.snk1.hdfs.rollCount = 20
于 2015-01-14T09:16:50.333 に答える