2015-09-21 4 views
4

Каков наилучший способ занести файл журнала в HDFS во время его написания? Я пытаюсь настроить Apache Flume, и я пытаюсь настроить источники, которые могут предложить мне надежность данных. Я пытался настроить «Exec», а затем и посмотрел на «spooldir», но следующая документация на flume.apache.org поставил под сомнение мое собственное намерение -Внесение файла журнала в HDFS с использованием Flume во время его написания

Exec Источник:

One из наиболее часто запрашиваемых функций - это пример использования: «tail -F имя_файла», где приложение записывает в файл журнала на диске и Flume обрабатывает файл, отправляя каждую строку в качестве события. Хотя это возможно, есть очевидная проблема; что произойдет, если канал заполнится, и Flume не может отправить событие? Flume не может указывать на приложение, записывающее файл журнала, что ему необходимо сохранить журнал или что по какой-то причине событие не было отправлено. Приложение никогда не может гарантировать получение данных при использовании однонаправленного асинхронного интерфейса , такого как ExecSource!

намоточные Каталог Источник:

В отличие от Exec источника, "spooldir" источник надежен и не пропустить данные, даже если Flume перезапуске или убит. В обмен на надежность в каталог буферизации необходимо удалить только неизменяемые файлы. Если файл записывается после того, как он помещен в каталог буферизации , Flume выведет ошибку в свой файл журнала и остановит обработку .

Что-нибудь лучше, что я могу использовать для обеспечения того, чтобы Flume не пропустил ни одного события, а также читал в реальном времени?

ответ

1

Я бы рекомендовал использовать источник каталогов спулинга из-за его надежности. Обходной путь для требования по требованию состоит в том, чтобы составлять файлы во втором каталоге, и как только они достигают определенного размера (с точки зрения байтов или количества журналов), переместите их в каталог буферизации.

+0

Несомненно, но тогда это не **, пока оно написано ** (Его вид вне линии). – sgsi

+1

В этом случае Exec Source - единственный шанс для вас. Ну, не только. Вы можете создать собственный источник, удовлетворяющий вашим потребностям, «Exec Source 2», способный связываться с приложением, записывающим журналы (возможно, через другой файл, где не обрабатываются журналы) ... Просто мозговой штурм;) – frb