Как парсить большие(>25GB) файлы(логи активности) и ранжировать полученную информацию, какие технологии лучше использовать?

Здравствуйте, коллеги.
Появилась необходимость парсить большие файлы логов(>25гб), определенным образом ранжировать и преставлять конечному пользователю UI для анализа этих ранжированных данных.
Такие задачи никогда не решал , не знаю что лучше использовать для этого(Hadoop,elasticsearch, mongo)
кручусь в эко-системе java.
Прошу совета от опытных коллег!
  • Вопрос задан
  • 1671 просмотр
Пригласить эксперта
Ответы на вопрос 5
Jump
@Jump
Системный администратор со стажем.
Как парсить
Как обычно - читаем и разбираем. Размер тут большого значения не играет.

Если вы собираетесь предоставлять конечному пользователю UI для анализа этих ранжированных данных, то надо в процессе парсинга переносить данные в БД.
Выбор конкретной БД зависит от многих факторов, в частности от того что за данные, как они связаны, и какие выборки нужны будут.
Ответ написан
Комментировать
sim3x
@sim3x
www.datacenterknowledge.com/archives/2012/03/08/th...
пока у тебя нет потока таких логов, не надо хранить и обрабатывать историю за 10+ лет - у тебя нифига не бигдата

не знаю что лучше использовать для этого
не знаешь что использовать под бд - используй postgres

Читай построчно и запихивай в БД в нормализированном состоянии
Изучи хаки для буста производительности БД - temp table, disable indexes, etc

Hadoop нужен если им будут пользоваться те кто в нем шарит. Твои пользователи будут переподнимать кластер после того как он навернется из-за того что софт сырой поставили?
Ответ написан
Комментировать
iximiuz
@iximiuz
Вот ответ на ваш вопрос. Основная идея:
файл лога -> парсер -> logstash -> elastic search -> kibana
Ответ написан
Комментировать
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Если SQL-like разберете - то hadoop+hive.
Ответ написан
Комментировать
angrySCV
@angrySCV
machine learning, programming, startuping
да всё верно, читаем -> обрабатываем.
но большинство алгоритмов классических, которые мы обычно используем для обработки данных (например сортировки) имеют класс "оффлайн" алгоритмов -> где для получения ответа нужно сразу все данные предоставить, чего иногда сделать просто не возможно.
посмотрите класс онлайн алгоритмов, и потоковой обработки данных.
например тут www.cs.dartmouth.edu/~ac/Teach/CS85-Fall09/Notes/l...
ну либо попытаться использовать потоковые фреймворки типа spark.
для обработки логов конечно проще и быстрее написать свои алгоритмы, чем spark колхозить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы