0

問題があります。Apache Flume を使用して txt ファイルからログを読み取り、hdfs にシンクしています。どういうわけか、読み取り中に一部のレコードがスキップされます。私は fileChannel を使用しています。以下の構成を確認してください。

agent2.sources = file_server
agent2.sources.file_server.type=exec
agent2.sources.file_server.command = tail -F /home/datafile/error.log
agent2.sources.file_server.channels = fileChannel


agent2.channels = fileChannel
agent2.channels.fileChannel.type=file
agent2.channels.fileChannel.capacity = 12000
agent2.channels.fileChannel.transactionCapacity = 10000
agent2.channels.fileChannel.checkpointDir=/home/data/flume/checkpoint
agent2.channels.fileChannel.dataDirs=/home/data/flume/data


# Agent2 sinks
agent2.sinks = hadooper loged
agent2.sinks.hadooper.type = hdfs
agent2.sinks.loged.type=logger
agent2.sinks.hadooper.hdfs.path = hdfs://localhost:8020/flume/data/file
agent2.sinks.hadooper.hdfs.fileType = DataStream
agent1.sinks.hadooper.hdfs.writeFormat = Text
agent2.sinks.hadooper.hdfs.writeFormat = Text
agent2.sinks.hadooper.hdfs.rollInterval = 600
agent2.sinks.hadooper.hdfs.rollCount = 0
agent2.sinks.hadooper.hdfs.rollSize = 67108864
agent2.sinks.hadooper.hdfs.batchSize = 10
agent2.sinks.hadooper.hdfs.idleTimeout=0
agent2.sinks.hadooper.channel = fileChannel
agent2.sinks.loged.channel = fileChannel
agent2.sinks.hdfs.threadsPoolSize = 20

助けてください。

4

1 に答える 1

0

問題は、単一のチャネルから両方を読み取る2つのシンクを使用していることだと思います。その場合、2 つのシンクの 1 つによって読み取られた Flume イベントは、もう 1 つのシンクによって読み取られず、その逆も同様です。

両方のシンクが同じ Flume イベントのコピーを受け取るようにするには、シンクごとに専用のチャネルを作成する必要があります。これらのチャネルを作成すると、デフォルトのチャネル セレクタである がReplicatingChannelSelector各チャネルにコピーを作成します。

于 2015-04-14T10:50:57.750 に答える