У меня есть поток событий (мы могли бы также назвать их "сообщениями" или даже просто "данными"), поступающий от брокера событий с ретенцией на основе времени. Посредником событий может быть Kafka или Amazon Kinesis или Microsoft Event Hubs< /a>, хотя допустим, что это Кафка.

Моя цель — взять этот поток событий и поместить его в холодное хранилище; то есть хранить данные для будущего анализа через Hadoop/Spark. Это означает, что я хотел бы взять этот «болтливый» поток событий и преобразовать его в «короткие» файлы в HDFS. В облачной среде я бы, скорее всего, использовал S3 или Azure Storage вместо HDFS.

Я также хотел бы, чтобы мое решение было экономически эффективным; например, используя форматы сериализации, такие как Avro/ORC, чтобы снизить стоимость дискового пространства. Я также как минимум один раз гарантирую, что данное событие хранится в холодном хранилище (бонусные баллы за раз и только один раз).

Мои основные вопросы:

  • Как люди решают эту проблему?
  • Существуют ли компоненты, которые уже справляются с этим сценарием?
  • Нужно ли мне самому разрабатывать решение?
  • По крайней мере, есть ли какие-то рекомендуемые шаблоны?
3
Christopher Bennage 31 Окт 2014 в 03:50

2 ответа

Что ж, мы используем kafka с camus для извлечения данных из kafka в HDFS. Camus поддерживает сериализацию avro. Подробнее о камю и авро можно узнать здесь.

3
Ashrith 31 Окт 2014 в 04:54

Другой вариант — использование Flume с источником Kafka (или каналом Kafka) и приемником HDFS. Приемник HDFS можно настроить на прокрутку в определенных размерах или в определенное время.

1
Gwen Shapira 1 Ноя 2014 в 05:15