Каков наилучший способ занести файл журнала в HDFS во время его написания? Я пытаюсь настроить Apache Flume, и я пытаюсь настроить источники, которые могут предложить мне надежность данных. Я пытался настроить «Exec», а затем и посмотрел на «spooldir», но следующая документация на flume.apache.org поставил под сомнение мое собственное намерение -Внесение файла журнала в HDFS с использованием Flume во время его написания
Exec Источник:
One из наиболее часто запрашиваемых функций - это пример использования: «tail -F имя_файла», где приложение записывает в файл журнала на диске и Flume обрабатывает файл, отправляя каждую строку в качестве события. Хотя это возможно, есть очевидная проблема; что произойдет, если канал заполнится, и Flume не может отправить событие? Flume не может указывать на приложение, записывающее файл журнала, что ему необходимо сохранить журнал или что по какой-то причине событие не было отправлено. Приложение никогда не может гарантировать получение данных при использовании однонаправленного асинхронного интерфейса , такого как ExecSource!
намоточные Каталог Источник:
В отличие от Exec источника, "spooldir" источник надежен и не пропустить данные, даже если Flume перезапуске или убит. В обмен на надежность в каталог буферизации необходимо удалить только неизменяемые файлы. Если файл записывается после того, как он помещен в каталог буферизации , Flume выведет ошибку в свой файл журнала и остановит обработку .
Что-нибудь лучше, что я могу использовать для обеспечения того, чтобы Flume не пропустил ни одного события, а также читал в реальном времени?
Несомненно, но тогда это не **, пока оно написано ** (Его вид вне линии). – sgsi
В этом случае Exec Source - единственный шанс для вас. Ну, не только. Вы можете создать собственный источник, удовлетворяющий вашим потребностям, «Exec Source 2», способный связываться с приложением, записывающим журналы (возможно, через другой файл, где не обрабатываются журналы) ... Просто мозговой штурм;) – frb