Технический стек для обработки небольших файлов сообщений - PullRequest
0 голосов
/ 26 марта 2019

Мы работаем над проектом по декодированию файлов сообщений в реальном времени, которые передаются нам в виде текстовых файлов.Файл представляет собой неструктурированный текст, но мы получили спецификацию для его декодирования.Существуют разные темы, и каждый субъект получает не менее 800 файлов сообщений в час с размером файла avg 1 КБ.Требование заключается в том, чтобы декодировать все файлы в режиме реального времени по мере их поступления и сохранять декодированные данные в структурированном виде в базе данных, которая должна быть передана во внешнее приложение.Как только файл получен, ETA, чтобы появиться во внешнем интерфейсе, составляет меньше минуты.

Это предлагаемый поток данных, о котором я думаю: -

Файлы сообщений (.txt) -> Декодировать -> Сохранить в БД -> Веб-приложение

Может ли кто-нибудь сообщить мне ваш ответ на приведенные ниже вопросы?

  1. Могу ли я использовать какой-либо потоковый инструмент / технологию для обработки файлов сообщений в режиме реального времени?
  2. Можно ли использовать Big Data Stack, как Cloudera, для обработки этих файлов в режиме реального времени?Поскольку размер каждого файла составляет 1 КБ, не повлияет ли это на хранение и производительность узла Name в HDFS?Я имею в виду проблему больших данных для небольших файлов
  3. Если я не могу использовать большие данные, есть ли альтернативная стратегия обработки, которую я могу придумать для достижения этой ETA?

1 Ответ

0 голосов
/ 28 марта 2019

У вашей задачи есть несколько неизвестных опций.

Какая ожидаемая общая загрузка? 10 тем x 800 сообщений x 1 КБ текста в час не требует каких-либо конкретных вещей, и вы можете простоиспользуйте что-то простое, например, приложение Spring Boot или приложение Go.Вы говорите о стеке BigData, и я предполагаю, что у вас будет много тем.

У стека больших данных, как у Cloudera, есть по крайней мере два хороших инструмента для обработки потокового вещания высокого уровня: Kafka и Spark Streaming.Kafka - это брокер сообщений, который может справиться с действительно высокой нагрузкой с поддержкой репликации, высокой доступности и т. Д. Spark Streaming - это среда, которая позволяет обрабатывать данные на лету.Особенно, если у вас сложная логика обработки.

Что касается небольших файлов , это действительно зависит от вашего случая.Почему и как вам нужно их хранить?

  1. Вы можете просто не хранить эти файлы в HDFS и помещать уже декодированные данные в HBase (или другую БД, как хотите).HBase будет иметь дело с файлами и регионами самостоятельно.

  2. Если вы хотите сохранить эти незакодированные файлы в качестве некоего основного набора необработанных данных, вы можете поместить файлы во временное хранилище, сжать несколько файлов в большое и записать большой в HDFS.,Существует множество вариантов сделать это с Kafka, Spark Streaming или другим подобным фреймворком.

Кроме того, существует множество различных потоковых фреймворков, таких как Apache Storm, Apache Flink, Apache Beamили Кафки ручьи.У каждого из них есть свои плюсы и минусы.

...