さまざまなソースからデータを収集し、出力を特定のディレクトリの下のファイルに書き込む Java アプリケーションがあります。
また、spooldir ソースを使用してそのディレクトリから読み取り、.xml を使用して出力を Solr に書き込むように Flume エージェントを構成していますMorphlineSolrSink
。
Flume エージェントは次の例外をスローします
java.lang.IllegalStateException: File has changed size since being read
Flume エージェントの構成は次のとおりです。
agent02.sources = s1
agent02.sinks = solrSink
agent02.channels = ch1
agent02.channels.ch1.type = file
agent02.channels.ch1.checkpointDir=/home/flume/prod_solr_chkpoint/file-channel/checkpoint
agent02.channels.ch1.dataDirs= /home/flume/prod_solr_chkpoint/file-channel/data
agent02.sources.s1.type = spooldir
agent02.sources.s1.channels = ch1
agent02.sources.s1.spoolDir = /DataCollection/json_output/solr/
agent02.sources.s1.deserializer.maxLineLength = 100000
agent02.sinks.solrSink.type = org.apache.flume.sink.solr.morphline.MorphlineSolrSink
agent02.sinks.solrSink.channel = ch1
agent02.sinks.solrSink.batchSize = 10000
agent02.sinks.solrSink.batchDurationMillis = 10000
agent02.sinks.solrSink.morphlineFile = morphlines.conf
agent02.sinks.solrSink.morphlineId = morphline
私が例外から理解しているのは、java アプリケーションがファイルの書き込みを完了していない間に、flume エージェントがファイルの処理を開始したということです。
この問題を解決するにはどうすればよいですか?
編集
この情報に価値があるかどうかはわかりません。これらの構成は、以前は問題なく機能していました。Flume を実行しているマシンで、ハード デスクの障害に直面しました。その障害から回復した後、flume はこの例外をスローします。