0

ファイル名の衝突に関して、flume-ng がこのような状況をどのように処理するかを理解したいと思います。同じように構成された Flume エージェントのインスタンスがいくつかあり、クライアントがそれらを負荷分散グループとして使用するとします。

a1.sinks.k1.hdfs.path = /flume/events/path

Flume エージェントはどのようにファイル名を生成して、エージェント間で一意にするか? 何らかの方法でエージェント名を追加しますか (名前は数字のように見えるため、これを把握するのは困難です)?

4

1 に答える 1

2

Flume は、この問題を自動的に解決しません。デフォルトでは、HDFS シンクは現在のタイムスタンプ (ミリ秒単位) と同じ名前の新しいファイルを作成するため、2 つのファイルが同時に作成されると衝突が発生する可能性があります。

これを修正する 1 つの方法は、異なるシンクに異なるファイル プレフィックスを手動で設定することです。

a1.sinks.k1.hdfs.filePrefix = agentX

また、プレフィックス定義でイベント ヘッダーを使用することもできます。たとえば、エージェントのホスト名の値を持つ「ホスト」ヘッダーをイベントに追加するホスト インターセプターを使用する場合、次のようなことができます。

a1.sinks.k1.hdfs.filePrefix = ${host}

一意のファイル名を完全に自動的に生成する必要がある場合は、UUID ヘッダーをイベントに追加する独自のインターセプターを開発できます。ここで例を参照してください。

于 2013-04-17T10:12:50.053 に答える