обработка журналов в реальном времени с использованием потоковой передачи Apache Spark

Я хочу создать систему, в которой я могу читать журналы в реальном времени и использовать apache spark для их обработки. Я не понимаю, следует ли мне использовать что-то вроде kafka или flume для передачи журналов для искрового потока или я должен передавать журналы с помощью сокетов. Я просмотрел образец программы в документации по потоковой передаче искры - Пример потока Spark < / а>. Но я буду благодарен, если кто-нибудь подскажет, как лучше передавать логи в Spark Stream. Для меня это что-то новое.


person Y0gesh Gupta    schedule 22.02.2015    source источник


Ответы (3)


Apache Flume может помочь читать журналы в реальном времени. Flume обеспечивает сбор и передачу журналов в приложение, где Spark Streaming используется для анализа необходимой информации.

1. Загрузите Apache Flume с официального сайта или следуйте инструкциям со страницы здесь

2. Настройте и запустите Flume, измените flume-conf.properties.template из каталога, в котором установлен Flume (FLUME_INSTALLATION_PATH \ conf), здесь вам нужно указать источник журналов, канал и приемники (вывод). Подробнее о настройке здесь

Вот пример запуска flume, который собирает информацию журнала из команды ping, запущенной на хосте Windows, и записывает ее в файл:

flume-conf.properties

agent.sources = seqGenSrc
agent.channels = memoryChannel
agent.sinks = loggerSink

agent.sources.seqGenSrc.type = exec
agent.sources.seqGenSrc.shell = powershell -Command

agent.sources.seqGenSrc.command = for() { ping google.com }

agent.sources.seqGenSrc.channels = memoryChannel

agent.sinks.loggerSink.type = file_roll

agent.sinks.loggerSink.channel = memoryChannel
agent.sinks.loggerSink.sink.directory = D:\\TMP\\flu\\
agent.sinks.loggerSink.serializer = text
agent.sinks.loggerSink.appendNewline = false
agent.sinks.loggerSink.rollInterval = 0

agent.channels.memoryChannel.type = memory
agent.channels.memoryChannel.capacity = 100

Чтобы запустить пример, перейдите к FLUME_INSTALLATION_PATH и выполните

java -Xmx20m -Dlog4j.configuration=file:///%CD%\conf\log4j.properties -cp .\lib\* org.apache.flume.node.Application -f conf\flume-conf.properties -n agent

ИЛИ вы можете создать свое Java-приложение с библиотеками flume в пути к классам и вызвать экземпляр org.apache.flume.node.Application из приложения, передавая соответствующие аргументы.

Как настроить Flume для сбора и транспортировки журналов?

Вы можете использовать какой-нибудь скрипт для сбора логов из указанного места

agent.sources.seqGenSrc.shell = powershell -Command
agent.sources.seqGenSrc.command = your script here

вместо сценария Windows вы также можете запустить приложение Java (введите аргументы java path_to_main_class в поле), которое обеспечивает сбор интеллектуальных журналов. Например, если файл изменяется в реальном времени, вы можете использовать Tailer из Apache Commons IO. Чтобы настроить Flume для передачи информации журнала, прочтите эту статью

3. Получите поток Flume из исходного кода и проанализируйте его с помощью Spark. Взгляните на образец кода из github https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/streaming/JavaFlumeEventCount.java

person Victor Bashurov    schedule 24.02.2015

Вы можете использовать Apache Kafka в качестве системы очередей для ваших журналов. Система, которая сгенерировала ваши журналы, например, websever, отправит журналы в Apache KAFKA. Затем вы можете использовать потоковую библиотеку apache storm или spark для чтения из темы KAFKA и обработки журналов в реальном времени.

Вам необходимо создать поток журналов, который вы можете создать с помощью Apache Kakfa. Доступна интеграция для kafka с Storm и Apache Spark. у обоих есть свои плюсы и минусы.

Интеграцию Storm Kafka см. здесь

Для интеграции Apache Spark Kafka посмотрите здесь

person Sandesh Deshmane    schedule 22.02.2015

Хотя это старый вопрос, разместить ссылку из Databricks, где есть отличная пошаговая статья для анализа журналов с помощью Spark с учетом многих областей.

https://databricks.gitbooks.io/databricks-spark-reference-applications/content/logs_analyzer/index.html

Надеюсь это поможет.

person Naveen Kumar    schedule 24.12.2015
comment
Пожалуйста, добавьте контент по ссылке - person Robert; 24.12.2015
comment
Привет, Роберт, я боюсь, что это GitBook, и в нем есть очень хорошие главы, объясняющие базовый вариант использования потоковой передачи искр с журналами. Дайте мне знать, если вы ищете что-то конкретное, так как эта книга охватывает большую часть этого. - person Naveen Kumar; 24.12.2015