0
我想了解flume-ng如何處理這種情況下的文件名衝突。 Asume我有幾個同樣配置的flume代理的實例,客戶端使用它們作爲負載平衡組。幾個Flume-ng hdfs接收器寫入相同的路徑
a1.sinks.k1.hdfs.path = /水槽/事件/路徑
如何水槽代理商將生成的文件名來使其可以在代理獨特之處?它是否以某種方式將代理名稱添加到它中(名稱看起來像數字,因此很難弄清楚)?
我想了解flume-ng如何處理這種情況下的文件名衝突。 Asume我有幾個同樣配置的flume代理的實例,客戶端使用它們作爲負載平衡組。幾個Flume-ng hdfs接收器寫入相同的路徑
a1.sinks.k1.hdfs.path = /水槽/事件/路徑
如何水槽代理商將生成的文件名來使其可以在代理獨特之處?它是否以某種方式將代理名稱添加到它中(名稱看起來像數字,因此很難弄清楚)?
Flume不能自動解決這個問題。默認情況下,HDFS接收器會創建名稱等於當前時間戳(以毫秒爲單位)的新文件,因此如果在同一時刻創建兩個文件,則可能會發生衝突。
人去修補的方式在不同的匯手動設置不同的文件前綴:
a1.sinks.k1.hdfs.filePrefix = agentX
您也可以在前綴定義使用事件頭。例如,如果你使用host interceptor,這更增加了事件的「主機」與代理的主機名的頭值,你可以做這樣的事情:
a1.sinks.k1.hdfs.filePrefix = ${host}
如果您需要完全自動生成唯一的文件名,你可以開發你的自己的攔截器,它會將UUID頭添加到事件中。請參閱示例here。
實際上,我不會因爲文件大小足夠大而發生衝突(由sink的'rollSize'參數控制)。 – Dmitry